From 00fd63ba140f7eca9ea73a2732948dac72c9f4fc Mon Sep 17 00:00:00 2001 From: Sokomine Date: Wed, 17 Aug 2016 18:51:55 +0200 Subject: [PATCH 01/31] made the table slightly higher --- nodes_furniture.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nodes_furniture.lua b/nodes_furniture.lua index 0be9b6e..7098ab4 100644 --- a/nodes_furniture.lua +++ b/nodes_furniture.lua @@ -169,7 +169,7 @@ local cottages_table_def = { type = "fixed", fixed = { { -0.1, -0.5, -0.1, 0.1, 0.3, 0.1}, - { -0.5, 0.3, -0.5, 0.5, 0.4, 0.5}, + { -0.5, 0.48, -0.5, 0.5, 0.4, 0.5}, }, }, selection_box = { From 1f0bc0e4bd6e20f4094708246c08d095d83dac62 Mon Sep 17 00:00:00 2001 From: Sokomine Date: Wed, 17 Aug 2016 23:53:33 +0200 Subject: [PATCH 02/31] added nice meshes from VanessaE, junction, t-junction and curve to dirt road --- init.lua | 1 + models/feldweg-T-junction.obj | 203 ++++++++++++++ models/feldweg-crossing.obj | 314 +++++++++++++++++++++ models/feldweg-curve.obj | 207 ++++++++++++++ models/feldweg.obj | 87 ++++++ nodes_feldweg.lua | 329 +++++++++++++++++++++++ nodes_historic.lua | 19 -- textures/cottages_feldweg_ecke.png | Bin 0 -> 763 bytes textures/cottages_feldweg_edges.png | Bin 0 -> 303 bytes textures/cottages_feldweg_end.png | Bin 0 -> 680 bytes textures/cottages_feldweg_kreuzung.png | Bin 0 -> 787 bytes textures/cottages_feldweg_surface.png | Bin 0 -> 405 bytes textures/cottages_feldweg_t-kreuzung.png | Bin 0 -> 767 bytes 13 files changed, 1141 insertions(+), 19 deletions(-) create mode 100644 models/feldweg-T-junction.obj create mode 100644 models/feldweg-crossing.obj create mode 100644 models/feldweg-curve.obj create mode 100644 models/feldweg.obj create mode 100644 nodes_feldweg.lua create mode 100644 textures/cottages_feldweg_ecke.png create mode 100644 textures/cottages_feldweg_edges.png create mode 100644 textures/cottages_feldweg_end.png create mode 100644 textures/cottages_feldweg_kreuzung.png create mode 100644 textures/cottages_feldweg_surface.png create mode 100644 textures/cottages_feldweg_t-kreuzung.png diff --git a/init.lua b/init.lua index af0cb16..cbafc0a 100644 --- a/init.lua +++ b/init.lua @@ -56,6 +56,7 @@ cottages.handmill_min_per_turn = 0; -- uncomment parts you do not want dofile(minetest.get_modpath("cottages").."/nodes_furniture.lua"); dofile(minetest.get_modpath("cottages").."/nodes_historic.lua"); +dofile(minetest.get_modpath("cottages").."/nodes_feldweg.lua"); dofile(minetest.get_modpath("cottages").."/nodes_straw.lua"); dofile(minetest.get_modpath("cottages").."/nodes_anvil.lua"); dofile(minetest.get_modpath("cottages").."/nodes_doorlike.lua"); diff --git a/models/feldweg-T-junction.obj b/models/feldweg-T-junction.obj new file mode 100644 index 0000000..aae5c3d --- /dev/null +++ b/models/feldweg-T-junction.obj @@ -0,0 +1,203 @@ +# Blender v2.72 (sub 0) OBJ File: 'feldweg-T-junction.blend' +# www.blender.org +o Cube.001 +v 0.500000 0.500000 -0.500000 +v -0.500000 0.500000 -0.500000 +v -0.500000 0.500000 0.500000 +v 0.500000 0.500000 0.500000 +v 0.500000 -0.500000 -0.500000 +v -0.500000 -0.500000 -0.500000 +v -0.500000 -0.500000 0.500000 +v 0.500000 -0.500000 0.500000 +v 0.250000 0.413592 0.500000 +v 0.375000 0.500000 0.500000 +v 0.125000 0.375000 0.500000 +v 0.500000 0.413592 0.250000 +v 0.500000 0.500000 0.375000 +v 0.500000 0.375000 0.125000 +v -0.250000 0.413592 0.500000 +v -0.125000 0.375000 0.500000 +v -0.375000 0.500000 0.500000 +v 0.500000 0.413592 -0.250000 +v 0.500000 0.375000 -0.125000 +v 0.500000 0.500000 -0.375000 +v -0.250000 0.413592 -0.500000 +v -0.375000 0.500000 -0.500000 +v -0.125000 0.375000 -0.500000 +v 0.250000 0.413592 -0.500000 +v 0.125000 0.375000 -0.500000 +v 0.375000 0.500000 -0.500000 +v 0.147929 0.375000 0.384092 +v 0.205019 0.375000 0.284810 +v 0.284810 0.375000 0.205019 +v 0.384092 0.375000 0.147929 +v 0.264688 0.413592 0.428728 +v 0.304057 0.413592 0.361075 +v 0.361075 0.413592 0.304057 +v 0.428728 0.413592 0.264688 +v 0.473364 0.500000 0.381447 +v 0.437341 0.500000 0.403095 +v 0.403095 0.500000 0.437341 +v 0.381447 0.500000 0.473364 +v 0.473364 0.500000 -0.381447 +v 0.437341 0.500000 -0.403095 +v 0.403095 0.500000 -0.437341 +v 0.381447 0.500000 -0.473364 +v 0.428728 0.413592 -0.264688 +v 0.361075 0.413592 -0.304057 +v 0.304057 0.413592 -0.361075 +v 0.264688 0.413592 -0.428728 +v 0.147929 0.375000 -0.384092 +v 0.205019 0.375000 -0.284810 +v 0.284810 0.375000 -0.205019 +v 0.384092 0.375000 -0.147929 +v 0.000000 -0.005322 -0.500000 +v 0.500000 -0.005322 0.000000 +v -0.000000 -0.005322 0.500000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 0.500000 0.494678 +vt 1.000000 1.000000 +vt 0.875000 1.000000 +vt 0.750000 0.913592 +vt 0.625000 0.875000 +vt 0.375000 0.875000 +vt 0.250000 0.913592 +vt 0.125000 1.000000 +vt 0.000000 1.000000 +vt 0.973364 0.118553 +vt 0.937341 0.096905 +vt 0.903095 0.062659 +vt 0.881447 0.026636 +vt 0.875000 0.000000 +vt 1.000000 0.125000 +vt 0.026636 0.118553 +vt 0.000000 0.125000 +vt 0.125000 0.000000 +vt 0.118553 0.026636 +vt 0.096905 0.062659 +vt 0.062659 0.096905 +vt 0.000000 0.875000 +vt 1.000000 0.875000 +vt 0.352071 0.115908 +vt 0.235312 0.071272 +vt 0.250000 0.000000 +vt 0.375000 0.000000 +vt 0.294981 0.215190 +vt 0.195943 0.138925 +vt 0.215190 0.294981 +vt 0.138925 0.195943 +vt 0.071272 0.235312 +vt 0.115908 0.352071 +vt 0.000000 0.250000 +vt 0.000000 0.375000 +vt 0.928728 0.235312 +vt 1.000000 0.250000 +vt 1.000000 0.375000 +vt 0.884092 0.352071 +vt 0.861075 0.195943 +vt 0.784810 0.294981 +vt 0.804057 0.138925 +vt 0.705019 0.215190 +vt 0.647929 0.115908 +vt 0.764688 0.071272 +vt 0.625000 0.000000 +vt 0.750000 0.000000 +vt 0.000000 0.625000 +vt 1.000000 0.625000 +vt 1.000000 0.750000 +vt 0.000000 0.750000 +vt 0.312500 0.625000 +vt 0.312500 0.500000 +vt 0.375000 0.500000 +vt 0.375000 0.625000 +vt 0.250000 0.625000 +vt 0.250000 0.500000 +vt 0.187500 0.625000 +vt 0.187500 0.500000 +vt 0.125000 0.500000 +vt 0.125000 0.625000 +vt 0.062500 0.500000 +vt 0.062500 0.625000 +vt 0.750000 0.500000 +vt 0.812500 0.500000 +vt 0.812500 0.625000 +vt 0.750000 0.625000 +vt 0.687500 0.500000 +vt 0.687500 0.625000 +vt 0.625000 0.500000 +vt 0.625000 0.625000 +vt 0.562500 0.625000 +vt 0.562500 0.500000 +vt 0.500000 0.625000 +vt 0.500000 0.500000 +g Cube.001_Cube.001_road_ends +s off +f 7/1 8/2 53/3 +f 5/2 1/4 52/3 +f 5/1 6/2 51/3 +f 6/2 2/4 51/3 +f 2/4 22/5 51/3 +f 22/5 21/6 51/3 +f 21/6 23/7 51/3 +f 23/7 25/8 51/3 +f 25/8 24/9 51/3 +f 24/9 26/10 51/3 +f 26/10 1/11 51/3 +f 1/11 5/1 51/3 +f 1/4 20/5 52/3 +f 20/5 18/6 52/3 +f 18/6 19/7 52/3 +f 19/7 14/8 52/3 +f 14/8 12/9 52/3 +f 12/9 13/10 52/3 +f 13/10 4/11 52/3 +f 4/11 8/1 52/3 +f 8/1 5/2 52/3 +f 8/2 4/4 53/3 +f 4/4 10/5 53/3 +f 10/5 9/6 53/3 +f 9/6 11/7 53/3 +f 11/7 16/8 53/3 +f 16/8 15/9 53/3 +f 15/9 17/10 53/3 +f 17/10 3/11 53/3 +f 3/11 7/1 53/3 +g Cube.001_Cube.001_road_sides +f 7/2 3/4 2/11 6/1 +g Cube.001_Cube.001_bottom +f 7/1 6/2 5/4 8/11 +g Cube.001_Cube.001_top_grass +f 42/12 41/13 40/14 39/15 20/16 1/2 26/17 +f 38/18 10/19 4/1 13/20 35/21 36/22 37/23 +f 3/11 17/24 22/25 2/4 +g Cube.001_Cube.001_road +f 30/26 34/27 12/28 14/29 +f 29/30 33/31 34/27 30/26 +f 28/32 32/33 33/31 29/30 +f 31/34 32/33 28/32 27/35 +f 9/36 31/34 27/35 11/37 +f 46/38 24/39 25/40 47/41 +f 45/42 46/38 47/41 48/43 +f 44/44 45/42 48/43 49/45 +f 50/46 43/47 44/44 49/45 +f 19/48 18/49 43/47 50/46 +f 16/50 23/51 21/52 15/53 +f 23/51 16/50 11/37 25/40 +f 27/35 47/41 25/40 11/37 +f 28/32 48/43 47/41 27/35 +f 29/30 49/45 48/43 28/32 +f 30/26 50/46 49/45 29/30 +f 30/26 14/29 19/48 50/46 +g Cube.001_Cube.001_road-grass_blend +f 34/54 35/55 13/56 12/57 +f 33/58 36/59 35/55 34/54 +f 32/60 37/61 36/59 33/58 +f 38/62 37/61 32/60 31/63 +f 10/64 38/62 31/63 9/65 +f 42/66 26/67 24/68 46/69 +f 41/70 42/66 46/69 45/71 +f 40/72 41/70 45/71 44/73 +f 43/74 39/75 40/72 44/73 +f 18/76 20/77 39/75 43/74 +f 15/53 21/52 22/25 17/24 diff --git a/models/feldweg-crossing.obj b/models/feldweg-crossing.obj new file mode 100644 index 0000000..9caa296 --- /dev/null +++ b/models/feldweg-crossing.obj @@ -0,0 +1,314 @@ +# Blender v2.72 (sub 0) OBJ File: 'feldweg-crossing.blend' +# www.blender.org +o Cube.003 +v 0.500000 0.500000 0.500000 +v 0.500000 0.500000 -0.500000 +v -0.500000 0.500000 -0.500000 +v -0.500000 0.500000 0.500000 +v 0.500000 -0.500000 0.500000 +v 0.500000 -0.500000 -0.500000 +v -0.500000 -0.500000 -0.500000 +v -0.500000 -0.500000 0.500000 +v -0.500000 0.413592 0.250000 +v -0.500000 0.500000 0.375000 +v -0.500000 0.375000 0.125000 +v -0.250000 0.413592 0.500000 +v -0.375000 0.500000 0.500000 +v -0.125000 0.375000 0.500000 +v -0.500000 0.413592 -0.250000 +v -0.500000 0.375000 -0.125000 +v -0.500000 0.500000 -0.375000 +v 0.250000 0.413592 0.500000 +v 0.125000 0.375000 0.500000 +v 0.375000 0.500000 0.500000 +v 0.500000 0.413592 -0.250000 +v 0.500000 0.500000 -0.375000 +v 0.500000 0.375000 -0.125000 +v 0.500000 0.413592 0.250000 +v 0.500000 0.375000 0.125000 +v 0.500000 0.500000 0.375000 +v 0.250000 0.413592 -0.500000 +v 0.375000 0.500000 -0.500000 +v 0.125000 0.375000 -0.500000 +v -0.250000 0.413592 -0.500000 +v -0.125000 0.375000 -0.500000 +v -0.375000 0.500000 -0.500000 +v -0.384092 0.375000 0.147929 +v -0.284809 0.375000 0.205019 +v -0.205019 0.375000 0.284810 +v -0.147929 0.375000 0.384092 +v -0.428728 0.413592 0.264688 +v -0.361075 0.413592 0.304057 +v -0.304057 0.413592 0.361075 +v -0.264688 0.413592 0.428728 +v -0.381447 0.500000 0.473364 +v -0.403095 0.500000 0.437341 +v -0.437341 0.500000 0.403095 +v -0.473364 0.500000 0.381447 +v -0.473364 0.500000 -0.381447 +v -0.437341 0.500000 -0.403095 +v -0.403095 0.500000 -0.437341 +v -0.381447 0.500000 -0.473364 +v -0.428728 0.413592 -0.264688 +v -0.361075 0.413592 -0.304057 +v -0.304057 0.413592 -0.361075 +v -0.264688 0.413592 -0.428728 +v -0.147929 0.375000 -0.384092 +v -0.205019 0.375000 -0.284810 +v -0.284810 0.375000 -0.205019 +v -0.384092 0.375000 -0.147929 +v 0.381447 0.500000 0.473364 +v 0.403095 0.500000 0.437341 +v 0.437341 0.500000 0.403095 +v 0.473364 0.500000 0.381447 +v 0.264688 0.413592 0.428728 +v 0.304057 0.413592 0.361075 +v 0.361075 0.413592 0.304057 +v 0.428728 0.413592 0.264688 +v 0.384091 0.375000 0.147929 +v 0.284810 0.375000 0.205019 +v 0.205019 0.375000 0.284810 +v 0.147929 0.375000 0.384092 +v 0.384091 0.375000 -0.147929 +v 0.284809 0.375000 -0.205019 +v 0.205018 0.375000 -0.284810 +v 0.147929 0.375000 -0.384092 +v 0.428728 0.413592 -0.264688 +v 0.361075 0.413592 -0.304057 +v 0.304057 0.413592 -0.361075 +v 0.264688 0.413592 -0.428728 +v 0.381447 0.500000 -0.473364 +v 0.403095 0.500000 -0.437341 +v 0.437341 0.500000 -0.403095 +v 0.473364 0.500000 -0.381447 +v 0.000000 -0.005322 0.500000 +v 0.500000 -0.005322 0.000000 +v 0.000000 -0.005322 -0.500000 +v -0.500000 -0.005322 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.500000 0.494678 +vt 0.000000 0.000000 +vt 0.875000 1.000000 +vt 0.750000 0.913592 +vt 0.625000 0.875000 +vt 0.375000 0.875000 +vt 0.250000 0.913592 +vt 0.125000 1.000000 +vt 0.000000 1.000000 +vt 0.026636 0.118553 +vt 0.000000 0.125000 +vt 0.125000 0.000000 +vt 0.118553 0.026636 +vt 0.096905 0.062659 +vt 0.062659 0.096905 +vt 0.973364 0.118553 +vt 0.937341 0.096905 +vt 0.903095 0.062659 +vt 0.881447 0.026636 +vt 0.875000 0.000000 +vt 1.000000 0.125000 +vt 0.973364 0.881447 +vt 1.000000 0.875000 +vt 0.881447 0.973364 +vt 0.903095 0.937341 +vt 0.937341 0.903095 +vt 0.118553 0.973364 +vt 0.000000 0.875000 +vt 0.026636 0.881447 +vt 0.062659 0.903095 +vt 0.096905 0.937341 +vt 0.352071 0.115908 +vt 0.235312 0.071272 +vt 0.250000 0.000000 +vt 0.375000 0.000000 +vt 0.294981 0.215190 +vt 0.195943 0.138925 +vt 0.215191 0.294981 +vt 0.138925 0.195943 +vt 0.071272 0.235312 +vt 0.115908 0.352071 +vt 0.000000 0.250000 +vt 0.000000 0.375000 +vt 0.235312 0.928728 +vt 0.352071 0.884092 +vt 0.375000 1.000000 +vt 0.250000 1.000000 +vt 0.195943 0.861075 +vt 0.294981 0.784810 +vt 0.138925 0.804057 +vt 0.215190 0.705019 +vt 0.115908 0.647929 +vt 0.071272 0.764688 +vt 0.000000 0.625000 +vt 0.000000 0.750000 +vt 0.928728 0.235312 +vt 1.000000 0.250000 +vt 1.000000 0.375000 +vt 0.884092 0.352071 +vt 0.861075 0.195943 +vt 0.784810 0.294981 +vt 0.804057 0.138925 +vt 0.705019 0.215190 +vt 0.647929 0.115908 +vt 0.764688 0.071272 +vt 0.625000 0.000000 +vt 0.750000 0.000000 +vt 0.647929 0.884092 +vt 0.764688 0.928728 +vt 0.750000 1.000000 +vt 0.625000 1.000000 +vt 0.705018 0.784810 +vt 0.804057 0.861075 +vt 0.784809 0.705019 +vt 0.861075 0.804057 +vt 0.928728 0.764688 +vt 0.884091 0.647929 +vt 1.000000 0.750000 +vt 1.000000 0.625000 +vt 0.750000 0.625000 +vt 0.750000 0.500000 +vt 0.812500 0.500000 +vt 0.812500 0.625000 +vt 0.687500 0.625000 +vt 0.687500 0.500000 +vt 0.625000 0.625000 +vt 0.625000 0.500000 +vt 0.562500 0.500000 +vt 0.562500 0.625000 +vt 0.500000 0.500000 +vt 0.500000 0.625000 +vt 0.125000 0.500000 +vt 0.125000 0.625000 +vt 0.062500 0.625000 +vt 0.062500 0.500000 +vt 0.187500 0.500000 +vt 0.187500 0.625000 +vt 0.250000 0.500000 +vt 0.250000 0.625000 +vt 0.312500 0.625000 +vt 0.312500 0.500000 +vt 0.375000 0.625000 +vt 0.375000 0.500000 +vt 0.125000 0.875000 +vt 0.062500 0.875000 +vt 0.062500 0.750000 +vt 0.125000 0.750000 +vt 0.187500 0.875000 +vt 0.187500 0.750000 +vt 0.250000 0.875000 +vt 0.250000 0.750000 +vt 0.312500 0.750000 +vt 0.312500 0.875000 +vt 0.375000 0.750000 +vt 0.562500 0.750000 +vt 0.562500 0.875000 +vt 0.500000 0.875000 +vt 0.500000 0.750000 +vt 0.625000 0.750000 +vt 0.687500 0.750000 +vt 0.687500 0.875000 +vt 0.750000 0.875000 +vt 0.750000 0.750000 +vt 0.812500 0.875000 +vt 0.812500 0.750000 +g Cube.003_Cube.003_road_ends +s off +f 7/1 3/2 83/3 +f 5/4 6/1 82/3 +f 7/4 8/1 84/3 +f 5/1 1/2 81/3 +f 1/2 20/5 81/3 +f 20/5 18/6 81/3 +f 18/6 19/7 81/3 +f 19/7 14/8 81/3 +f 14/8 12/9 81/3 +f 12/9 13/10 81/3 +f 13/10 4/11 81/3 +f 4/11 8/4 81/3 +f 8/4 5/1 81/3 +f 6/1 2/2 82/3 +f 2/2 22/5 82/3 +f 22/5 21/6 82/3 +f 21/6 23/7 82/3 +f 23/7 25/8 82/3 +f 25/8 24/9 82/3 +f 24/9 26/10 82/3 +f 26/10 1/11 82/3 +f 1/11 5/4 82/3 +f 3/2 32/5 83/3 +f 32/5 30/6 83/3 +f 30/6 31/7 83/3 +f 31/7 29/8 83/3 +f 29/8 27/9 83/3 +f 27/9 28/10 83/3 +f 28/10 2/11 83/3 +f 2/11 6/4 83/3 +f 6/4 7/1 83/3 +f 8/1 4/2 84/3 +f 4/2 10/5 84/3 +f 10/5 9/6 84/3 +f 9/6 11/7 84/3 +f 11/7 16/8 84/3 +f 16/8 15/9 84/3 +f 15/9 17/10 84/3 +f 17/10 3/11 84/3 +f 3/11 7/4 84/3 +g Cube.003_Cube.003_bottom +f 7/4 6/1 5/2 8/11 +g Cube.003_Cube.003_top_grass +f 44/12 10/13 4/4 13/14 41/15 42/16 43/17 +f 60/18 59/19 58/20 57/21 20/22 1/1 26/23 +f 80/24 22/25 2/2 28/5 77/26 78/27 79/28 +f 48/29 32/10 3/11 17/30 45/31 46/32 47/33 +g Cube.003_Cube.003_road +f 36/34 40/35 12/36 14/37 +f 35/38 39/39 40/35 36/34 +f 34/40 38/41 39/39 35/38 +f 37/42 38/41 34/40 33/43 +f 9/44 37/42 33/43 11/45 +f 52/46 53/47 31/48 30/49 +f 51/50 54/51 53/47 52/46 +f 50/52 55/53 54/51 51/50 +f 56/54 55/53 50/52 49/55 +f 16/56 56/54 49/55 15/57 +f 64/58 24/59 25/60 65/61 +f 63/62 64/58 65/61 66/63 +f 62/64 63/62 66/63 67/65 +f 68/66 61/67 62/64 67/65 +f 19/68 18/69 61/67 68/66 +f 72/70 76/71 27/72 29/73 +f 71/74 75/75 76/71 72/70 +f 70/76 74/77 75/75 71/74 +f 73/78 74/77 70/76 69/79 +f 21/80 73/78 69/79 23/81 +f 36/34 14/37 19/68 68/66 +f 36/34 68/66 67/65 35/38 +f 65/61 25/60 23/81 69/79 +f 66/63 65/61 69/79 70/76 +f 53/47 72/70 29/73 31/48 +f 53/47 54/51 71/74 72/70 +f 33/43 56/54 16/56 11/45 +f 33/43 34/40 55/53 56/54 +f 34/40 35/38 67/65 66/63 70/76 71/74 54/51 55/53 +g Cube.003_Cube.003_road-grass_blend +f 40/82 41/83 13/84 12/85 +f 39/86 42/87 41/83 40/82 +f 38/88 43/89 42/87 39/86 +f 44/90 43/89 38/88 37/91 +f 10/92 44/90 37/91 9/93 +f 48/94 52/95 30/96 32/97 +f 47/98 51/99 52/95 48/94 +f 46/100 50/101 51/99 47/98 +f 49/102 50/101 46/100 45/103 +f 15/104 49/102 45/103 17/105 +f 60/106 26/107 24/108 64/109 +f 59/110 60/106 64/109 63/111 +f 58/112 59/110 63/111 62/113 +f 61/114 57/115 58/112 62/113 +f 18/116 20/8 57/115 61/114 +f 76/117 77/118 28/119 27/120 +f 75/121 78/7 77/118 76/117 +f 74/122 79/123 78/7 75/121 +f 80/124 79/123 74/122 73/125 +f 22/126 80/124 73/125 21/127 diff --git a/models/feldweg-curve.obj b/models/feldweg-curve.obj new file mode 100644 index 0000000..4b776e7 --- /dev/null +++ b/models/feldweg-curve.obj @@ -0,0 +1,207 @@ +# Blender v2.72 (sub 0) OBJ File: 'feldweg-curve.blend' +# www.blender.org +o Cube.002 +v 0.500000 0.500000 -0.500000 +v -0.500000 0.500000 -0.500000 +v -0.500000 0.500000 0.500000 +v 0.500000 0.500000 0.500000 +v 0.500000 -0.500000 -0.500000 +v -0.500000 -0.500000 -0.500000 +v -0.500000 -0.500000 0.500000 +v 0.500000 -0.500000 0.500000 +v 0.250000 0.413592 0.500000 +v 0.375000 0.500000 0.500000 +v 0.125000 0.375000 0.500000 +v 0.500000 0.413592 0.250000 +v 0.500000 0.500000 0.375000 +v 0.500000 0.375000 0.125000 +v -0.250000 0.413592 0.500000 +v -0.125000 0.375000 0.500000 +v -0.375000 0.500000 0.500000 +v 0.500000 0.413592 -0.250000 +v 0.500000 0.375000 -0.125000 +v 0.500000 0.500000 -0.375000 +v 0.147929 0.375000 0.384092 +v 0.205019 0.375000 0.284809 +v 0.284810 0.375000 0.205019 +v 0.384092 0.375000 0.147929 +v 0.264688 0.413592 0.428728 +v 0.304057 0.413592 0.361075 +v 0.361075 0.413592 0.304057 +v 0.428728 0.413592 0.264688 +v 0.473364 0.500000 0.381447 +v 0.437341 0.500000 0.403095 +v 0.403095 0.500000 0.437341 +v 0.381447 0.500000 0.473364 +v -0.347302 0.500000 0.313164 +v -0.272666 0.500000 0.136438 +v -0.162122 0.500000 -0.023675 +v -0.023675 0.500000 -0.162122 +v 0.136438 0.500000 -0.272666 +v 0.313164 0.500000 -0.347302 +v -0.227010 0.413592 0.347148 +v -0.163160 0.413592 0.196715 +v -0.066130 0.413592 0.056392 +v 0.056392 0.413592 -0.066130 +v 0.196715 0.413592 -0.163160 +v 0.347148 0.413592 -0.227010 +v 0.381132 0.375000 -0.106719 +v 0.256993 0.375000 -0.053654 +v 0.136458 0.375000 0.029861 +v 0.029861 0.375000 0.136458 +v -0.053654 0.375000 0.256993 +v -0.106719 0.375000 0.381132 +v -0.000000 -0.005322 0.500000 +v 0.500000 -0.005322 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.026636 0.118553 +vt 0.000000 0.125000 +vt 0.125000 0.000000 +vt 0.118553 0.026636 +vt 0.096905 0.062659 +vt 0.062659 0.096905 +vt 0.875000 0.000000 +vt 0.847302 0.186836 +vt 0.000000 0.875000 +vt 0.186836 0.847302 +vt 0.363562 0.772666 +vt 0.772666 0.363562 +vt 0.523674 0.662122 +vt 0.662122 0.523675 +vt 0.500000 0.494678 +vt 0.875000 1.000000 +vt 0.750000 0.913592 +vt 0.625000 0.875000 +vt 0.375000 0.875000 +vt 0.250000 0.913592 +vt 0.125000 1.000000 +vt 0.352071 0.115908 +vt 0.235312 0.071272 +vt 0.250000 0.000000 +vt 0.375000 0.000000 +vt 0.294981 0.215190 +vt 0.195943 0.138925 +vt 0.215191 0.294981 +vt 0.138925 0.195943 +vt 0.071272 0.235312 +vt 0.115908 0.352071 +vt 0.000000 0.250000 +vt 0.000000 0.375000 +vt 0.727010 0.152852 +vt 0.606719 0.118868 +vt 0.625000 0.000000 +vt 0.750000 0.000000 +vt 0.663160 0.303285 +vt 0.553654 0.243007 +vt 0.566130 0.443608 +vt 0.470139 0.363542 +vt 0.443608 0.566130 +vt 0.363542 0.470138 +vt 0.303285 0.663160 +vt 0.243007 0.553654 +vt 0.118868 0.606719 +vt 0.152852 0.727010 +vt 0.000000 0.625000 +vt 0.000000 0.750000 +vt 0.625000 0.625000 +vt 0.625000 0.500000 +vt 0.687500 0.500000 +vt 0.687500 0.625000 +vt 0.562500 0.625000 +vt 0.562500 0.500000 +vt 0.500000 0.625000 +vt 0.500000 0.500000 +vt 0.437500 0.500000 +vt 0.437500 0.625000 +vt 0.375000 0.500000 +vt 0.375000 0.625000 +vt 0.812500 0.875000 +vt 0.812500 0.750000 +vt 0.937500 0.750000 +vt 0.937500 0.875000 +vt 0.687500 0.875000 +vt 0.687500 0.750000 +vt 0.562500 0.875000 +vt 0.562500 0.750000 +vt 0.437500 0.875000 +vt 0.437500 0.750000 +vt 0.312500 0.875000 +vt 0.312500 0.750000 +vt 0.187500 0.750000 +vt 0.187500 0.875000 +vt 0.062500 0.750000 +vt 0.062500 0.875000 +g Cube.002_Cube.002_road_ends +s off +f 6/1 2/2 1/3 5/4 +f 7/1 3/2 2/3 6/4 +g Cube.002_Cube.002_road_ends_default_grass.png +f 32/5 10/6 4/4 13/7 29/8 30/9 31/10 +f 20/11 1/1 38/12 +f 17/13 33/14 3/3 +f 3/3 33/14 2/2 +f 1/1 2/2 38/12 +f 33/14 34/15 2/2 +f 38/12 2/2 37/16 +f 35/17 2/2 34/15 +f 36/18 2/2 35/17 +f 37/16 2/2 36/18 +g Cube.002_Cube.002_road_ends_cottages_feldweg_end.png +f 5/1 1/2 52/19 +f 7/4 8/1 51/19 +f 8/1 4/2 51/19 +f 4/2 10/20 51/19 +f 10/20 9/21 51/19 +f 9/21 11/22 51/19 +f 11/22 16/23 51/19 +f 16/23 15/24 51/19 +f 15/24 17/25 51/19 +f 17/25 3/3 51/19 +f 3/3 7/4 51/19 +f 1/2 20/20 52/19 +f 20/20 18/21 52/19 +f 18/21 19/22 52/19 +f 19/22 14/23 52/19 +f 14/23 12/24 52/19 +f 12/24 13/25 52/19 +f 13/25 4/3 52/19 +f 4/3 8/4 52/19 +f 8/4 5/1 52/19 +g Cube.002_Cube.002_road_ends_cottages_feldweg.png +f 24/26 28/27 12/28 14/29 +f 23/30 27/31 28/27 24/26 +f 22/32 26/33 27/31 23/30 +f 25/34 26/33 22/32 21/35 +f 9/36 25/34 21/35 11/37 +f 44/38 45/39 19/40 18/41 +f 43/42 46/43 45/39 44/38 +f 42/44 47/45 46/43 43/42 +f 41/46 48/47 47/45 42/44 +f 40/48 49/49 48/47 41/46 +f 50/50 49/49 40/48 39/51 +f 16/52 50/50 39/51 15/53 +f 24/26 14/29 19/40 45/39 +f 21/35 50/50 16/52 11/37 +f 50/50 21/35 49/49 +f 45/39 46/43 24/26 +f 23/30 24/26 46/43 47/45 +f 22/32 23/30 47/45 48/47 +f 21/35 22/32 48/47 49/49 +g Cube.002_Cube.002_bottom +f 7/4 6/1 5/2 8/3 +g Cube.002_Cube.002_road-gass_blend +f 28/54 29/55 13/56 12/57 +f 27/58 30/59 29/55 28/54 +f 26/60 31/61 30/59 27/58 +f 32/62 31/61 26/60 25/63 +f 10/64 32/62 25/63 9/65 +f 38/66 44/67 18/68 20/69 +f 37/70 43/71 44/67 38/66 +f 36/72 42/73 43/71 37/70 +f 35/74 41/75 42/73 36/72 +f 34/76 40/77 41/75 35/74 +f 39/78 40/77 34/76 33/79 +f 15/80 39/78 33/79 17/81 diff --git a/models/feldweg.obj b/models/feldweg.obj new file mode 100644 index 0000000..417071e --- /dev/null +++ b/models/feldweg.obj @@ -0,0 +1,87 @@ +# Blender v2.72 (sub 0) OBJ File: 'feldweg.blend' +# www.blender.org +o Cube +v -0.500000 0.500000 0.500000 +v 0.500000 0.500000 0.500000 +v 0.500000 0.500000 -0.500000 +v -0.500000 0.500000 -0.500000 +v -0.500000 -0.500000 0.500000 +v 0.500000 -0.500000 0.500000 +v 0.500000 -0.500000 -0.500000 +v -0.500000 -0.500000 -0.500000 +v -0.250000 0.413592 0.500000 +v 0.250000 0.413592 -0.500000 +v 0.250000 0.413592 0.500000 +v -0.250000 0.413592 -0.500000 +v -0.375000 0.500000 0.500000 +v 0.375000 0.500000 -0.500000 +v 0.125000 0.375000 0.500000 +v -0.125000 0.375000 -0.500000 +v -0.125000 0.375000 0.500000 +v 0.125000 0.375000 -0.500000 +v 0.375000 0.500000 0.500000 +v -0.375000 0.500000 -0.500000 +v 0.000000 -0.005322 0.500000 +v -0.000000 -0.005322 -0.500000 +vt 1.000000 1.000000 +vt 0.875000 1.000000 +vt 0.500000 0.494678 +vt 0.750000 0.913592 +vt 0.625000 0.875000 +vt 0.375000 0.875000 +vt 0.250000 0.913592 +vt 0.125000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 0.875000 +vt 0.000000 0.875000 +vt 1.000000 0.125000 +vt 0.000000 0.125000 +vt 1.000000 0.625000 +vt 1.000000 0.750000 +vt 0.000000 0.750000 +vt 0.000000 0.625000 +vt 1.000000 0.250000 +vt 1.000000 0.375000 +vt 0.000000 0.375000 +vt 0.000000 0.250000 +vt 1.000000 0.500000 +vt 0.000000 0.500000 +g Cube_Cube_road_ends +s off +f 4/1 20/2 22/3 +f 2/1 19/2 21/3 +f 19/2 11/4 21/3 +f 11/4 15/5 21/3 +f 15/5 17/6 21/3 +f 17/6 9/7 21/3 +f 9/7 13/8 21/3 +f 13/8 1/9 21/3 +f 1/9 5/10 21/3 +f 5/10 6/11 21/3 +f 6/11 2/1 21/3 +f 20/2 12/4 22/3 +f 12/4 16/5 22/3 +f 16/5 18/6 22/3 +f 18/6 10/7 22/3 +f 10/7 14/8 22/3 +f 14/8 3/9 22/3 +f 3/9 7/10 22/3 +f 7/10 8/11 22/3 +f 8/11 4/1 22/3 +g Cube_Cube_road_sides +f 1/1 4/9 8/10 5/11 +f 3/1 2/9 6/10 7/11 +g Cube_Cube_bottom +f 8/9 7/10 6/11 5/1 +g Cube_Cube_top_grass +f 19/12 2/1 3/9 14/13 +f 1/11 13/14 20/15 4/10 +g Cube_Cube_road +f 15/16 11/17 10/18 18/19 +f 9/20 17/21 16/22 12/23 +f 15/16 18/19 16/22 17/21 +g Cube_Cube_road-grass_blend +f 13/24 9/16 12/19 20/25 +f 11/17 19/12 14/13 10/18 diff --git a/nodes_feldweg.lua b/nodes_feldweg.lua new file mode 100644 index 0000000..64c0c02 --- /dev/null +++ b/nodes_feldweg.lua @@ -0,0 +1,329 @@ +--------------------------------------------------------------------------------------- +-- decoration and building material +--------------------------------------------------------------------------------------- +-- * includes a wagon wheel that can be used as decoration on walls or to build (stationary) wagons +-- * dirt road - those are more natural in small old villages than cobble roads +-- * loam - no, old buildings are usually not built out of clay; loam was used +-- * straw - useful material for roofs +-- * glass pane - an improvement compared to fence posts as windows :-) +--------------------------------------------------------------------------------------- + +local S = cottages.S + +-- supported modes: +-- * simple: only a straight dirt road; no curves, junctions etc. +-- * flat: each node is a full node; junction, t-junction and corner are included +-- * nodebox: like flat - except that each node has a nodebox that fits to that road node +-- * mesh: like nodebox - except that it uses a nice roundish model +if( not( cottages_feldweg_mode )) then + cottages_feldweg_mode = "mesh"; +end + +--- a nice dirt road for small villages or paths to fields +if( cottages_feldweg_mode == "simple" or cottages_feldweg_mode == "flat" ) then + minetest.register_node("cottages:feldweg", { + description = S("dirt road"), + tiles = {"cottages_feldweg.png","default_dirt.png", "default_dirt.png^default_grass_side.png"}, + paramtype2 = "facedir", + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, + legacy_facedir_simple = true, + groups = {crumbly=3}, + sounds = default.node_sound_dirt_defaults, + is_ground_content = false, + }) +end + +-- add crossing, t-junction and corner + +-- +-- flat - just textures, full blocks +-- +if( cottages_feldweg_mode == "flat" ) then + + minetest.register_node("cottages:feldweg_crossing", { + description = S("dirt road crossing"), + tiles = {"cottages_feldweg_kreuzung.png","default_dirt.png", "default_dirt.png^default_grass_side.png"}, + paramtype2 = "facedir", + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, + legacy_facedir_simple = true, + groups = {crumbly=3}, + sounds = default.node_sound_dirt_defaults, + is_ground_content = false, + }) + + minetest.register_node("cottages:feldweg_t_junction", { + description = S("dirt road t junction"), + tiles = {"cottages_feldweg_t-kreuzung.png^[transform2","default_dirt.png", "default_dirt.png^default_grass_side.png"}, + paramtype2 = "facedir", + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, + legacy_facedir_simple = true, + groups = {crumbly=3}, + sounds = default.node_sound_dirt_defaults, + is_ground_content = false, + }) + + minetest.register_node("cottages:feldweg_curve", { + description = S("dirt road curve"), + tiles = {"cottages_feldweg_ecke.png^[transform2","default_dirt.png", "default_dirt.png^default_grass_side.png"}, + paramtype2 = "facedir", + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, + legacy_facedir_simple = true, + groups = {crumbly=3}, + sounds = default.node_sound_dirt_defaults, + is_ground_content = false, + }) + +-- +-- cube-style nodebox version +-- +elseif( cottages_feldweg_mode == "nodebox" ) then + minetest.register_node("cottages:feldweg", { + description = S("dirt road"), + tiles = {"cottages_feldweg_orig.png","default_dirt.png", "default_dirt.png^default_grass_side.png"}, + paramtype2 = "facedir", + roups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, + legacy_facedir_simple = true, + groups = {crumbly=3}, + sounds = default.node_sound_dirt_defaults, + is_ground_content = false, + drawtype = "nodebox", + -- top, bottom, side1, side2, inner, outer + paramtype = "light", + node_box = { + type = "fixed", + fixed = { + { -0.5, -0.5, -0.5, 0.5, 0.5-2/16, 0.5}, + -- Rasenkanten + { -0.5, 0.5-2/16, -0.5, -0.5+3/16, 0.5, 0.5}, + { 0.5-3/16, 0.5-2/16, -0.5, 0.5, 0.5, 0.5}, + -- uebergang zwischen Wagenspur und Rasenkante + { -0.5+3/16, 0.5-2/16, -0.5, -0.5+4/16, 0.5-1/16, 0.5}, + { 0.5-4/16, 0.5-2/16, -0.5, 0.5-3/16, 0.5-1/16, 0.5}, + }, + }, + selection_box = { + type = "fixed", + fixed = { + { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + }, + }, + }) + + minetest.register_node("cottages:feldweg_crossing", { + description = S("dirt road crossing"), + tiles = {"cottages_feldweg_kreuzung.png","default_dirt.png", "default_dirt.png^default_grass_side.png"}, + paramtype2 = "facedir", + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, + legacy_facedir_simple = true, + groups = {crumbly=3}, + sounds = default.node_sound_dirt_defaults, + is_ground_content = false, + + drawtype = "nodebox", + -- top, bottom, side1, side2, inner, outer + paramtype = "light", + node_box = { + type = "fixed", + fixed = { + { -0.5, -0.5, -0.5, 0.5, 0.5-2/16, 0.5}, + -- Rasenkanten + { -0.5, 0.5-2/16, -0.5, -0.5+3/16, 0.5, -0.5+3/16}, + { 0.5-3/16, 0.5-2/16, -0.5, 0.5, 0.5, -0.5+3/16}, + + { -0.5, 0.5-2/16, 0.5-3/16, -0.5+3/16, 0.5, 0.5}, + { 0.5-3/16, 0.5-2/16, 0.5-3/16, 0.5, 0.5, 0.5}, + -- uebergang zwischen Wagenspur und Rasenkante + { -0.5+3/16, 0.5-2/16, -0.5, -0.5+4/16, 0.5-1/16, -0.5+4/16}, + { 0.5-4/16, 0.5-2/16, -0.5, 0.5-3/16, 0.5-1/16, -0.5+4/16}, + + { -0.5+3/16, 0.5-2/16, 0.5-4/16, -0.5+4/16, 0.5-1/16, 0.5}, + { 0.5-4/16, 0.5-2/16, 0.5-4/16, 0.5-3/16, 0.5-1/16, 0.5}, + + + { -0.5, 0.5-2/16, -0.5+3/16, -0.5+3/16, 0.5-1/16, -0.5+4/16}, + { 0.5-3/16, 0.5-2/16, -0.5+3/16, 0.5, 0.5-1/16, -0.5+4/16}, + + { -0.5, 0.5-2/16, 0.5-4/16, -0.5+3/16, 0.5-1/16, 0.5-3/16}, + { 0.5-3/16, 0.5-2/16, 0.5-4/16, 0.5, 0.5-1/16, 0.5-3/16}, + }, + }, + selection_box = { + type = "fixed", + fixed = { + { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + }, + }, + }) + + minetest.register_node("cottages:feldweg_t_junction", { + description = S("dirt road t junction"), + tiles = {"cottages_feldweg_t-kreuzung.png^[transform2","default_dirt.png", "default_dirt.png^default_grass_side.png"}, + paramtype2 = "facedir", + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, + legacy_facedir_simple = true, + groups = {crumbly=3}, + sounds = default.node_sound_dirt_defaults, + is_ground_content = false, + + drawtype = "nodebox", + -- top, bottom, side1, side2, inner, outer + paramtype = "light", + node_box = { + type = "fixed", + fixed = { + { -0.5, -0.5, -0.5, 0.5, 0.5-2/16, 0.5}, + -- Rasenkanten + { -0.5, 0.5-2/16, -0.5, -0.5+3/16, 0.5, -0.5+3/16}, + + { -0.5, 0.5-2/16, 0.5-3/16, -0.5+3/16, 0.5, 0.5}, + -- Rasenkante seitlich durchgehend + { 0.5-3/16, 0.5-2/16, -0.5, 0.5, 0.5, 0.5}, + -- uebergang zwischen Wagenspur und Rasenkante + { -0.5+3/16, 0.5-2/16, -0.5, -0.5+4/16, 0.5-1/16, -0.5+4/16}, + + { -0.5+3/16, 0.5-2/16, 0.5-4/16, -0.5+4/16, 0.5-1/16, 0.5}, + + + { -0.5, 0.5-2/16, -0.5+3/16, -0.5+3/16, 0.5-1/16, -0.5+4/16}, + + { -0.5, 0.5-2/16, 0.5-4/16, -0.5+3/16, 0.5-1/16, 0.5-3/16}, + -- Ueberganng seitlich durchgehend + { 0.5-4/16, 0.5-2/16, -0.5, 0.5-3/16, 0.5-1/16, 0.5}, + }, + }, + selection_box = { + type = "fixed", + fixed = { + { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + }, + }, + }) + + minetest.register_node("cottages:feldweg_curve", { + description = S("dirt road curve"), + tiles = {"cottages_feldweg_ecke.png^[transform2","default_dirt.png", "default_dirt.png^default_grass_side.png"}, + paramtype2 = "facedir", + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, + legacy_facedir_simple = true, + groups = {crumbly=3}, + sounds = default.node_sound_dirt_defaults, + is_ground_content = false, + + drawtype = "nodebox", + -- top, bottom, side1, side2, inner, outer + paramtype = "light", + node_box = { + type = "fixed", + fixed = { + { -0.5, -0.5, -0.5, 0.5, 0.5-2/16, 0.5}, + -- Rasenkante vorne durchgehend + { -0.5, 0.5-2/16, -0.5, 0.5-3/16, 0.5, -0.5+3/16}, + + -- Rasenkanten + { -0.5, 0.5-2/16, 0.5-3/16, -0.5+3/16, 0.5, 0.5}, + -- Rasenkante seitlich durchgehend + { 0.5-3/16, 0.5-2/16, -0.5, 0.5, 0.5, 0.5}, + -- uebergang zwischen Wagenspur und Rasenkante + { -0.5+3/16, 0.5-2/16, 0.5-4/16, -0.5+4/16, 0.5-1/16, 0.5}, + + + -- Uebergang vorne durchgehend + { -0.5, 0.5-2/16, -0.5+3/16, 0.5-3/16, 0.5-1/16, -0.5+4/16}, + + { -0.5, 0.5-2/16, 0.5-4/16, -0.5+3/16, 0.5-1/16, 0.5-3/16}, + -- Ueberganng seitlich durchgehend + { 0.5-4/16, 0.5-2/16, -0.5, 0.5-3/16, 0.5-1/16, 0.5}, + }, + }, + selection_box = { + type = "fixed", + fixed = { + { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + }, + }, + }) + + +-- +-- the mesh version (rounded); provided and created by VanessaE +-- +elseif( cottages_feldweg_mode == "mesh" ) then + + -- a nice dirt road for small villages or paths to fields + minetest.register_node("cottages:feldweg", { + description = S("dirt road"), + paramtype2 = "facedir", + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, + legacy_facedir_simple = true, + groups = {crumbly=3}, + sounds = default.node_sound_dirt_defaults, + is_ground_content = false, + tiles = {"cottages_feldweg_end.png","default_dirt.png^default_grass_side.png", + "default_dirt.png", "default_grass.png", + "cottages_feldweg_surface.png", + "cottages_feldweg_surface.png^cottages_feldweg_edges.png"}, + paramtype = "light", + drawtype = "mesh", + mesh = "feldweg.obj", + }) + + + minetest.register_node("cottages:feldweg_crossing", { + description = S("dirt road crossing"), + paramtype2 = "facedir", + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, + legacy_facedir_simple = true, + groups = {crumbly=3}, + sounds = default.node_sound_dirt_defaults, + is_ground_content = false, + tiles = {"cottages_feldweg_end.png","default_dirt.png", + "default_grass.png","cottages_feldweg_surface.png", + "cottages_feldweg_surface.png^cottages_feldweg_edges.png"}, + paramtype = "light", + drawtype = "mesh", + mesh = "feldweg-crossing.obj", + }) + + minetest.register_node("cottages:feldweg_t_junction", { + description = S("dirt road t junction"), + paramtype2 = "facedir", + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, + legacy_facedir_simple = true, + groups = {crumbly=3}, + sounds = default.node_sound_dirt_defaults, + is_ground_content = false, + tiles = {"cottages_feldweg_end.png","default_dirt.png^default_grass_side.png", "default_dirt.png", + "default_grass.png","cottages_feldweg_surface.png", + "cottages_feldweg_surface.png^cottages_feldweg_edges.png"}, + paramtype = "light", + drawtype = "mesh", + mesh = "feldweg-T-junction.obj", + }) + + minetest.register_node("cottages:feldweg_curve", { + description = S("dirt road curve"), + paramtype2 = "facedir", + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, + legacy_facedir_simple = true, + groups = {crumbly=3}, + sounds = default.node_sound_dirt_defaults, + is_ground_content = false, + tiles = {"default_dirt.png^default_grass_side.png","default_grass.png", + "default_dirt.png^default_grass_side.png","cottages_feldweg_surface.png", + "default_dirt.png","cottages_feldweg_surface.png^cottages_feldweg_edges.png"}, + paramtype = "light", + drawtype = "mesh", + mesh = "feldweg-curve.obj", + }) +end + + +-- create stairs if possible +if( minetest.get_modpath("stairs") and stairs and stairs.register_stair_and_slab) then + stairs.register_stair_and_slab("feldweg", "cottages:feldweg", + {snappy=2,choppy=2,oddly_breakable_by_hand=2}, + {"cottages_feldweg.png","default_dirt.png", "default_grass.png","default_grass.png","cottages_feldweg.png","cottages_feldweg.png"}, + S("Dirt Road Stairs"), + S("Dirt Road, half height"), + default.node_sound_dirt_defaults()) +end diff --git a/nodes_historic.lua b/nodes_historic.lua index 0a81d23..1fa5ea4 100644 --- a/nodes_historic.lua +++ b/nodes_historic.lua @@ -32,19 +32,6 @@ minetest.register_node("cottages:wagon_wheel", { }) --- a nice dirt road for small villages or paths to fields -minetest.register_node("cottages:feldweg", { - description = S("dirt road"), - tiles = {"cottages_feldweg.png","default_dirt.png", "default_dirt.png^default_grass_side.png"}, - paramtype2 = "facedir", - groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, - legacy_facedir_simple = true, - groups = {crumbly=3}, - sounds = default.node_sound_dirt_defaults, - is_ground_content = false, -}) - - -- people didn't use clay for houses; they did build with loam minetest.register_node("cottages:loam", { description = S("loam"), @@ -57,12 +44,6 @@ minetest.register_node("cottages:loam", { -- create stairs if possible if( minetest.get_modpath("stairs") and stairs and stairs.register_stair_and_slab) then - stairs.register_stair_and_slab("feldweg", "cottages:feldweg", - {snappy=2,choppy=2,oddly_breakable_by_hand=2}, - {"cottages_feldweg.png","default_dirt.png", "default_grass.png","default_grass.png","cottages_feldweg.png","cottages_feldweg.png"}, - S("Dirt Road Stairs"), - S("Dirt Road, half height"), - default.node_sound_dirt_defaults()) stairs.register_stair_and_slab("loam", "cottages:loam", {snappy=2,choppy=2,oddly_breakable_by_hand=2}, diff --git a/textures/cottages_feldweg_ecke.png b/textures/cottages_feldweg_ecke.png new file mode 100644 index 0000000000000000000000000000000000000000..937b7df3e1a6914ffef510be6575567321a30a37 GIT binary patch literal 763 zcmVq{!2K8?RL%iJc1anPkZu|`Sf{2P}B);P6wXTg?=0G*Ky{n zw{P%E$5|$v6K?6oY7;PNTrPS+3^Gq<~$M3$U3!Yjk?~axGyE{Vc`1E{6 z05ipErL={n28-ZZH6A~nIUQf2&hx{!Z&|8gtualB{eH{ocp%2WoD!H|7+~}<;*Eya zj!r!yjl48ECsY&qKBB64??|bjB3#BB)0A;ex!s=d5Bn`R!Kq?^Q&8vVIw9u@fU3}S zp4uAA(%5WzS~Elx4eLP4jm@g(VK*Qu#NhGXjn5sqk=rM+lyj3gb8#Fl;35hr^cr{hFtz z2|tb#hvUFG-*BBnRS;3U_rw4pI8>Ed8>K9$I+mppLg4-Tukp1(t;Qy-DS4r`2DQ?4 z$~@OEax=UW5cutnKfyr^5gPcEGdX82w~0;zIahL;*={2#6}rwL0+@20W)8!^uYdi{ z-;a;X*MgqDIbaF`6e%oiVYgc|&xKMdX7(~QVXg5zU8$v!Q$eGkq4&4|;)S(e5rQWK t&oHbp;|1e(%k+I@%8A;HW=6VI{s*URUKNA242b{$002ovPDHLkV1lI7V5I;6 literal 0 HcmV?d00001 diff --git a/textures/cottages_feldweg_edges.png b/textures/cottages_feldweg_edges.png new file mode 100644 index 0000000000000000000000000000000000000000..16803415809565c006d0fafe1225a28d6bd948f2 GIT binary patch literal 303 zcmV+~0nq-5P)jtphST9BO0kQ69+)*R*8#ngkFphiH#euG9WR4)J8y>#V4by=IdZIgBHBZU@MI{F#In| z27)BfWGE>Ej7qIWm9d*uAX^fKj^pXn6*xEm@DG}*cJQVKOymFn002ovPDHLkV1gz7 Bf@J^z literal 0 HcmV?d00001 diff --git a/textures/cottages_feldweg_end.png b/textures/cottages_feldweg_end.png new file mode 100644 index 0000000000000000000000000000000000000000..81ac09e6eebce396cd1a9f5da8ad6313e89cdc85 GIT binary patch literal 680 zcmV;Z0$2TsP){uJ?_34#kZf(vm_!L{H@8D^N4Zu>FQ z)mfE~$j6Nc&k1^5^f5Q`gO58iGnH z+1}3W^_&&+uP^?{65YPFLQReW$*N~gQUyPyC(UQN}rSdg$iyE*70T36VfLs+APmNh6%QV{^1OO@3s z&Lz)*CkKF}&>2ZhB>i~c;JtT2#X@S5nu3Sie`cbDl%{MG0a&f)Im{iWb)>XdXRi}E zk1jaGh2+IkoXe?my!eOjWf@zQjm9H9^CP#p}SwmyRh4u__=)l>G@(^@ZjITb1(_yb3T6CZi*OnpD$uEWZBg z6FX07ocw$BYS+9ciJbS#y68v)0AP#(aD8XzH1r+prjhDE%MwuH`-}l7bVp=oUZ?SO+@V2d0(4~9d~_CN-6-$vb3k; z{rwGq?dDt(0Wd|CrJ0hduBv_*Oi^53z9g-6cY4%XFVk3-^{#0EwCzLF?9aFFoK7tO zW;VvK^8nPvcI%jR6qRM&b#2$RS#Ik3oSFNfw|2<0!dg3wy^3^c&i)5qu3I<`1dEdZ O0000B@xJx zjATU@y_6?L5l!F&IMJWltSBjM8K#LV`PpqX-sG~^!pk63f3A<{Rv-Od`8g#(R7!=mb@Y9vZ3D&#`u_dEG$o8ttPz}5RE71r#aPQUC7iR= zQlUU-9A{@IY#(&&b_2RP4a6m~yFV~Y5mhx9{$G_Vf|tjC0B~fGfc^QmUpYTN<$S&6n@^t; zVwEAFgk2nGOm4=+PNfL4YKQr7UbV9n+LZDN}2uR_Obg zS_*f=ft(6)PG}I+Hx}bTtkBsO?=9Y2*6WU1`H;#uMw%ut#F<!K^B-(0OQj6o RqI&=U002ovPDHLkV1gT_WwQVP literal 0 HcmV?d00001 diff --git a/textures/cottages_feldweg_surface.png b/textures/cottages_feldweg_surface.png new file mode 100644 index 0000000000000000000000000000000000000000..1e9510c4529fd2cbce1f9860f7be89192bc55cd3 GIT binary patch literal 405 zcmV;G0c!qMh)he}4a3(`;@r1asT>x~2Iz zN^`qivouAZK)@W{-rj$_ey5xh0utaUs@gAkeLSAMdroVNfdCPlh(y}$cKP@Boobbo zqJz6T0+vz(2Sm8vpUh-#<}RYgaf(RJiFpd59ROnBZoRc0I3QptrAlLF1nk!1#DJ)3 zq_x%B2ni9ZXb55AKm@Npzlo@un|mpe*4erPIHj}@VpZ+dy+e#)nwXgaQH*@n>SpUQ z5y7%f%tX(RQ?;da?q=8Ph6t_oZCgcJJ@xBLHg_{u?ciQYr5IzJ*t!$Yd5Ws-`$sAD zem`n$M3~l@2==|i$jnUl$Buwi6%d&zrAf8tOWL;OOJ1I(ni(gBzZErF-Pt@4m3uIY9X4)35mY%g=fJ`d?P7p51QX{{Fyzzvgh5xVwAC zPrv=a_kaD&V>;4rBK|bay#K*d{1U($b4mOaR^y|OZ&+#th5h;og@s-s zy1N>P!4b@%O#q?RhN{q7V;CYL;8e*ulX9Y*3tAoHG2zpg86Rh&89_aQuv$e*S!m7Z zI?pf!LhN5rU9& z1wd5@!BbmfSsLqgPiuyVqHz^Txv?I4ZgyKlg)Vx$_c$k*T_Eq3R5GnKN-3B%cDn(6 z^Ur@+TNtN_oC-HrPl(ZzQehltL@qWi#euHt5K*QnbANw8F+og8bLMb7GM+MKFpe{- z!Zgj)T4~K_#>I#T!_cwcuhH#xgL>h1x5cX?ctus%ZU>zA%yS_Gk2Qk^T_3o<-mt$~ zaX3u)ah$lm-SRe{alxS~h$!BBx(G2kRFzsAr7WmAmZcJ7 Date: Sat, 20 Aug 2016 03:27:55 +0200 Subject: [PATCH 03/31] added slope, long slope and edge to feldweg --- models/feldweg_end.obj | 206 ++++++++++++++++++++++++++++ models/feldweg_slope.obj | 84 ++++++++++++ models/feldweg_slope_long.obj | 108 +++++++++++++++ nodes_feldweg.lua | 77 +++++++++++ textures/cottages_feldweg_edges.png | Bin 303 -> 353 bytes 5 files changed, 475 insertions(+) create mode 100644 models/feldweg_end.obj create mode 100644 models/feldweg_slope.obj create mode 100644 models/feldweg_slope_long.obj diff --git a/models/feldweg_end.obj b/models/feldweg_end.obj new file mode 100644 index 0000000..46315f5 --- /dev/null +++ b/models/feldweg_end.obj @@ -0,0 +1,206 @@ +# Blender v2.72 (sub 0) OBJ File: 'feldweg_end.blend' +# www.blender.org +o Cube +v -0.500000 0.500000 0.500000 +v 0.500000 0.500000 0.500000 +v 0.500000 0.500000 -0.500000 +v -0.500000 0.500000 -0.500000 +v -0.500000 -0.500000 0.500000 +v 0.500000 -0.500000 0.500000 +v 0.500000 -0.500000 -0.500000 +v -0.500000 -0.500000 -0.500000 +v -0.250000 0.500000 0.500000 +v 0.250000 0.413592 -0.500000 +v 0.250000 0.500000 0.500000 +v -0.250000 0.413592 -0.500000 +v -0.375000 0.500000 0.500000 +v 0.375000 0.500000 -0.500000 +v 0.125000 0.500000 0.500000 +v -0.125000 0.375000 -0.500000 +v -0.125000 0.500000 0.500000 +v 0.125000 0.375000 -0.500000 +v 0.375000 0.500000 0.500000 +v -0.375000 0.500000 -0.500000 +v -0.000000 -0.005322 -0.500000 +v 0.250000 0.413592 -0.000000 +v -0.250000 0.413592 0.000000 +v 0.375000 0.500000 -0.000000 +v -0.125000 0.375000 0.000000 +v 0.125000 0.375000 -0.016321 +v -0.375000 0.500000 0.000000 +v 0.210101 0.443819 0.205395 +v -0.210101 0.443819 0.205395 +v 0.359784 0.500000 0.250000 +v -0.130863 0.426864 0.289840 +v 0.075837 0.429295 0.285669 +v -0.363898 0.500000 0.250000 +v 0.250000 0.499467 0.375000 +v -0.250000 0.499467 0.375000 +v 0.338593 0.500000 0.299881 +v -0.060925 0.480171 0.395010 +v 0.125000 0.480171 0.399350 +v -0.338593 0.500000 0.299881 +v 0.250000 0.413592 0.125000 +v -0.250000 0.413592 0.125000 +v 0.375000 0.500000 0.125000 +v -0.078088 0.375000 0.108679 +v 0.125000 0.375000 0.145321 +v -0.375000 0.500000 0.125000 +vt 1.000000 1.000000 +vt 0.875000 1.000000 +vt 0.500000 0.494678 +vt 0.750000 0.913592 +vt 0.625000 0.875000 +vt 0.375000 0.875000 +vt 0.250000 0.913592 +vt 0.125000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 0.750000 1.000000 +vt 0.625000 1.000000 +vt 0.375000 1.000000 +vt 0.250000 1.000000 +vt 0.500000 0.875000 +vt 0.625000 0.125000 +vt 0.750000 0.136102 +vt 1.000000 0.625000 +vt 1.000000 0.750000 +vt 0.875000 0.750000 +vt 1.000000 0.125000 +vt 1.000000 0.250000 +vt 0.875000 0.250000 +vt 1.000000 0.875000 +vt 0.799881 0.838593 +vt 1.000000 0.375000 +vt 0.895010 0.439075 +vt 0.899350 0.625000 +vt 0.799881 0.161407 +vt 0.000000 0.125000 +vt 0.500000 0.125000 +vt 0.750000 0.859784 +vt 0.000000 0.875000 +vt 0.541968 0.500000 +vt 0.541968 0.625000 +vt 0.125000 0.625000 +vt 0.125000 0.500000 +vt 0.541968 0.750000 +vt 0.541968 0.875000 +vt 0.125000 0.875000 +vt 0.125000 0.750000 +vt 0.646210 0.500000 +vt 0.646210 0.625000 +vt 0.646210 0.750000 +vt 0.646210 0.875000 +vt 0.635605 0.135605 +vt 0.760605 0.155911 +vt 0.720706 0.297351 +vt 0.172012 0.218555 +vt 0.260605 0.155911 +vt 0.300504 0.297350 +vt 0.751051 0.512257 +vt 0.876118 0.512257 +vt 0.876118 0.600535 +vt 0.449680 0.139224 +vt 0.379742 0.226929 +vt 0.586442 0.230407 +vt 0.146707 0.260153 +vt 0.260605 0.364395 +vt 0.870389 0.260153 +vt 0.885605 0.364395 +vt 0.135605 0.364395 +vt 0.760605 0.364395 +vt 0.459281 0.625000 +vt 0.474779 0.750000 +vt 0.000000 0.750000 +vt 0.000000 0.625000 +vt 0.474779 0.250000 +vt 0.474779 0.375000 +vt 0.000000 0.375000 +vt 0.000000 0.250000 +vt 0.612771 0.625000 +vt 0.593474 0.750000 +vt 0.593474 0.250000 +vt 0.577976 0.421912 +vt 0.746039 0.575837 +vt 0.669814 0.710101 +vt 0.669814 0.289899 +vt 0.750000 0.369137 +g Cube_Cube_ends +s off +f 4/1 20/2 21/3 +f 20/2 12/4 21/3 +f 12/4 16/5 21/3 +f 16/5 18/6 21/3 +f 18/6 10/7 21/3 +f 10/7 14/8 21/3 +f 14/8 3/9 21/3 +f 3/9 7/10 21/3 +f 7/10 8/11 21/3 +f 8/11 4/1 21/3 +g Cube_Cube_sides +f 1/1 4/9 8/10 5/11 +f 3/1 2/9 6/10 7/11 +f 1/9 5/10 6/11 2/1 19/2 11/12 15/13 17/14 9/15 13/8 +g Cube_Cube_bottom +f 8/9 7/10 6/11 5/1 +g Cube_Cube_top_grass +f 24/16 42/5 2/1 +f 45/17 1/11 33/18 +f 15/19 11/20 34/21 +f 13/22 9/23 35/24 +f 11/20 19/25 36/26 +f 9/23 17/27 37/28 +f 15/19 38/29 37/28 +f 38/29 15/19 34/21 +f 39/30 13/22 35/24 +f 34/21 11/20 36/26 +f 35/24 9/23 37/28 +f 17/27 15/19 37/28 +f 19/25 2/1 36/26 +f 20/31 4/10 27/32 +f 45/17 27/32 1/11 +f 3/9 24/16 2/1 +f 2/1 30/33 36/26 +f 2/1 42/5 30/33 +f 3/9 14/34 24/16 +f 33/18 1/11 39/30 +f 27/32 4/10 1/11 +f 1/11 13/22 39/30 +g Cube_Cube_top_grass_blend +f 27/35 23/36 12/37 20/38 +f 22/39 24/40 14/41 10/42 +f 45/43 41/44 23/36 +f 40/45 42/46 24/40 +f 38/47 34/48 28/49 +f 39/50 35/51 29/52 +f 34/53 36/54 30/55 +f 35/51 37/56 31/57 +f 38/47 32/58 31/57 +f 33/59 29/52 41/60 +f 28/49 30/61 42/62 +f 27/35 45/43 23/36 +f 22/39 40/45 24/40 +f 32/58 38/47 28/49 +f 33/59 39/50 29/52 +f 28/49 34/48 30/61 +f 29/52 35/51 31/57 +f 37/56 38/47 31/57 +f 45/63 33/59 41/60 +f 40/64 28/49 42/62 +g Cube_Cube_road +f 26/65 22/66 10/67 18/68 +f 23/69 25/70 16/71 12/72 +f 26/65 18/68 16/71 25/70 +f 44/73 40/74 22/66 +f 41/75 43/76 25/70 +f 44/73 26/65 25/70 +f 32/77 28/78 40/74 +f 29/79 31/80 43/76 +f 32/77 44/73 43/76 +f 26/65 44/73 22/66 +f 23/69 41/75 25/70 +f 43/76 44/73 25/70 +f 44/73 32/77 40/74 +f 41/75 29/79 43/76 +f 31/80 32/77 43/76 diff --git a/models/feldweg_slope.obj b/models/feldweg_slope.obj new file mode 100644 index 0000000..dd083f6 --- /dev/null +++ b/models/feldweg_slope.obj @@ -0,0 +1,84 @@ +# Blender v2.72 (sub 0) OBJ File: 'feldweg_slope.blend' +# www.blender.org +o Cube +v 0.500000 -0.500000 -0.500000 +v -0.500000 -0.500000 -0.500000 +v -0.500000 0.500000 0.500000 +v 0.500000 0.500000 0.500000 +v 0.500000 -0.625000 -0.500000 +v -0.500000 -0.625000 -0.500000 +v -0.500000 -0.500000 0.500000 +v 0.500000 -0.500000 0.500000 +v 0.250000 -0.586408 -0.500000 +v -0.250000 0.413592 0.500000 +v -0.250000 -0.586408 -0.500000 +v 0.250000 0.413592 0.500000 +v 0.375000 -0.500000 -0.500000 +v -0.375000 0.500000 0.500000 +v -0.125000 -0.625000 -0.500000 +v 0.125000 0.375000 0.500000 +v 0.125000 -0.625000 -0.500000 +v -0.125000 0.375000 0.500000 +v -0.375000 -0.500000 -0.500000 +v 0.375000 0.500000 0.500000 +v -0.000000 -0.005322 0.500000 +vt 1.000000 1.000000 +vt 0.875000 1.000000 +vt 0.500000 0.494678 +vt 1.000000 0.875000 +vt 0.750000 0.913592 +vt 0.625000 0.875000 +vt 0.375000 0.875000 +vt 0.250000 0.913592 +vt 0.125000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 0.000000 0.875000 +vt 0.000000 0.187500 +vt 1.000000 0.312500 +vt 0.000000 0.312500 +vt 1.000000 0.187500 +vt 1.000000 0.125000 +vt 0.000000 0.125000 +vt 1.000000 0.625000 +vt 1.000000 0.750000 +vt 0.000000 0.750000 +vt 0.000000 0.625000 +vt 1.000000 0.250000 +vt 1.000000 0.375000 +vt 0.000000 0.375000 +vt 0.000000 0.250000 +vt 1.000000 0.500000 +vt 0.000000 0.500000 +g Cube_Cube_road_ends +s off +f 4/1 20/2 21/3 +f 6/4 2/1 19/2 11/5 15/6 +f 20/2 12/5 21/3 +f 12/5 16/6 21/3 +f 16/6 18/7 21/3 +f 18/7 10/8 21/3 +f 10/8 14/9 21/3 +f 14/9 3/10 21/3 +f 3/10 7/11 21/3 +f 7/11 8/12 21/3 +f 8/12 4/1 21/3 +f 1/10 5/13 17/7 9/8 13/9 +g Cube_Cube_road_ends_default_grass_side.png +f 6/14 7/15 2/16 +f 2/11 7/12 3/1 +f 4/10 8/11 1/12 +f 5/17 1/15 8/16 +g Cube_Cube_bottom +f 8/10 7/11 6/12 5/1 +g Cube_Cube_top_grass +f 19/4 2/1 3/10 14/13 +f 1/12 13/18 20/19 4/11 +g Cube_Cube_road +f 15/20 11/21 10/22 18/23 +f 9/24 17/25 16/26 12/27 +f 15/20 18/23 16/26 17/25 +g Cube_Cube_road-grass_blend +f 13/28 9/20 12/23 20/29 +f 11/21 19/4 14/13 10/22 diff --git a/models/feldweg_slope_long.obj b/models/feldweg_slope_long.obj new file mode 100644 index 0000000..976f927 --- /dev/null +++ b/models/feldweg_slope_long.obj @@ -0,0 +1,108 @@ +# Blender v2.72 (sub 0) OBJ File: 'feldweg_slope_long.blend' +# www.blender.org +o Cube +v 0.500000 -0.500000 -1.500000 +v -0.500000 -0.500000 -1.500000 +v -0.500000 0.500000 0.500000 +v 0.500000 0.500000 0.500000 +v 0.500000 -0.625000 -1.500000 +v -0.500000 -0.625000 -1.500000 +v -0.500000 -0.500000 0.500000 +v 0.500000 -0.500000 0.500000 +v 0.250000 -0.586408 -1.500000 +v -0.250000 0.413592 0.500000 +v -0.250000 -0.586408 -1.500000 +v 0.250000 0.413592 0.500000 +v 0.375000 -0.500000 -1.500000 +v -0.375000 0.500000 0.500000 +v -0.125000 -0.625000 -1.500000 +v 0.125000 0.375000 0.500000 +v 0.125000 -0.625000 -1.500000 +v -0.125000 0.375000 0.500000 +v -0.375000 -0.500000 -1.500000 +v 0.375000 0.500000 0.500000 +v -0.000000 -0.005322 0.500000 +v -0.250000 -0.086408 -0.500000 +v 0.500000 -0.562500 -0.500000 +v 0.375000 0.000000 -0.500000 +v 0.500000 -0.500000 -0.500000 +v 0.250000 -0.086408 -0.500000 +v -0.500000 -0.562500 -0.500000 +v 0.500000 0.000000 -0.500000 +v -0.500000 0.000000 -0.500000 +v -0.375000 0.000000 -0.500000 +v 0.125000 -0.125000 -0.500000 +v -0.500000 -0.500000 -0.500000 +v -0.125000 -0.125000 -0.500000 +vt 1.000000 1.000000 +vt 0.875000 1.000000 +vt 0.500000 0.494678 +vt 1.000000 0.875000 +vt 0.750000 0.913592 +vt 0.625000 0.875000 +vt 0.375000 0.875000 +vt 0.250000 0.913592 +vt 0.125000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 0.000000 0.875000 +vt 0.000000 0.250000 +vt 1.000000 0.312500 +vt 0.000000 0.312500 +vt 0.000000 0.500000 +vt 1.000000 0.187500 +vt 1.000000 0.500000 +vt 1.000000 0.250000 +vt 0.000000 0.187500 +vt 1.000000 0.125000 +vt 0.000000 0.125000 +vt 1.000000 0.625000 +vt 1.000000 0.750000 +vt 0.000000 0.750000 +vt 0.000000 0.625000 +vt 1.000000 0.375000 +vt 0.000000 0.375000 +g Cube_Cube_road_ends +s off +f 4/1 20/2 21/3 +f 6/4 2/1 19/2 11/5 15/6 +f 20/2 12/5 21/3 +f 12/5 16/6 21/3 +f 16/6 18/7 21/3 +f 18/7 10/8 21/3 +f 10/8 14/9 21/3 +f 14/9 3/10 21/3 +f 3/10 7/11 21/3 +f 7/11 8/12 21/3 +f 8/12 4/1 21/3 +f 1/10 5/13 17/7 9/8 13/9 +g Cube_Cube_road_ends_default_grass_side.png +f 27/14 7/15 32/16 +f 32/11 7/12 3/1 29/17 +f 28/17 25/11 1/12 +f 5/18 1/15 25/16 23/14 +f 2/11 32/12 29/19 +f 23/20 25/15 8/16 +f 6/21 27/20 32/15 2/16 +f 4/10 8/11 25/12 28/19 +g Cube_Cube_bottom +f 8/11 7/12 27/1 23/10 +f 23/11 27/12 6/1 5/10 +g Cube_Cube_top_grass +f 30/4 29/1 3/10 14/13 +f 28/12 24/22 20/23 4/11 +f 1/12 13/22 24/23 28/11 +f 19/4 2/1 29/10 30/13 +g Cube_Cube_road +f 15/24 11/25 22/26 33/27 +f 26/20 31/28 16/29 12/14 +f 33/24 18/27 16/29 31/28 +f 33/24 22/25 10/26 18/27 +f 9/20 17/28 31/29 26/14 +f 15/24 33/27 31/29 17/28 +g Cube_Cube_road-grass_blend +f 24/19 26/24 12/27 20/17 +f 11/25 19/4 30/13 22/26 +f 22/25 30/4 14/13 10/26 +f 13/19 9/24 26/27 24/17 diff --git a/nodes_feldweg.lua b/nodes_feldweg.lua index 64c0c02..39798f9 100644 --- a/nodes_feldweg.lua +++ b/nodes_feldweg.lua @@ -315,6 +315,23 @@ elseif( cottages_feldweg_mode == "mesh" ) then drawtype = "mesh", mesh = "feldweg-curve.obj", }) + + minetest.register_node("cottages:feldweg_end", { + description = S("dirt road end"), + paramtype2 = "facedir", + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, + legacy_facedir_simple = true, + groups = {crumbly=3}, + sounds = default.node_sound_dirt_defaults, + is_ground_content = false, + tiles = {"cottages_feldweg_end.png","default_dirt.png^default_grass_side.png", + "default_dirt.png", "default_grass.png", + "cottages_feldweg_surface.png^cottages_feldweg_edges.png", + "cottages_feldweg_surface.png"}, + paramtype = "light", + drawtype = "mesh", + mesh = "feldweg_end.obj", + }) end @@ -327,3 +344,63 @@ if( minetest.get_modpath("stairs") and stairs and stairs.register_stair_and_slab S("Dirt Road, half height"), default.node_sound_dirt_defaults()) end + +if( cottages_feldweg_mode == "nodebox" or cottages_feldweg_mode == "mesh" ) then + local box_slope = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.25, 0.5}, + {-0.5, -0.25, -0.25, 0.5, 0, 0.5}, + {-0.5, 0, 0, 0.5, 0.25, 0.5}, + {-0.5, 0.25, 0.25, 0.5, 0.5, 0.5} + }}; + + local box_slope_long = { + type = "fixed", + fixed = { + {-0.5, -0.5, -1.5, 0.5, -0.10, 0.5}, + {-0.5, -0.25, -1.3, 0.5, -0.25, 0.5}, + {-0.5, -0.25, -1.0, 0.5, 0, 0.5}, + {-0.5, 0, -0.5, 0.5, 0.25, 0.5}, + {-0.5, 0.25, 0, 0.5, 0.5, 0.5} + }}; + + minetest.register_node("cottages:feldweg_slope", { + description = S("dirt road slope"), + paramtype2 = "facedir", + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, + legacy_facedir_simple = true, + groups = {crumbly=3}, + sounds = default.node_sound_dirt_defaults, + is_ground_content = false, + tiles = {"cottages_feldweg_end.png","default_dirt.png^default_grass_side.png", + "default_dirt.png", "default_grass.png", + "cottages_feldweg_surface.png", + "cottages_feldweg_surface.png^cottages_feldweg_edges.png"}, + paramtype = "light", + drawtype = "mesh", + mesh = "feldweg_slope.obj", + + collision_box = box_slope, + selection_box = box_slope, + }) + + minetest.register_node("cottages:feldweg_slope_long", { + description = S("dirt road slope long"), + paramtype2 = "facedir", + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, + legacy_facedir_simple = true, + groups = {crumbly=3}, + sounds = default.node_sound_dirt_defaults, + is_ground_content = false, + tiles = {"cottages_feldweg_end.png","default_dirt.png^default_grass_side.png", + "default_dirt.png", "default_grass.png", + "cottages_feldweg_surface.png", + "cottages_feldweg_surface.png^cottages_feldweg_edges.png"}, + paramtype = "light", + drawtype = "mesh", + mesh = "feldweg_slope_long.obj", + collision_box = box_slope_long, + selection_box = box_slope_long, + }) +end diff --git a/textures/cottages_feldweg_edges.png b/textures/cottages_feldweg_edges.png index 16803415809565c006d0fafe1225a28d6bd948f2..a81653d82f89f0b4171fcc0c1416c508152d1420 100644 GIT binary patch delta 327 zcmV-N0l5CJ0^tIXBYy!XNklr zJ+;cTR1#8z*pO~Yk^rP_OH``>ro@^lJ+EJC-#gDo0NnO7+HLPgvJ&OHX9z5t@A%Li*hy2;6U9__`lemE zFw?mj36Yvm@gnc(YcZXVT~ksrxrA*igqqNN5huWNWF@tXLIYW$MAp`Jv+~jw5_L)8 zXqX%Pf8cbdZ$K`3!_4^&eJCr1vGN82%gXut?!Zp`_O}9nS6{^$lj7YrHssU76yh&b Z_yGgY?r}`}o3sD`002ovPDHLkV1nt2nM?ox delta 277 zcmV+w0qXwY0jtphST9BO0kQ69+)*R*8#n zgkFphiH#euG9WR4)J8y>#V4by=IdZIgBc)RofTEz#s}kc zqg3{>mseMtxmqk|t?xJ&j$kW|I57M#O9p}@(PSto1B^ Date: Fri, 30 Jun 2017 00:02:32 +0200 Subject: [PATCH 04/31] added sleeping mat with pillow --- nodes_furniture.lua | 48 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 46 insertions(+), 2 deletions(-) diff --git a/nodes_furniture.lua b/nodes_furniture.lua index 7098ab4..62ab626 100644 --- a/nodes_furniture.lua +++ b/nodes_furniture.lua @@ -122,6 +122,37 @@ minetest.register_node("cottages:sleeping_mat", { }) +-- this one has a pillow for the head; thus, param2 becomes visible to the builder, and mobs may use it as a bed +minetest.register_node("cottages:sleeping_mat_head", { + description = S("sleeping mat with pillow"), + drawtype = 'nodebox', + tiles = { 'cottages_sleepingmat.png' }, -- done by VanessaE + wield_image = 'cottages_sleepingmat.png', + inventory_image = 'cottages_sleepingmat.png', + sunlight_propagates = true, + paramtype = 'light', + paramtype2 = "facedir", + groups = { snappy = 3 }, + sounds = default.node_sound_leaves_defaults(), + node_box = { + type = "fixed", + fixed = { + {-0.48, -0.5,-0.48, 0.48, -0.5+1/16, 0.48}, + {-0.34, -0.5+1/16,-0.12, 0.34, -0.5+2/16, 0.34}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.48, -0.5,-0.48, 0.48, -0.5+2/16, 0.48}, + } + }, + is_ground_content = false, + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) + return cottages.sleep_in_bed( pos, node, clicker, itemstack, pointed_thing ); + end +}) + -- furniture; possible replacement: 3dforniture:chair minetest.register_node("cottages:bench", { @@ -395,6 +426,12 @@ cottages.sleep_in_bed = function( pos, node, clicker, itemstack, pointed_thing ) local animation = default.player_get_animation( clicker ); local pname = clicker:get_player_name(); + local p_above = minetest.get_node( {x=pos.x, y=pos.y+1, z=pos.z}); + if( not( p_above) or not( p_above.name ) or p_above.name ~= 'air' ) then + minetest.chat_send_player( pname, "This place is too narrow for sleeping. At least for you!"); + return; + end + local place_name = 'place'; -- if only one node is present, the player can only sit; -- sleeping requires a bed head+foot or two sleeping mats @@ -462,7 +499,7 @@ cottages.sleep_in_bed = function( pos, node, clicker, itemstack, pointed_thing ) end place_name = 'bed'; - elseif( node.name=='cottages:sleeping_mat' or node.name=='cottages:straw_mat') then + elseif( node.name=='cottages:sleeping_mat' or node.name=='cottages:straw_mat' or node.name=='cottages:sleeping_mat_head') then place_name = 'mat'; dir = node.param2; allow_sleep = false; @@ -470,7 +507,7 @@ cottages.sleep_in_bed = function( pos, node, clicker, itemstack, pointed_thing ) local offset = {{x=0,z=-1}, {x=-1,z=0}, {x=0,z=1}, {x=1,z=0}}; for i,off in ipairs( offset ) do node2 = minetest.get_node( {x=pos.x+off.x, y=pos.y, z=pos.z+off.z} ); - if( node2.name == 'cottages:sleeping_mat' or node2.name=='cottages:straw_mat' ) then + if( node2.name == 'cottages:sleeping_mat' or node2.name=='cottages:straw_mat' or node.name=='cottages:sleeping_mat_head' ) then -- if a second mat is found, sleeping is possible allow_sleep = true; dir = i-1; @@ -557,6 +594,13 @@ minetest.register_craft({ }) +minetest.register_craft({ + output = "cottages:sleeping_mat_head", + recipe = { + {"cottages:sleeping_mat","cottages:straw_mat" } + } +}) + minetest.register_craft({ output = "cottages:table", recipe = { From 3027973c3a8cb749fb993f3a7dd2528c632a0a3f Mon Sep 17 00:00:00 2001 From: Sokomine Date: Fri, 30 Jun 2017 19:58:52 +0200 Subject: [PATCH 05/31] added special ladder and rope for mines --- init.lua | 1 + nodes_mining.lua | 67 +++++++++++++++++++++++++++++++++++++ textures/cottages_rope.png | Bin 0 -> 106 bytes 3 files changed, 68 insertions(+) create mode 100644 nodes_mining.lua create mode 100644 textures/cottages_rope.png diff --git a/init.lua b/init.lua index cbafc0a..8149611 100644 --- a/init.lua +++ b/init.lua @@ -63,6 +63,7 @@ dofile(minetest.get_modpath("cottages").."/nodes_doorlike.lua"); dofile(minetest.get_modpath("cottages").."/nodes_fences.lua"); dofile(minetest.get_modpath("cottages").."/nodes_roof.lua"); dofile(minetest.get_modpath("cottages").."/nodes_barrel.lua"); +dofile(minetest.get_modpath("cottages").."/nodes_mining.lua"); --dofile(minetest.get_modpath("cottages").."/nodes_chests.lua"); -- this is only required and useful if you run versions of the random_buildings mod where the nodes where defined inside that mod diff --git a/nodes_mining.lua b/nodes_mining.lua new file mode 100644 index 0000000..3af4f71 --- /dev/null +++ b/nodes_mining.lua @@ -0,0 +1,67 @@ + + +--------------------------------------------------------------------------------------- +-- a rope that is of use to the mines +--------------------------------------------------------------------------------------- +-- the rope can only be digged if there is no further rope above it; +-- Note: This rope also counts as a rail node; thus, carts can move through it +minetest.register_node("cottages:rope", { + description = "rope for climbing", + tiles = {"cottages_rope.png"}, + groups = {snappy=3,choppy=3,oddly_breakable_by_hand=3,rail=1,connect_to_raillike=1},--connect_to_raillike=minetest.raillike_group("rail")}, + walkable = false, + climbable = true, + paramtype = "light", + sunlight_propagates = true, + drawtype = "plantlike", + is_ground_content = false, + can_dig = function(pos, player) + local below = minetest.get_node( {x=pos.x, y=pos.y-1, z=pos.z}); + if( below and below.name and below.name == "cottages:rope" ) then + if( player ) then + minetest.chat_send_player( player:get_player_name(), + 'The entire rope would be too heavy. Start digging at its lowest end!'); + end + return false; + end + return true; + end +}) + +minetest.register_craft({ + output = "cottages:rope", + recipe = { + {"default:cotton","default:cotton","default:cotton"} + } +}) + + +-- Note: This rope also counts as a rail node; thus, carts can move through it +minetest.register_node("cottages:ladder_with_rope_and_rail", { + description = "Ladder with rail support", + drawtype = "signlike", + tiles = {"default_ladder_wood.png^carts_rail_straight.png^cottages_rope.png"}, + inventory_image = "default_ladder_wood.png", + wield_image = "default_ladder_wood.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + climbable = true, + is_ground_content = false, + selection_box = { + type = "wallmounted", + }, + groups = {choppy=2,oddly_breakable_by_hand=3,rail=1,connect_to_raillike=1}, --connect_to_raillike=minetest.raillike_group("rail")}, + legacy_wallmounted = true, + sounds = default.node_sound_wood_defaults(), +}) + + + +minetest.register_craft({ + output = "cottages:ladder_with_rope_and_rail 3", + recipe = { + {"default:ladder","cottages:rope", "default:rail"} + } +}) diff --git a/textures/cottages_rope.png b/textures/cottages_rope.png new file mode 100644 index 0000000000000000000000000000000000000000..0045c4c35a084711061a59701654079f83e79e41 GIT binary patch literal 106 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`hMq2tAr_~T6AtkHvyPDb!~bCm zYqG%nMwburX&jcb4zelS^x5@xidDS{kK5sdC9RAM*{%thtAdu80W~vty85}Sb4q9e E0Kr`!{Qv*} literal 0 HcmV?d00001 From 6ec642ee2ed9767c6c76acdbe7b2d4966b83e2e9 Mon Sep 17 00:00:00 2001 From: Sokomine Date: Fri, 30 Jun 2017 23:45:00 +0200 Subject: [PATCH 06/31] texture --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index c3ecb2d..0b0a033 100644 --- a/README.md +++ b/README.md @@ -75,6 +75,9 @@ PilzAdam (WTFPL; default and beds mod): cottages_beds_bed_top_bottom.png cottages_beds_bed_top_top.png +Bas080 (CC; see https://forum.minetest.net/viewtopic.php?t=2344) + cottages_rope.png + Derived from Universal schema.jpg by Stefanie Lindener, which can be found here: http://de.wikipedia.org/w/index.php?title=Datei:Universal_schema.jpg&filetimestamp=20060510110309& The texture is CC-by-sa 2.0/de. cottages_slate.png From 5a01fe0ee603e5d5818fd5599b7ae54fc06eedec Mon Sep 17 00:00:00 2001 From: Sokomine Date: Sun, 2 Jul 2017 17:37:53 +0200 Subject: [PATCH 07/31] adjusted height of sleeping mat slightly --- nodes_furniture.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nodes_furniture.lua b/nodes_furniture.lua index 62ab626..5534975 100644 --- a/nodes_furniture.lua +++ b/nodes_furniture.lua @@ -106,13 +106,13 @@ minetest.register_node("cottages:sleeping_mat", { node_box = { type = "fixed", fixed = { - {-0.48, -0.5,-0.48, 0.48, -0.45, 0.48}, + {-0.48, -0.5,-0.48, 0.48, -0.5+1/16, 0.48}, } }, selection_box = { type = "fixed", fixed = { - {-0.48, -0.5,-0.48, 0.48, -0.25, 0.48}, + {-0.48, -0.5,-0.48, 0.48, -0.5+2/16, 0.48}, } }, is_ground_content = false, From f346efc1b4579f412863e439886cf40e5c66d7f6 Mon Sep 17 00:00:00 2001 From: Sokomine Date: Sat, 8 Jul 2017 22:57:36 +0200 Subject: [PATCH 08/31] updated slate texture --- textures/cottages_slate.png | Bin 8609 -> 6843 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/textures/cottages_slate.png b/textures/cottages_slate.png index f85f162e7487b7f39feb93414d8081cf79bfe4b3..a52f185e41420650fb226310186f3d5a147ccd94 100644 GIT binary patch literal 6843 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 literal 8609 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 CC@%>B From e1392055961a32003fbec16c5a5081b9c7676e80 Mon Sep 17 00:00:00 2001 From: h-v-smacker Date: Mon, 30 Oct 2017 10:48:22 +0300 Subject: [PATCH 09/31] Fix the crafting recipe conflict for hammer and steel sign --- nodes_anvil.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nodes_anvil.lua b/nodes_anvil.lua index 4a6f060..53a8b2e 100644 --- a/nodes_anvil.lua +++ b/nodes_anvil.lua @@ -297,7 +297,7 @@ minetest.register_craft({ output = "cottages:hammer", recipe = { {cottages.craftitem_steel,cottages.craftitem_steel,cottages.craftitem_steel}, - {cottages.craftitem_steel,cottages.craftitem_steel,cottages.craftitem_steel}, + {cottages.craftitem_steel,cottages.craftitem_stick,cottages.craftitem_steel}, {'', cottages.craftitem_stick, '' } } }) From eae70ece4d92f30c946d3fc2caba7d212a5e327c Mon Sep 17 00:00:00 2001 From: Sokomine Date: Mon, 1 Jan 2018 23:26:23 +0100 Subject: [PATCH 10/31] added default as required dependency (for sound) --- depends.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/depends.txt b/depends.txt index e10338b..e72ef00 100644 --- a/depends.txt +++ b/depends.txt @@ -1,4 +1,4 @@ -default? +default farming stairs? homedecor? From d607c8af311e0beaa3d3331f6acbf722985c9b62 Mon Sep 17 00:00:00 2001 From: Sokomine Date: Thu, 18 Jan 2018 07:22:00 +0100 Subject: [PATCH 11/31] new hammer receipe avoids conflict with steel sign --- nodes_anvil.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/nodes_anvil.lua b/nodes_anvil.lua index 4a6f060..9456ed1 100644 --- a/nodes_anvil.lua +++ b/nodes_anvil.lua @@ -296,8 +296,8 @@ end minetest.register_craft({ output = "cottages:hammer", recipe = { - {cottages.craftitem_steel,cottages.craftitem_steel,cottages.craftitem_steel}, - {cottages.craftitem_steel,cottages.craftitem_steel,cottages.craftitem_steel}, - {'', cottages.craftitem_stick, '' } } + {cottages.craftitem_steel}, + {'cottages:anvil'}, + {cottages.craftitem_stick} } }) From 1d9bc8af4779cec1d3bb45ee962fcb3194971757 Mon Sep 17 00:00:00 2001 From: h-v-smacker Date: Mon, 7 May 2018 02:13:39 +0300 Subject: [PATCH 12/31] Feldweg recipes --- adaptions.lua | 2 + init.lua | 1 + nodes_feldweg.lua | 76 ++++++++++++++++++++++++++++++++- textures/cottages_loam.png | Bin 5743 -> 4598 bytes textures/cottages_loam_old.png | Bin 0 -> 5743 bytes 5 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 textures/cottages_loam_old.png diff --git a/adaptions.lua b/adaptions.lua index 24782cd..5d59e1b 100644 --- a/adaptions.lua +++ b/adaptions.lua @@ -56,7 +56,9 @@ cottages.texture_chest = {"default_chest_top.png", "default_chest_top.png", "def -- the treshing floor produces wheat seeds cottages.craftitem_seed_wheat = "farming:seed_wheat"; +cottages.craftitem_seed_barley = "farming:seed_barley"; cottages.texture_wheat_seed = "farming_wheat_seed.png"; +cottages.texture_barley_seed = "farming_barley_seed.png"; cottages.texture_stick = "default_stick.png"; -- texture for roofs where the tree bark is the main roof texture diff --git a/init.lua b/init.lua index 8149611..a653218 100644 --- a/init.lua +++ b/init.lua @@ -40,6 +40,7 @@ dofile(minetest.get_modpath("cottages").."/adaptions.lua"); -- add a stack size if you want a higher yield cottages.handmill_product = {}; cottages.handmill_product[ cottages.craftitem_seed_wheat ] = 'farming:flour 1'; +cottages.handmill_product[ cottages.craftitem_seed_barley ] = 'farming:flour 1'; --[[ some examples: cottages.handmill_product[ 'default:cobble' ] = 'default:gravel'; cottages.handmill_product[ 'default:gravel' ] = 'default:sand'; diff --git a/nodes_feldweg.lua b/nodes_feldweg.lua index 39798f9..59be5a6 100644 --- a/nodes_feldweg.lua +++ b/nodes_feldweg.lua @@ -19,6 +19,47 @@ if( not( cottages_feldweg_mode )) then cottages_feldweg_mode = "mesh"; end +local function register_recipes(include_end) + + minetest.register_craft({ + output = "cottages:feldweg_crossing 5", + recipe = { + {"", "cottages:feldweg", "" }, + {"cottages:feldweg", "cottages:feldweg", "cottages:feldweg"}, + {"", "cottages:feldweg", "" }, + }, + }) + + minetest.register_craft({ + output = "cottages:feldweg_t_junction 5", + recipe = { + {"", "cottages:feldweg", "" }, + {"", "cottages:feldweg", "" }, + {"cottages:feldweg", "cottages:feldweg", "cottages:feldweg"} + + }, + }) + + minetest.register_craft({ + output = "cottages:feldweg_curve 5", + recipe = { + {"cottages:feldweg", "", "" }, + {"cottages:feldweg", "", ""}, + {"cottages:feldweg", "cottages:feldweg", "cottages:feldweg"} + }, + }) + + if include_end then + minetest.register_craft({ + output = "cottages:feldweg_end 5", + recipe = { + {"cottages:feldweg", "", "cottages:feldweg" }, + {"cottages:feldweg", "cottages:feldweg", "cottages:feldweg"} + }, + }) + end +end + --- a nice dirt road for small villages or paths to fields if( cottages_feldweg_mode == "simple" or cottages_feldweg_mode == "flat" ) then minetest.register_node("cottages:feldweg", { @@ -72,7 +113,8 @@ if( cottages_feldweg_mode == "flat" ) then sounds = default.node_sound_dirt_defaults, is_ground_content = false, }) - + + register_recipes(false) -- -- cube-style nodebox version -- @@ -243,6 +285,8 @@ elseif( cottages_feldweg_mode == "nodebox" ) then }, }) + register_recipes(false) + -- -- the mesh version (rounded); provided and created by VanessaE @@ -284,6 +328,8 @@ elseif( cottages_feldweg_mode == "mesh" ) then mesh = "feldweg-crossing.obj", }) + + minetest.register_node("cottages:feldweg_t_junction", { description = S("dirt road t junction"), paramtype2 = "facedir", @@ -299,6 +345,8 @@ elseif( cottages_feldweg_mode == "mesh" ) then drawtype = "mesh", mesh = "feldweg-T-junction.obj", }) + + minetest.register_node("cottages:feldweg_curve", { description = S("dirt road curve"), @@ -316,6 +364,8 @@ elseif( cottages_feldweg_mode == "mesh" ) then mesh = "feldweg-curve.obj", }) + + minetest.register_node("cottages:feldweg_end", { description = S("dirt road end"), paramtype2 = "facedir", @@ -332,6 +382,11 @@ elseif( cottages_feldweg_mode == "mesh" ) then drawtype = "mesh", mesh = "feldweg_end.obj", }) + + + register_recipes(true) + + end @@ -385,6 +440,8 @@ if( cottages_feldweg_mode == "nodebox" or cottages_feldweg_mode == "mesh" ) then selection_box = box_slope, }) + + minetest.register_node("cottages:feldweg_slope_long", { description = S("dirt road slope long"), paramtype2 = "facedir", @@ -403,4 +460,21 @@ if( cottages_feldweg_mode == "nodebox" or cottages_feldweg_mode == "mesh" ) then collision_box = box_slope_long, selection_box = box_slope_long, }) + + + minetest.register_craft({ + output = "cottages:feldweg_slope 3", + recipe = { + {"cottages:feldweg", "", "" }, + {"cottages:feldweg", "cottages:feldweg", ""} + }, + }) + + minetest.register_craft({ + output = "cottages:feldweg_slope_long 4", + recipe = { + {"cottages:feldweg", "", "" }, + {"cottages:feldweg", "cottages:feldweg", "cottages:feldweg"} + }, + }) end diff --git a/textures/cottages_loam.png b/textures/cottages_loam.png index bdf058fa603bcfc623b183d5bb3ea0287dd4acd5..ee83bd0003fb2579255cb272699baafda70559c8 100644 GIT binary patch literal 4598 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 literal 5743 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 diff --git a/textures/cottages_loam_old.png b/textures/cottages_loam_old.png new file mode 100644 index 0000000000000000000000000000000000000000..bdf058fa603bcfc623b183d5bb3ea0287dd4acd5 GIT binary patch literal 5743 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 literal 0 HcmV?d00001 From 5bf23222d72f95bcccf8e7a1ca6cbeb327bf96d2 Mon Sep 17 00:00:00 2001 From: h-v-smacker Date: Tue, 8 May 2018 04:47:46 +0300 Subject: [PATCH 13/31] feldweg crafts --- adaptions.lua | 2 -- textures/cottages_loam.png | Bin 4598 -> 5743 bytes textures/cottages_loam_old.png | Bin 5743 -> 0 bytes 3 files changed, 2 deletions(-) delete mode 100644 textures/cottages_loam_old.png diff --git a/adaptions.lua b/adaptions.lua index 5d59e1b..24782cd 100644 --- a/adaptions.lua +++ b/adaptions.lua @@ -56,9 +56,7 @@ cottages.texture_chest = {"default_chest_top.png", "default_chest_top.png", "def -- the treshing floor produces wheat seeds cottages.craftitem_seed_wheat = "farming:seed_wheat"; -cottages.craftitem_seed_barley = "farming:seed_barley"; cottages.texture_wheat_seed = "farming_wheat_seed.png"; -cottages.texture_barley_seed = "farming_barley_seed.png"; cottages.texture_stick = "default_stick.png"; -- texture for roofs where the tree bark is the main roof texture diff --git a/textures/cottages_loam.png b/textures/cottages_loam.png index ee83bd0003fb2579255cb272699baafda70559c8..bdf058fa603bcfc623b183d5bb3ea0287dd4acd5 100644 GIT binary patch literal 5743 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 literal 4598 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 diff --git a/textures/cottages_loam_old.png b/textures/cottages_loam_old.png deleted file mode 100644 index bdf058fa603bcfc623b183d5bb3ea0287dd4acd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5743 zcmV-#7Le(QP) z)Y4VfrnaoAtW3t{3v_rvq!)*Wwn}y^?r`AY;Q{3T{s=O*q#=A|gUWt&~y=y0_kEhCU}mKh z5n*N#F|(ZW@i-A8A|f+utu-T6-AnOpZ`+o07Lo7}nAuo}2saKX4JnZrGZRrt$Lp~r zGsDJ+2pba-W6rtw8kCutkM-0xj-#sLjjAflt+i^+_8qsFS*>;3wsl=&jG=!Y5$*fF z@B1(eZu{;-A;r=fn?==pvrq^DHr5ai6SUUMh-e&=+&-1N2W;T&R)LLt;z>h>E*P^Pz$|A(9Aw&|@$joMVo#Fb{%CR^ERcj3| zfYT$mvFI41$DvyR7vo+S1uhF8tF?+$1VF7dgfLB0t#zJfza1OH<`HC?gt+on7?E4;Lbi*+rl-dCSSWutG5L8EQG3z4-$Kr|Gkpuq=`|+#_ zbKv;^Bwz+!;jZDfz!PA#TC3d*hrIVqmMuZ+#z*_5D>M@jCUY=5Ygpw*|rU49)@8YM@JfGVg3(ztcSHn=KK5m zJkR4ee);kRECI2HETXEO2JoC^S!%79%jNm`8A~6A0sHq8#&hO*E@f9`5dmup>$<{! zn0eba#0G#X=e#V-`}@0x5I&w2V1im}N(p}J;pf}-ox3A}reM)ak%IKd;oh{a ztEx7#d7k$zpU>x%5@OhMm4|3bsn!~R6F4_qwMh+kX4)H)HziU;lbKoxXnk8bbKfpZ>Jx%?v>$ zW`|{CjQhR|oHC^Zm_nZMxSFQv`T6;DI=Nl_pxm4|!yXKA`%wh6hAfY40o2Jk#~3e{ z%Q%kslZdc@KA1giF!S%f|Ni^$zo(R5US4Xg@9*!mm0Gi7)g567&PrjtKC57HC^v9W z(=_2S*dEa2d%&ad4cr@Kx_>vGe=rF%I6R)V?|TY|voLe(wl|LB-~RTuMkXTby8iOZ zFYCI#y}gZNYOSb790@E42Mi8ncpP#9U;_q2!1RpCUBwgEzVE1!a52yV*x093$3T#Y zbzKpG<2aU5mSvG?fJH#5`ULxzzx+jle*gac`}gnX^ZDuN>Bsw9j4|gUDDW;6cp?&p zVQ}O1ULIqFEs>!64LBG&V8BjD5+dS6q_v-Dg!}3+44wv6)sgv*C-|SGl3rip zf(?7VLX_jx@RV^JgR%#S9j;iBJobGrtupgC4Iu<;G|%(t^g=|nS}8>}nz2VgaAfNf zB{l#<0+*S2S(eLb#OdvOv1XzgqNX6@5Z~Y5Pvf(-vd$ktHHFB`+qT3QRe4<(0LJ6v zg_DWy_sDH*8(WxGgXRe|A-{0pMY%vSS`ldrk8Mp0#3b|F2DBU#&)eHh~O{AJs= z*Vot3m*~DFS0i9-PnsTMFoe^hbzS#;hle1*VCER(j~_o&_37!Uwf6Pv*L~k#US1I8 zpcEd%ci!j`0S4@8@Yq|e%%Rpw1ni}4TT3Z1YAGe96yRVUcK+OL+xl|@#lB-PzR7i6 z0p-3RY&(~N)CXt7HGoRb<9L3blyT*@ZGByH_~#7{U>Xtg^6!?S;!zfRiRqw+Ke0*_ zCfJFpmVNC3#tnf0!}o|ZVp*G6h42E4m4A+HUl1+dTGq zD>!Sz0%DBA5J9qngB#G#0T9pnl&Cr$d{;qZ5wL=D2rLxD5-Vfo^Z5+F1>5#2=Ah~# z%d!Bt{h56kg;#hv0@THZ;aR}Recw|`!842-19`^DD?kSKk12Tl<9_1j>G!&RNF*?j zJD93IK0bn-I28L4t?Sz7BIl*xUp*zj?T?SozA=Yu)ZhocgMav%aL`zaJ3y^fB(&DR zsEDAE88g*tL|m(t(p0&Wx-6S&q+3qIlaU6I`n~GwtAueJeQ~|Kc~sE1{0^J)JXmi}8r=2$lst(!!S9K`GecuW8uV*gYx6wgWKb4h&)|@_5{~1w z=`aikQP1Xp9G6}^{fda$VYmRd1{DB>Lv}_f>G}~?X0@J9Cm0oL^03Cm(=@>rFE1}4 zgkhT8ja>*3kuP7q0Q68Fp>%TRhbgg1uL*Fw7dy8!ARazgAqeWWZNY9IH~*)Y8iJ}K zaN!=0my1`WKrL8$nkJ|Gy}rPmOueovc+4;iKtfywZv?&rEnOFL8i67JuIthuGv{1@ z+m6XNo?#e*t4m%KqMm{0_z{N?#&NX9CAV$OIcG8`w!%btKi*0vs>-C+TJ6FWtHB5S z$SWP!0_J&setzzAmxsD5aA4=|BVH?cbU505Zp?W-3QB-1kUGYAI-OLNj2sEDR)qDw z?+7XfV!ZY3?F|+|^@YQSO4T1YUW!WDW65pN6Oq10)5~No0>r3DHUZ%1_v0VaG$G!A zt1in{~-h-{yQD= zcwq30aG;Kv-q zEjw9?`X&ov6YCHDEKj?hml4(g1~7)}kL!NxNA-QCUcq+~OhgaQ4@e=tA5V{7L_51h zyt(5z`9?T6C4yvfqg0<7`)vUYTL|!Pqynd5DJ8tvrA#d7AAb3BN~!L7D>=r<4Xv-fn6$`B@@>&SUFKRjRAtmekZ zRAy#TrRFUKC8C-)X2#=*+i5z*A??a_Ya}FrHO4d!^T(CM%uJMwP##upEFxnHKo>I` zB2?6U+qU!hJWWH+xs;t%gQ~I|QEF6cK~g~yyF5Og&*#(WG|%(5Z{L<>i9-U}bwP=l z%o@?*fS+e|q~KdZb3b-;QPpKxmTkRWuj{%(1{RUDA8lpQ<1%hSF^Y)VVN1tetku)n zoj!H6XUT%7#ptD1Ddp|$4QUWLEyNf?D0_C%(yPitrJ|od&Jw&X@N!dCV+hqgJ<|i) zD^6#9_-|e}u!?aUy#t6Sby)$$%MCNc13qbTTZ9n6sxFrc-1tCyb=-^=O~~UA=HbMoB|* z?(1_T(9dva-px2f(wmv!Y&a!ojPMJPV9%KnqC1OITs-X)Ir?(*RsxtOM7-d19>*c7 zP-{(?MY%Bt0H?fTA#rV+`6$GuQ=iG zhc+5QU)LY4R?s%jBn|`KuyZdTh9OO3O39VvzJ=Q-A}`6RhMugs>H-4pi}TP&sd7Ao zKO4DQ&htFS7^i81-I2{|E`D#%!h$;?STi0PWAsTN*EDZ2lQ15$ZQC#m5K`B5eR_Iw z0O*_UU%!4molfB9P8ZD#*SmvsvHeMQH6Fe1ZQHCHrNBcPeR45x-g^;zyw9Jv}`=J=I!6KN|#o(2LbjCUF1r^K;Id7+I-eB%-agTyotr z5wWO)eqBo;PwMHrIeHyw>#t>N#OaEez>ygr=u6&OdU_DUDbVR0eDkhto?vK%kV;w(LI1(YI}@8JrU$itBS20G;O< z$v{;hlN}OwulqP0p>)S7kK_3I`idC|Gb0k_W`+U*@djW(1O`=ORup2`7^Z7nAnE5q z!1u8%|FZ9_BRZVj!UV0gecjjyn?bwB^)Djg|M~ZS?bEA=T;JOC+1j%2DFxM-^Hxe@ zHj!XfbFLy3#loF9m@d)T|jhQ5S%MXWca&)#_{c@(m@ z#)S*J*jUav^b-#K^i!`_e`4Sbxcjojc^cr+$4mW{e)4y6`ki$|DOO>4R_;$aG~CF9HVNjX&Cw>=4Bh=)q~h`9m>Ie>HS2N^Kn;fou~J; zjEBbEB&5%hxo+hRw`1Ctba)x{K<50JK*n zd>I~=ZY+=_FK6)H>-8FX7w?hE3oU@8zraEA4h;I#>>~pXJpJ@N$g9JB|K2+V$!+BN ztak}}qKJ7_=bXpJ+|6A2g@TR2!pr3{&$AEuAqDy7q1Qw111PzrUHA6@>tBR1J@^mU zu-7B5pQ7`I>9ziuIBRsgSja!j$k-3Fj2>@UVrb=(qp3^ z+=4ekqQW`!0wz*|x1C%q?o*kQ4_FX`dUqj%C=Fh%cmQD0y;jjrIE0_YYR8+0hlhSz zs_z?kx^rVe{OJc2`(X39b#l~aFb~LHA$5%PAP?SXzALT0FX6TA!3H|@%IgudRh{_u zQRis`rt#2)DMEe)#81B*>VBBg&o=qAo6o`o$32%B zyqWEuLqzBExz*bLgs9gu?h>v8mpf-a=6*gOQ*l0miHot~9xeM}p`Ho(4+5|aA4v!y zoK7b*3qDli=@0JVOah`$Ywh9Tfp5|UNTBDgyBP+zrPmG4EwQHa`RtgPbDrnf<&i#< zp=QhyNQ70F_jgy_;1sTi_~0gl7JTV*G(EZ!QfO;s-z&OjL@9*6-`7ug9iYm!Zp$Lm zlwx=|pO|@`XR|g$ZKdwp5;Z(s&eT}h)_ohM^Xc+HqWivAqo7)v#bGL~R-+&y!uWBN z5KrT|5E`?en`p8-mg~?d3<~%l8^a%8Yhh@gw)7d zsnwb_TlX?V!*unwktLX7dp^`lnHR%*R!j6^(d>$c|8zNR=DRWbqfvYLY` zvoKq3d)_M%shCAQ1dCeCq(P`5W@h3RqU`&+)e3K{r7ClXQEshj2Nfa1PcCl-5x3Tw z{nUl%Clilxi0425`tkMy-S*s?RL;57Wh#B1&pXrPiOoy0uns@5VFL11wX{RRe({1OF43ykEtF% zi5!OT`h9tRey-WxzI}Ur{bLvgRr%+C`p3Mk?;qC?!o%hK<>lpaxjgRA-~R7^TeDj2 z=qi#BN71NZ6eYo6GMmrp48*OG5chKdo_3Ex7%>q|Lnx)ZzP=8_fKd{sNYFg*1V5q% hfz0W@qbR`k{{gU*Rw<^fz})}<002ovPDHLkV1l_E2#o*$ From 32619523a44487507f4e8019457453b34591ab0e Mon Sep 17 00:00:00 2001 From: h-v-smacker Date: Tue, 8 May 2018 04:49:14 +0300 Subject: [PATCH 14/31] feldweg crafts --- init.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/init.lua b/init.lua index a653218..8149611 100644 --- a/init.lua +++ b/init.lua @@ -40,7 +40,6 @@ dofile(minetest.get_modpath("cottages").."/adaptions.lua"); -- add a stack size if you want a higher yield cottages.handmill_product = {}; cottages.handmill_product[ cottages.craftitem_seed_wheat ] = 'farming:flour 1'; -cottages.handmill_product[ cottages.craftitem_seed_barley ] = 'farming:flour 1'; --[[ some examples: cottages.handmill_product[ 'default:cobble' ] = 'default:gravel'; cottages.handmill_product[ 'default:gravel' ] = 'default:sand'; From 739f3a7ac4d221590383d5d8cd97f821c7d61b87 Mon Sep 17 00:00:00 2001 From: Sokomine Date: Sat, 30 Jun 2018 03:14:41 +0200 Subject: [PATCH 15/31] added screenshot; made compatible with mineclone2; adjusted sounds --- depends.txt | 4 ++-- init.lua | 5 +++++ nodes_feldweg.lua | 2 +- nodes_furniture.lua | 10 +++++----- nodes_historic.lua | 6 +++--- nodes_mining.lua | 2 +- nodes_roof.lua | 4 ++-- nodes_straw.lua | 6 +++--- screenshot.jpg | Bin 0 -> 108827 bytes 9 files changed, 22 insertions(+), 17 deletions(-) create mode 100644 screenshot.jpg diff --git a/depends.txt b/depends.txt index e72ef00..d0220ae 100644 --- a/depends.txt +++ b/depends.txt @@ -1,5 +1,5 @@ -default -farming +default? +farming? stairs? homedecor? intllib? diff --git a/init.lua b/init.lua index 8149611..a2a4751 100644 --- a/init.lua +++ b/init.lua @@ -29,6 +29,11 @@ else cottages.S = function(s) return s end end +-- MineClone2 needs special treatment; default is only needed for +-- crafting materials and sounds (less important) +if( not( minetest.get_modpath("default"))) then + default = {}; +end --cottages.config_use_mesh_barrel = false; --cottages.config_use_mesh_handmill = true; diff --git a/nodes_feldweg.lua b/nodes_feldweg.lua index 39798f9..bb21479 100644 --- a/nodes_feldweg.lua +++ b/nodes_feldweg.lua @@ -342,7 +342,7 @@ if( minetest.get_modpath("stairs") and stairs and stairs.register_stair_and_slab {"cottages_feldweg.png","default_dirt.png", "default_grass.png","default_grass.png","cottages_feldweg.png","cottages_feldweg.png"}, S("Dirt Road Stairs"), S("Dirt Road, half height"), - default.node_sound_dirt_defaults()) + default.node_sound_dirt_defaults) end if( cottages_feldweg_mode == "nodebox" or cottages_feldweg_mode == "mesh" ) then diff --git a/nodes_furniture.lua b/nodes_furniture.lua index 5534975..056c8d7 100644 --- a/nodes_furniture.lua +++ b/nodes_furniture.lua @@ -23,7 +23,7 @@ minetest.register_node("cottages:bed_foot", { paramtype = "light", paramtype2 = "facedir", groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, - sounds = default.node_sound_wood_defaults(), + sounds = default.node_sound_wood_defaults, node_box = { type = "fixed", fixed = { @@ -58,7 +58,7 @@ minetest.register_node("cottages:bed_head", { paramtype = "light", paramtype2 = "facedir", groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, - sounds = default.node_sound_wood_defaults(), + sounds = default.node_sound_wood_defaults, node_box = { type = "fixed", fixed = { @@ -99,7 +99,7 @@ minetest.register_node("cottages:sleeping_mat", { paramtype2 = "facedir", walkable = false, groups = { snappy = 3 }, - sounds = default.node_sound_leaves_defaults(), + sounds = default.node_sound_leaves_defaults, selection_box = { type = "wallmounted", }, @@ -133,7 +133,7 @@ minetest.register_node("cottages:sleeping_mat_head", { paramtype = 'light', paramtype2 = "facedir", groups = { snappy = 3 }, - sounds = default.node_sound_leaves_defaults(), + sounds = default.node_sound_leaves_defaults, node_box = { type = "fixed", fixed = { @@ -162,7 +162,7 @@ minetest.register_node("cottages:bench", { paramtype = "light", paramtype2 = "facedir", groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, - sounds = default.node_sound_wood_defaults(), + sounds = default.node_sound_wood_defaults, node_box = { type = "fixed", fixed = { diff --git a/nodes_historic.lua b/nodes_historic.lua index 1fa5ea4..90e48c4 100644 --- a/nodes_historic.lua +++ b/nodes_historic.lua @@ -27,7 +27,7 @@ minetest.register_node("cottages:wagon_wheel", { }, groups = {choppy=2,dig_immediate=2,attached_node=1}, legacy_wallmounted = true, - sounds = default.node_sound_defaults(), + sounds = default.node_sound_defaults, is_ground_content = false, }) @@ -50,7 +50,7 @@ if( minetest.get_modpath("stairs") and stairs and stairs.register_stair_and_slab {"cottages_loam.png"}, S("Loam Stairs"), S("Loam Slab"), - default.node_sound_dirt_defaults()) + default.node_sound_dirt_defaults) if( minetest.registered_nodes["default:clay"]) then stairs.register_stair_and_slab("clay", "default:clay", @@ -58,7 +58,7 @@ if( minetest.get_modpath("stairs") and stairs and stairs.register_stair_and_slab {"cottages_clay.png"}, S("Clay Stairs"), S("Clay Slab"), - default.node_sound_dirt_defaults()) + default.node_sound_dirt_defaults) end end diff --git a/nodes_mining.lua b/nodes_mining.lua index 3af4f71..b33ec3d 100644 --- a/nodes_mining.lua +++ b/nodes_mining.lua @@ -54,7 +54,7 @@ minetest.register_node("cottages:ladder_with_rope_and_rail", { }, groups = {choppy=2,oddly_breakable_by_hand=3,rail=1,connect_to_raillike=1}, --connect_to_raillike=minetest.raillike_group("rail")}, legacy_wallmounted = true, - sounds = default.node_sound_wood_defaults(), + sounds = default.node_sound_wood_defaults, }) diff --git a/nodes_roof.lua b/nodes_roof.lua index 11174d8..9503e86 100644 --- a/nodes_roof.lua +++ b/nodes_roof.lua @@ -191,7 +191,7 @@ minetest.register_node("cottages:slate_vertical", { tiles = {"cottages_slate.png",cottages.texture_roof_sides,"cottages_slate.png","cottages_slate.png",cottages.texture_roof_sides,"cottages_slate.png"}, paramtype2 = "facedir", groups = {cracky=2, stone=1}, - sounds = default.node_sound_stone_defaults(), + sounds = default.node_sound_stone_defaults, is_ground_content = false, }) @@ -209,7 +209,7 @@ minetest.register_node("cottages:reet", { description = S("Reet for thatching"), tiles = {"cottages_reet.png"}, groups = {snappy=3,choppy=3,oddly_breakable_by_hand=3,flammable=3}, - sounds = default.node_sound_wood_defaults(), + sounds = default.node_sound_wood_defaults, is_ground_content = false, }) diff --git a/nodes_straw.lua b/nodes_straw.lua index a26b728..c19b869 100644 --- a/nodes_straw.lua +++ b/nodes_straw.lua @@ -32,7 +32,7 @@ minetest.register_node("cottages:straw_mat", { paramtype2 = "facedir", walkable = false, groups = { snappy = 3 }, - sounds = default.node_sound_leaves_defaults(), + sounds = default.node_sound_leaves_defaults, node_box = { type = "fixed", fixed = { @@ -58,7 +58,7 @@ minetest.register_node("cottages:straw_bale", { tiles = {"cottages_darkage_straw_bale.png"}, paramtype = "light", groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, - sounds = default.node_sound_wood_defaults(), + sounds = default.node_sound_wood_defaults, -- the bale is slightly smaller than a full node node_box = { type = "fixed", @@ -81,7 +81,7 @@ minetest.register_node("cottages:straw", { description = S("straw"), tiles = {"cottages_darkage_straw.png"}, groups = {snappy=3,choppy=3,oddly_breakable_by_hand=3,flammable=3}, - sounds = default.node_sound_wood_defaults(), + sounds = default.node_sound_wood_defaults, -- the bale is slightly smaller than a full node is_ground_content = false, }) diff --git a/screenshot.jpg b/screenshot.jpg new file mode 100644 index 0000000000000000000000000000000000000000..62916daa7026c6017b8d326364bfde63b53ca24a GIT binary patch literal 108827 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

?nI2?*8a&c!2md z#jn#CMq`!1PnW#QB#i0@QDe9sSkt|W=HBz!XUj=W@`h3X3U8swU`gPeTE^V~`SSg# zjmsL6T^cm%`2PUT(mQ@=dK*r6!!sBD>=YeulRMo~-mYzx3JWR2n zVh0!7)QnjBC6#AY8GFb4BQa%->=;tEn;q?YbI;Uc&1afe)SKlqa$J@9GWv>0!7PDE z{z7@jtHZS!k%@A)YXg6dEqS+R^J!_;I5OIv@m}Xz723!A));P!vHAT?D@NH=q??N? zt;n~>3mr^0sWyqVl-#~;O5)bB2b>nXDjUc$v`1BR0~n1h*Dcn@+ZT$`(S3xjjhSr8A3qxRI3hN>Ubf1usS+) zcPRS77`SEKi_AqdwKWqUgbRryQo_RbB%5*b>xk7^R$ESPnY+y3+e*@#eQ(Aydhy)U z9ff0MP3dBav3x`VM0t4AV%bL{{Vbw)O~=ZsiRt)(za+PVReZJ3>T%r z1cT4_d_c`RHIl5tma?*_N-V><(&v7L;8^kaVnbaCO)KlL`c916sS#l$bUfb%`#;^( z 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

+ng*`7Le)vSM=0?&rqDHM(U6RMt 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∾d^u#kU}69z0cu>yTR{kOr|A~hO0Af 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

Date: Sat, 16 Feb 2019 09:56:15 +0100 Subject: [PATCH 16/31] added option to make machines public --- functions.lua | 42 ++++++++++++++++++++++++++++++++++++++ init.lua | 1 + locale/de.txt | 12 +++++++++++ locale/template.txt | 22 +++++++++++++++----- nodes_straw.lua | 49 ++++++++++++++++++++++++--------------------- 5 files changed, 98 insertions(+), 28 deletions(-) create mode 100644 functions.lua diff --git a/functions.lua b/functions.lua new file mode 100644 index 0000000..81d88bc --- /dev/null +++ b/functions.lua @@ -0,0 +1,42 @@ + +local S = cottages.S + +--- if no owner is set, all players may use the node; else only the owner +cottages.player_can_use = function( meta, player ) + if( not( player) or not( meta )) then + return false; + end + local pname = player:get_player_name(); + local owner = meta:get_string('owner' ); + local public = meta:get_string('public') + if( not(owner) or owner=="" or owner==pname or public=="public") then + return true; + end + return false; +end + + +-- call this in on_receive_fields and add suitable buttons in order +-- to switch between public and private use +cottages.switch_public = function(pos, formname, fields, sender, name_of_the_thing) + -- switch between public and private + local meta = minetest.get_meta(pos) + local public = meta:get_string("public") + local owner = meta:get_string("owner") + if( sender and sender:get_player_name() == owner and fields.public) then + if( public ~= "public") then + meta:set_string("public", "public") + meta:set_string("infotext", + S("Public "..name_of_the_thing.." (owned by %s)"):format(owner)) + minetest.chat_send_player(owner, + S("Your "..name_of_the_thing.." can now be used by other players as well.")) + else + meta:set_string("public", "") + meta:set_string("infotext", + S("Private "..name_of_the_thing.." (owned by %s)"):format(owner)) + minetest.chat_send_player(owner, + S("Your "..name_of_the_thing.." can only be used by yourself.")) + end + return true + end +end diff --git a/init.lua b/init.lua index a2a4751..29227a9 100644 --- a/init.lua +++ b/init.lua @@ -57,6 +57,7 @@ cottages.handmill_product[ 'default:coal_lump'] = 'dye:black 6'; cottages.handmill_max_per_turn = 20; cottages.handmill_min_per_turn = 0; +dofile(minetest.get_modpath("cottages").."/functions.lua"); -- uncomment parts you do not want dofile(minetest.get_modpath("cottages").."/nodes_furniture.lua"); diff --git a/locale/de.txt b/locale/de.txt index 9677a3b..8ff2979 100644 --- a/locale/de.txt +++ b/locale/de.txt @@ -109,6 +109,8 @@ straw = Stroh threshing floor = Dreschboden Threshing floor = Dreschboden Threshing floor (owned by %s) = Dreschboden (gehoert %s) +Public threshing floor (owned by %s) = Öffentlicher Dreschboden (gehoert %s) +Private threshing floor (owned by %s) = Privater Dreschboden (gehoert %s) Harvested wheat: = Geernteter Weizen Straw: = Stroh Seeds: = Koerner @@ -120,6 +122,8 @@ You have threshed the last %s wheat. = Du hast die letzten %s Weizenaehren gedr mill, powered by punching = Muehle, durch Schlagen antreiben Mill, powered by punching = Muehle, durch Schlagen antreiben Mill, powered by punching (owned by %s) = Muehle, durch Schlagen antreiben (gehoert %s) +Public mill, powered by punching (owned by %s) = Öffentliche Muehle, durch Schlagen antreiben (gehoert %s) +Private mill, powered by punching (owned by %s) = Private Muehle, durch Schlagen antreiben (gehoert %s) Wheat seeds: = Weizenkoerner Flour: = Mehl Mill = Muehle @@ -128,3 +132,11 @@ Punch this hand-driven mill = Schlage auf diese handbetriebene Muehle to convert wheat seeds into flour. = um Weizenkoerner in Mehl umzuwandeln. You have grinded %s wheat seeds (%s are left). = Du hast %s Weizenkoerner gemahlen (%s bleiben uebrig). You have grinded the last %s wheat seeds. = Du hast die letzten %s Weizenkoerner gemahlen. + +Your threshing floor can now be used by other players as well. = Dein Dreschboden kann jetzt auch von anderen Spielern benutzt werden. +Your mill, powered by punching can now be used by other players as well. = Deine Mühle kann jetzt auch von anderen Spielern benutzt werden. + +Your threshing floor can only be used by yourself. = Dein Dreschboden kann nur noch von dir benutzt werden. +Your mill, powered by punching can only be used by yourself. = Deine Mühle kann nur noch von dir benutzt werden. + +Public? = Öffentlich? diff --git a/locale/template.txt b/locale/template.txt index cbc6990..36b3f87 100644 --- a/locale/template.txt +++ b/locale/template.txt @@ -105,9 +105,11 @@ Reet for thatching = layer of straw = straw bale = straw = -threshing floor = -Threshing floor = -Threshing floor (owned by %s) = +threshing floor = +Threshing floor = +Threshing floor (owned by %s) = +Public threshing floor (owned by %s) = +Private threshing floor (owned by %s) = Harvested wheat: = Straw: = Seeds: = @@ -117,8 +119,10 @@ to get straw and seeds from wheat. = You have threshed %s wheat (%s are left). = You have threshed the last %s wheat. = mill, powered by punching = -Mill, powered by punching = -Mill, powered by punching (owned by %s) = +Mill, powered by punching = +Mill, powered by punching (owned by %s) = +Public mill, powered by punching (owned by %s) = +Private mill, powered by punching (owned by %s) = Wheat seeds: = Flour: = Mill = @@ -127,3 +131,11 @@ Punch this hand-driven mill = to convert wheat seeds into flour. = You have grinded %s wheat seeds (%s are left). = You have grinded the last %s wheat seeds. = + +Your threshing floor can now be used by other players as well. = +Your mill, powered by punching can now be used by other players as well. = + +Your threshing floor can only be used by yourself. = +Your mill, powered by punching can only be used by yourself. = + +Public? = diff --git a/nodes_straw.lua b/nodes_straw.lua index c19b869..ff30bf8 100644 --- a/nodes_straw.lua +++ b/nodes_straw.lua @@ -6,18 +6,6 @@ local S = cottages.S -local cottages_can_use = function( meta, player ) - if( not( player) or not( meta )) then - return false; - end - local pname = player:get_player_name(); - local owner = meta:get_string('owner' ); - if( not(owner) or owner=="" or owner==pname ) then - return true; - end - return false; -end - -- an even simpler from of bed - usually for animals -- it is a nodebox and not wallmounted because that makes it easier to replace beds with straw mats @@ -91,6 +79,7 @@ local cottages_formspec_treshing_floor = "size[8,8]".. "image[1.5,0;1,1;"..cottages.texture_stick.."]".. "image[0,1;1,1;farming_wheat.png]".. + "button_exit[6.8,0.0;1.5,0.5;public;"..S("Public?").."]".. "list[current_name;harvest;1,1;2,1;]".. "list[current_name;straw;5,0;2,2;]".. "list[current_name;seeds;5,2;2,2;]".. @@ -109,7 +98,8 @@ minetest.register_node("cottages:threshing_floor", { tiles = {"cottages_junglewood.png^farming_wheat.png","cottages_junglewood.png","cottages_junglewood.png^"..cottages.texture_stick}, paramtype = "light", paramtype2 = "facedir", - groups = {cracky=2}, + -- can be digged with axe and pick + groups = {cracky=2, choppy=2}, is_ground_content = false, node_box = { type = "fixed", @@ -131,23 +121,29 @@ minetest.register_node("cottages:threshing_floor", { }, on_construct = function(pos) local meta = minetest.get_meta(pos); - meta:set_string("infotext", S("Threshing floor")); + meta:set_string("infotext", S("Public threshing floor")); local inv = meta:get_inventory(); inv:set_size("harvest", 2); inv:set_size("straw", 4); inv:set_size("seeds", 4); meta:set_string("formspec", cottages_formspec_treshing_floor ); + meta:set_string("public", "public") end, after_place_node = function(pos, placer) local meta = minetest.get_meta(pos); meta:set_string("owner", placer:get_player_name() or ""); - meta:set_string("infotext", S("Threshing floor (owned by %s)"):format(meta:get_string("owner") or "")); + meta:set_string("infotext", S("Private threshing floor (owned by %s)"):format(meta:get_string("owner") or "")); meta:set_string("formspec", cottages_formspec_treshing_floor.. "label[2.5,-0.5;"..S("Owner: %s"):format(meta:get_string("owner") or "").."]" ); + meta:set_string("public", "private") end, + on_receive_fields = function(pos, formname, fields, sender) + cottages.switch_public(pos, formname, fields, sender, 'threshing floor') + end, + can_dig = function(pos,player) local meta = minetest.get_meta(pos); @@ -167,7 +163,7 @@ minetest.register_node("cottages:threshing_floor", { allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) local meta = minetest.get_meta(pos) - if( not( cottages_can_use( meta, player ))) then + if( not( cottages.player_can_use( meta, player ))) then return 0 end return count; @@ -182,7 +178,7 @@ minetest.register_node("cottages:threshing_floor", { return 0; end - if( not( cottages_can_use( meta, player ))) then + if( not( cottages.player_can_use( meta, player ))) then return 0 end return stack:get_count() @@ -190,7 +186,7 @@ minetest.register_node("cottages:threshing_floor", { allow_metadata_inventory_take = function(pos, listname, index, stack, player) local meta = minetest.get_meta(pos) - if( not( cottages_can_use( meta, player ))) then + if( not( cottages.player_can_use( meta, player ))) then return 0 end return stack:get_count() @@ -348,6 +344,7 @@ minetest.register_node("cottages:threshing_floor", { local cottages_handmill_formspec = "size[8,8]".. "image[0,1;1,1;"..cottages.texture_wheat_seed.."]".. + "button_exit[6.0,0.0;1.5,0.5;public;"..S("Public?").."]".. "list[current_name;seeds;1,1;1,1;]".. "list[current_name;flour;5,1;2,2;]".. "label[0,0.5;"..S("Wheat seeds:").."]".. @@ -380,22 +377,28 @@ minetest.register_node("cottages:handmill", { }, on_construct = function(pos) local meta = minetest.get_meta(pos); - meta:set_string("infotext", S("Mill, powered by punching")); + meta:set_string("infotext", S("Public mill, powered by punching")); local inv = meta:get_inventory(); inv:set_size("seeds", 1); inv:set_size("flour", 4); meta:set_string("formspec", cottages_handmill_formspec ); + meta:set_string("public", "public") end, after_place_node = function(pos, placer) local meta = minetest.get_meta(pos); meta:set_string("owner", placer:get_player_name() or ""); - meta:set_string("infotext", S("Mill, powered by punching (owned by %s)"):format(meta:get_string("owner") or "")); + meta:set_string("infotext", S("Private mill, powered by punching (owned by %s)"):format(meta:get_string("owner") or "")); meta:set_string("formspec", cottages_handmill_formspec.. "label[2.5,-0.5;"..S("Owner: %s"):format(meta:get_string('owner') or "").."]" ); + meta:set_string("public", "private") end, + on_receive_fields = function(pos, formname, fields, sender) + cottages.switch_public(pos, formname, fields, sender, 'mill, powered by punching') + end, + can_dig = function(pos,player) local meta = minetest.get_meta(pos); @@ -414,7 +417,7 @@ minetest.register_node("cottages:handmill", { allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) local meta = minetest.get_meta(pos) - if( not( cottages_can_use( meta, player ))) then + if( not( cottages.player_can_use( meta, player ))) then return 0 end return count; @@ -428,7 +431,7 @@ minetest.register_node("cottages:handmill", { return 0; end - if( not( cottages_can_use( meta, player ))) then + if( not( cottages.player_can_use( meta, player ))) then return 0 end return stack:get_count() @@ -436,7 +439,7 @@ minetest.register_node("cottages:handmill", { allow_metadata_inventory_take = function(pos, listname, index, stack, player) local meta = minetest.get_meta(pos) - if( not( cottages_can_use( meta, player ))) then + if( not( cottages.player_can_use( meta, player ))) then return 0 end return stack:get_count() From 6c0a48c7ad70a566970fa0f575f0f6eeb0c89dfc Mon Sep 17 00:00:00 2001 From: Sokomine Date: Sat, 16 Feb 2019 10:16:40 +0100 Subject: [PATCH 17/31] added tree trunk well --- init.lua | 1 + locale/de.txt | 14 +- locale/template.txt | 7 + nodes_water.lua | 312 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 331 insertions(+), 3 deletions(-) create mode 100644 nodes_water.lua diff --git a/init.lua b/init.lua index 29227a9..df76b0f 100644 --- a/init.lua +++ b/init.lua @@ -70,6 +70,7 @@ dofile(minetest.get_modpath("cottages").."/nodes_fences.lua"); dofile(minetest.get_modpath("cottages").."/nodes_roof.lua"); dofile(minetest.get_modpath("cottages").."/nodes_barrel.lua"); dofile(minetest.get_modpath("cottages").."/nodes_mining.lua"); +dofile(minetest.get_modpath("cottages").."/nodes_water.lua"); --dofile(minetest.get_modpath("cottages").."/nodes_chests.lua"); -- this is only required and useful if you run versions of the random_buildings mod where the nodes where defined inside that mod diff --git a/locale/de.txt b/locale/de.txt index 8ff2979..efee145 100644 --- a/locale/de.txt +++ b/locale/de.txt @@ -136,7 +136,15 @@ You have grinded the last %s wheat seeds. = Du hast die letzten %s Weizenkoerner Your threshing floor can now be used by other players as well. = Dein Dreschboden kann jetzt auch von anderen Spielern benutzt werden. Your mill, powered by punching can now be used by other players as well. = Deine Mühle kann jetzt auch von anderen Spielern benutzt werden. -Your threshing floor can only be used by yourself. = Dein Dreschboden kann nur noch von dir benutzt werden. -Your mill, powered by punching can only be used by yourself. = Deine Mühle kann nur noch von dir benutzt werden. +Your threshing floor can only be used by yourself. = Dein Dreschboden kann jetzt nur noch von dir selbst benutzt werden. +Your mill, powered by punching can only be used by yourself. = Deine Mühle kann jetzt nur noch von dir selbst benutzt werden. -Public? = Öffentlich? +Public? = Oeffentlich? + +Public tree trunk well = Oeffentlicher Baumstammbrunnen +Public tree trunk well (owned by %s) = Oeffentlicher Baumstammbrunnen (gehoert %s) +Private tree trunk well (owned by %s) = Privater Baumstammbrunnen (gehoert %s) +This tree trunk well is owned by %s. You can't use it. = Dieser Baumstammbrunnen gehoert %s. Du kannst ihn leider nicht benutzen. +Sorry. You have no room for the bucket. Please free some space in your inventory first! = Du hast leider keinen Platz mehr fuer den Eimer. Bitte schaffe erst ein wenig Platz! +Your tree trunk well can now be used by other players as well. = Dein Baumstammbrunnen kann jetzt auch von anderen Spielern benutzt werdn. +Your tree trunk well can only be used by yourself. = Dein Baumstammbrunnen kann jetzt nur noch von dir selbst benutzt werdn. diff --git a/locale/template.txt b/locale/template.txt index 36b3f87..6c6dd66 100644 --- a/locale/template.txt +++ b/locale/template.txt @@ -139,3 +139,10 @@ Your threshing floor can only be used by yourself. = Your mill, powered by punching can only be used by yourself. = Public? = + +Public tree trunk well = +Public tree trunk well (owned by %s) = +This tree trunk well is owned by %s. You can't use it. = +Sorry. You have no room for the bucket. Please free some space in your inventory first! = +Your tree trunk well can now be used by other players as well. = +Your tree trunk well can only be used by yourself. = diff --git a/nodes_water.lua b/nodes_water.lua new file mode 100644 index 0000000..09f44ec --- /dev/null +++ b/nodes_water.lua @@ -0,0 +1,312 @@ + +-- TODO: play sound while working +-- TODO: play sound when emptying a bucket +-- TODO: store correct bucket texture when loading the world anew +-- TODO: show particles when running? distinguish between running/idle state? (with punch?) + +-- well for getting water +-- * has some storage space for buckets (filled with water, river water or empty) +-- * only the owner can use the bucket store and the well +-- * the bucket will be added as an entity and slowly rotate; +-- once filled, the texture of the bucket is changed +-- * full (water or river water) buckets can be emptied +-- * by default public; but can also be made private + + +-- how many seconds does it take to fill a bucket? +cottages.water_fill_time = 10 + + +-- code taken from the itemframes mod in homedecor +-- (the relevant functions are sadly private there and thus cannot be reused) +local tmp = {} +minetest.register_entity("cottages:bucket_entity",{ + hp_max = 1, + visual="wielditem", + visual_size={x = 0.33, y = 0.33}, + collisionbox = {0, 0, 0, 0, 0, 0}, + physical = false, + textures = {"air"}, + on_activate = function(self, staticdata) + if tmp.nodename ~= nil and tmp.texture ~= nil then + self.nodename = tmp.nodename + tmp.nodename = nil + self.texture = tmp.texture + tmp.texture = nil + else + if staticdata ~= nil and staticdata ~= "" then + local data = staticdata:split(';') + if data and data[1] and data[2] then + self.nodename = data[1] + self.texture = data[2] + end + end + end + if self.texture ~= nil then + self.object:set_properties({textures = {self.texture}}) + end + self.object:set_properties({automatic_rotate = 1}) + if self.texture ~= nil and self.nodename ~= nil then + local entity_pos = vector.round(self.object:get_pos()) + local objs = minetest.get_objects_inside_radius(entity_pos, 0.5) + for _, obj in ipairs(objs) do + if obj ~= self.object and + obj:get_luaentity() and + obj:get_luaentity().name == "cottages:bucket_entity" and + obj:get_luaentity().nodename == self.nodename and + obj:get_properties() and + obj:get_properties().textures and + obj:get_properties().textures[1] == self.texture then + minetest.log("action","[cottages] Removing extra " .. + self.texture .. " found in " .. self.nodename .. " at " .. + minetest.pos_to_string(entity_pos)) + self.object:remove() + break + end + end + end + end, + get_staticdata = function(self) + if self.nodename ~= nil and self.texture ~= nil then + return self.nodename .. ';' .. self.texture + end + return "" + end, +}) + +cottages.water_gen_fill_bucket = function(pos) + if( not(pos)) then + return + end + local meta = minetest.get_meta(pos) + local bucket = meta:get_string("bucket") + -- nothing to do + if( not(bucket) or bucket ~= "bucket:bucket_empty") then + return + end + -- abort if the water has not been running long enough + -- (the player may have removed a bucket before it was full) + start = meta:get_string("fillstarttime") + if( (minetest.get_us_time()/1000000) - tonumber(start) < cottages.water_fill_time -2) then + return + end + + -- the bucket has been filled + meta:set_string("bucket", "bucket:bucket_river_water") + + -- change the texture of the bucket to that of one filled with river water + local objs = nil + objs = minetest.get_objects_inside_radius(pos, .5) + if objs then + for _, obj in ipairs(objs) do + if obj and obj:get_luaentity() and obj:get_luaentity().name == "cottages:bucket_entity" then + obj:set_properties( { textures = { "bucket:bucket_river_water" }}) + obj:get_luaentity().nodename = "bucket:bucket_river_water" + obj:get_luaentity().texture = "bucket:bucket_river_water" + end + end + end +end + + +minetest.register_node("cottages:water_gen", { + description = "Tree Trunk Well", + tiles = {"default_tree_top.png", "default_tree.png^[transformR90", "default_tree.png^[transformR90"}, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = false, + groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2}, + sounds = default.node_sound_wood_defaults(), + node_box = { + type = "fixed", + fixed = { + -- floor of water bassin + {-0.5, -0.5+(3/16), -0.5, 0.5, -0.5+(4/16), 0.5}, + -- walls + {-0.5, -0.5+(3/16), -0.5, 0.5, (4/16), -0.5+(2/16)}, + {-0.5, -0.5+(3/16), -0.5, -0.5+(2/16), (4/16), 0.5}, + { 0.5, -0.5+(3/16), 0.5, 0.5-(2/16), (4/16), -0.5}, + { 0.5, -0.5+(3/16), 0.5, -0.5+(2/16), (4/16), 0.5-(2/16)}, + -- feet + {-0.5+(3/16), -0.5, -0.5+(3/16), -0.5+(6/16), -0.5+(3/16), 0.5-(3/16)}, + { 0.5-(3/16), -0.5, -0.5+(3/16), 0.5-(6/16), -0.5+(3/16), 0.5-(3/16)}, + -- real pump + { 0.5-(4/16), -0.5, -(2/16), 0.5, 0.5+(4/16), (2/16)}, + -- water pipe inside wooden stem + { 0.5-(8/16), 0.5+(1/16), -(1/16), 0.5, 0.5+(3/16), (1/16)}, + -- where the water comes out + { 0.5-(15/32), 0.5, -(1/32), 0.5-(12/32), 0.5+(1/16), (1/32)}, + }, + }, + selection_box = { + type = "fixed", + fixed = { -0.5, -0.5, -0.5, 0.5, 0.5+(4/16), 0.5 } + }, + on_construct = function(pos) + local meta = minetest.get_meta(pos) + local spos = pos.x .. "," .. pos.y .. "," .. pos.z + meta:set_string("formspec", + "size[8,9]" .. + "label[3.0,0.0;Tree trunk well]".. + "label[1.5,0.7;Punch the well while wielding an empty bucket.]".. + "label[1.5,1.0;Your bucket will slowly be filled with river water.]".. + "label[1.5,1.3;Punch again to get the bucket back when it is full.]".. + "label[1.0,2.9;Internal bucket storage (passive storage only):]".. + "item_image[0.2,0.7;1.0,1.0;bucket:bucket_empty]".. + "item_image[0.2,1.7;1.0,1.0;bucket:bucket_river_water]".. + "label[1.5,1.9;Punch well with full water bucket in order to empty bucket.]".. + "button_exit[6.0,0.0;2,0.5;public;"..S("Public?").."]".. + "list[nodemeta:" .. spos .. ";main;1,3.3;8,1;]" .. + "list[current_player;main;0,4.85;8,1;]" .. + "list[current_player;main;0,6.08;8,3;8]" .. + "listring[nodemeta:" .. spos .. ";main]" .. + "listring[current_player;main]") + local inv = meta:get_inventory() + inv:set_size('main', 6) + meta:set_string("infotext", S("Public tree trunk well")) -- (punch with empty bucket to fill bucket)") + end, + after_place_node = function(pos, placer) + local meta = minetest.get_meta(pos) + meta:set_string("owner", placer:get_player_name() or "") + meta:set_string("infotext", S("Public tree trunk well (owned by %s)"):format(meta:get_string("owner"))) + -- no bucket loaded + meta:set_string("bucket", "") + meta:set_string("public", "public") + end, + can_dig = function(pos,player) + local meta = minetest.get_meta(pos); + local inv = meta:get_inventory() + return inv:is_empty("main") and + default.can_interact_with_node(player, pos) + end, + -- no inventory move allowed + allow_metadata_inventory_move = function(pos, from_list, from_index, + to_list, to_index, count, player) + return 0 + end, + allow_metadata_inventory_put = function(pos, listname, index, stack, player) + local meta = minetest.get_meta(pos) + if not(stack) or not cottages.player_can_use(meta, player:get_player_name()) then + return 0 + end + local inv = meta:get_inventory() + -- only for buckets + local sname = stack:get_name() + if( sname ~= "bucket:bucket_empty" + and sname ~= "bucket:bucket_water" + and sname ~= "bucket:bucket_river_water") then + return 0 + end + return stack:get_count() + end, + allow_metadata_inventory_take = function(pos, listname, index, stack, player) + if not(cottages.player_can_use(meta:get_string(pos), player:get_player_name())) then + return 0 + end + return stack:get_count() + end, + on_blast = function() end, + on_receive_fields = function(pos, formname, fields, sender) + cottages.switch_public(pos, formname, fields, sender, 'tree trunk well') + end, + -- punch to place and retrieve bucket + on_punch = function(pos, node, puncher) + if( not( pos ) or not( node ) or not( puncher )) then + return + end + -- only the owner can use the well + local name = puncher:get_player_name() + local meta = minetest.get_meta(pos) + local owner = meta:get_string("owner") + local public = meta:get_string("public") + if( name ~= owner and public~="public") then + minetest.chat_send_player( name, S("This tree trunk well is owned by %s. You can't use it."):format(name)) + return + end + + -- we will either add or take from the players inventory + local pinv = puncher:get_inventory() + + -- is the well working on something? (either empty or full bucket) + local bucket = meta:get_string("bucket") + -- there is a bucket loaded - either empty or full + if( bucket and bucket~="") then + if( not(pinv:room_for_item("main", bucket))) then + minetest.chat_send_player( puncher:get_player_name(), + S("Sorry. You have no room for the bucket. Please free some ".. + "space in your inventory first!")) + return + end + end + + -- remove the old entity (either a bucket will be placed now or a bucket taken) + local objs = nil + objs = minetest.get_objects_inside_radius(pos, .5) + if objs then + for _, obj in ipairs(objs) do + if obj and obj:get_luaentity() and obj:get_luaentity().name == "cottages:bucket_entity" then + obj:remove() + end + end + end + + -- the player gets the bucket (either empty or full) into his inventory + if( bucket and bucket ~= "") then + pinv:add_item("main", bucket ) + meta:set_string("bucket", "") + -- we are done + return + end + + -- punching with empty bucket will put that bucket into the well (as an entity) + -- and will slowly fill it + local wielded = puncher:get_wielded_item() + if( wielded + and wielded:get_name() + and wielded:get_name() == "bucket:bucket_empty") then + -- remove the bucket from the players inventory + pinv:remove_item( "main", "bucket:bucket_empty") + -- remember that we got a bucket loaded + meta:set_string("bucket", "bucket:bucket_empty") + -- create the entity + tmp.nodename = "bucket:bucket_empty" + -- TODO: add a special texture with a handle for the bucket here + tmp.texture = "bucket:bucket_empty" + local e = minetest.add_entity({x=pos.x,y=pos.y+(4/16),z=pos.z},"cottages:bucket_entity") + -- fill the bucket with water + minetest.after(cottages.water_fill_time, cottages.water_gen_fill_bucket, pos) + -- the bucket will only be filled if the water ran long enough + meta:set_string("fillstarttime", tostring(minetest.get_us_time()/1000000)) + return; + end + -- buckets can also be emptied here + if( wielded + and wielded:get_name() + and (wielded:get_name() == "bucket:bucket_water" + or wielded:get_name() == "bucket:bucket_river_water") + and (pinv:room_for_item("main", "bucket:bucket_empty"))) then + -- remove the full bucket from the players inventory + pinv:remove_item( "main", wielded:get_name()) + -- add empty bucket + pinv:add_item("main", "bucket:bucket_empty") + -- TODO: play diffrent sound when pouring a bucket + return; + end + + -- else check if there is a bucket that can be retrieved + meta:set_string("bucket","") + end, +}) + + +-- a well (will fill water buckets) crafted from wooden materials +minetest.register_craft({ + output = 'cottages:water_gen', + recipe = { + {'default:stick', '', ''}, + {'default:tree', 'bucket:bucket_empty', 'bucket:bucket_empty'}, + {'default:tree', 'default:tree', 'default:tree'}, + } +}) + From bd257ee16edc57ba1e65df42a0a596e1fa7cb801 Mon Sep 17 00:00:00 2001 From: Sokomine Date: Sun, 17 Feb 2019 14:05:40 +0100 Subject: [PATCH 18/31] added pitchfork and hay --- init.lua | 3 + locale/de.txt | 7 +++ locale/template.txt | 7 +++ nodes_hay.lua | 133 ++++++++++++++++++++++++++++++++++++++++++++ nodes_pitchfork.lua | 112 +++++++++++++++++++++++++++++++++++++ nodes_straw.lua | 6 +- 6 files changed, 265 insertions(+), 3 deletions(-) create mode 100644 nodes_hay.lua create mode 100644 nodes_pitchfork.lua diff --git a/init.lua b/init.lua index df76b0f..518503c 100644 --- a/init.lua +++ b/init.lua @@ -63,7 +63,10 @@ dofile(minetest.get_modpath("cottages").."/functions.lua"); dofile(minetest.get_modpath("cottages").."/nodes_furniture.lua"); dofile(minetest.get_modpath("cottages").."/nodes_historic.lua"); dofile(minetest.get_modpath("cottages").."/nodes_feldweg.lua"); +-- allows to dig hay and straw fast +dofile(minetest.get_modpath("cottages").."/nodes_pitchfork.lua"); dofile(minetest.get_modpath("cottages").."/nodes_straw.lua"); +dofile(minetest.get_modpath("cottages").."/nodes_hay.lua"); dofile(minetest.get_modpath("cottages").."/nodes_anvil.lua"); dofile(minetest.get_modpath("cottages").."/nodes_doorlike.lua"); dofile(minetest.get_modpath("cottages").."/nodes_fences.lua"); diff --git a/locale/de.txt b/locale/de.txt index efee145..d8f8207 100644 --- a/locale/de.txt +++ b/locale/de.txt @@ -148,3 +148,10 @@ This tree trunk well is owned by %s. You can't use it. = Dieser Baumstammbrunnen Sorry. You have no room for the bucket. Please free some space in your inventory first! = Du hast leider keinen Platz mehr fuer den Eimer. Bitte schaffe erst ein wenig Platz! Your tree trunk well can now be used by other players as well. = Dein Baumstammbrunnen kann jetzt auch von anderen Spielern benutzt werdn. Your tree trunk well can only be used by yourself. = Dein Baumstammbrunnen kann jetzt nur noch von dir selbst benutzt werdn. + +pitchfork (dig dirt with grass to get hay, place with right-click) = Heugabel (grabe Erde mit Grass um Heu zu bekommen; Rechts-Klick zum Platzieren) +pitchfork (for hay and straw) = Heugabel (fuer Heu und Stroh) + +Some hay = Etwas Heu +Hay = Heu +Hay bale = Heuballen diff --git a/locale/template.txt b/locale/template.txt index 6c6dd66..40c24d3 100644 --- a/locale/template.txt +++ b/locale/template.txt @@ -146,3 +146,10 @@ This tree trunk well is owned by %s. You can't use it. = Sorry. You have no room for the bucket. Please free some space in your inventory first! = Your tree trunk well can now be used by other players as well. = Your tree trunk well can only be used by yourself. = + +pitchfork (dig dirt with grass to get hay, place with right-click) = +pitchfork (for hay and straw) = + +Some hay = +Hay = +Hay bale = diff --git a/nodes_hay.lua b/nodes_hay.lua new file mode 100644 index 0000000..4576c53 --- /dev/null +++ b/nodes_hay.lua @@ -0,0 +1,133 @@ +-- contains hay_mat, hay and hay bale +-- (gives the pitchfork some work) + +-- If default:dirt_with_grass is digged while wielding a pitchfork, it will +-- turn into dirt and get some hay placed above it. +-- The hay will disappear (decay) after a couple of minutes. +if( minetest.registered_items["default:dirt_with_grass"] + and minetest.registered_tools["cottages:pitchfork"]) then + minetest.override_item("default:dirt_with_grass", { + after_dig_node = function(pos, oldnode, oldmetadata, digger) + if( not( pos ) or not( digger )) then + return + end + local wielded = digger:get_wielded_item() + if( not( wielded ) + or not( wielded:get_name() ) + or (wielded:get_name()~="cottages:pitchfork")) then + return + end + + local pos_above = {x=pos.x, y=pos.y+1, z=pos.z} + local node_above = minetest.get_node_or_nil( pos_above) + if( not(node_above) or not(node_above.name) or node_above.name ~= "air" ) then + return nil + end + minetest.swap_node( pos, {name="default:dirt"}) + minetest.add_node( pos_above, {name="cottages:hay_mat", param2=math.random(2,25)}) + -- start a node timer so that the hay will decay after some time + local timer = minetest.get_node_timer(pos_above) + if not timer:is_started() then + timer:start(math.random(60, 300)) + end + -- TODO: prevent dirt from beeing multiplied this way (that is: give no dirt!) + return + end, + }) +end + + + +-- more comparable to the straw mat than to a hay bale +-- (can be created by digging dirt with grass with the pitchfork) +minetest.register_node("cottages:hay_mat", { + drawtype = "nodebox", + paramtype2 = "leveled", + description = S("Some hay"), + tiles = {"cottages_darkage_straw.png^[multiply:#88BB88"}, + groups = {hay=3, snappy=2, oddly_breakable_by_hand=2, flammable=3}, + sounds = default.node_sound_wood_defaults, + -- the bale is slightly smaller than a full node + is_ground_content = false, + node_box = { + type = "leveled", --"fixed", + fixed = { + {-0.5,-0.5,-0.5, 0.5, 0.5, 0.5}, + } + }, + -- make sure a placed hay block looks halfway reasonable + after_place_node = function(pos, placer, itemstack, pointed_thing) + minetest.swap_node( pos, {name="cottages:hay_mat", param2=math.random(2,25)}) + end, + on_timer = function(pos, elapsed) + local node = minetest.get_node(pos) + if( node and node.name=="cottages:hay_mat") then + minetest.remove_node(pos) + minetest.check_for_falling(pos) + end + end, +}) + +-- hay block, similar to straw block +minetest.register_node("cottages:hay", { + description = S("Hay"), + tiles = {"cottages_darkage_straw.png^[multiply:#88BB88"}, + groups = {hay=3, snappy=2, oddly_breakable_by_hand=2, flammable=3}, + sounds = default.node_sound_wood_defaults, + is_ground_content = false, +}) + + +-- hay bales for hungry animals +minetest.register_node("cottages:hay_bale", { + drawtype = "nodebox", + description = S("Hay bale"), + tiles = {"cottages_darkage_straw_bale.png^[multiply:#88BB88"}, + paramtype = "light", + groups = {hay=3, snappy=2, oddly_breakable_by_hand=2, flammable=3}, + sounds = default.node_sound_wood_defaults, + -- the bale is slightly smaller than a full node + node_box = { + type = "fixed", + fixed = { + {-0.45, -0.5,-0.45, 0.45, 0.45, 0.45}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.45, -0.5,-0.45, 0.45, 0.45, 0.45}, + } + }, + is_ground_content = false, +}) + + +-- +-- craft recipes +-- +minetest.register_craft({ + output = "cottages:hay_mat 9", + recipe = { + {"cottages:hay"}, + }, +}) + +minetest.register_craft({ + output = "cottages:hay", + recipe = { + {"cottages:hay_mat", "cottages:hay_mat", "cottages:hay_mat"}, + {"cottages:hay_mat", "cottages:hay_mat", "cottages:hay_mat"}, + {"cottages:hay_mat", "cottages:hay_mat", "cottages:hay_mat"}, + }, +}) + +minetest.register_craft({ + output = "cottages:hay", + recipe = {{"cottages:hay_bale"}}, +}) + +minetest.register_craft({ + output = "cottages:hay_bale", + recipe = {{"cottages:hay"}}, +}) diff --git a/nodes_pitchfork.lua b/nodes_pitchfork.lua new file mode 100644 index 0000000..81ff39c --- /dev/null +++ b/nodes_pitchfork.lua @@ -0,0 +1,112 @@ + +-- fast tool for digging nodes with the group "hay"; +-- can also be placed as a node + +-- the straw node from default and similar nodes can be digged with the pitchfork as well +local add_hay_group = {"farming:straw", "dryplants:reed", "darkage:straw_bale"} +for i, v in ipairs(add_hay_group) do + if( minetest.registered_items[v]) then + new_groups = minetest.registered_items[v].groups + new_groups.hay = 3 + minetest.override_item(v, {groups = new_groups}) + end +end + +-- creates hay when digging dirt_with_grass (thanks to the override above); +-- useful for digging hay and straw +-- can be placed as a node +minetest.register_tool("cottages:pitchfork", { + description = S("pitchfork (dig dirt with grass to get hay, place with right-click)"), + groups = {}, + inventory_image = "default_wood.png", -- TODO + wield_image = "", + wield_scale = {x=1,y=1,z=1}, + stack_max = 1, + liquids_pointable = false, + -- very useful for digging hay, straw and bales of those materials + tool_capabilities = { + full_punch_interval = 1.0, + max_drop_level=1, + groupcaps={ + fleshy={times={[2]=0.80, [3]=0.40}, maxwear=0.05, maxlevel=1, uses=40}, + snappy={times={[2]=0.80, [3]=0.40}, maxwear=0.05, maxlevel=1, uses=40}, + hay ={times={[2]=0.10, [3]=0.10}, maxwear=0.05, maxlevel=1, uses=40}, + }, + damage_groups = {fleshy=5}, -- slightly stronger than a stone sword + }, + sound = {breaks = "default_tool_breaks"}, + -- place the pitchfork somewhere + on_place = function(itemstack, placer, pointed_thing) + if( placer == nil or pointed_thing == nil or pointed_thing.type ~= "node") then + return nil + end + local pos = minetest.get_pointed_thing_position( pointed_thing, 1 ) + local node = minetest.get_node_or_nil( pos ) + if( node == nil or not(node.name) or node.name ~= "air") then + return nil + end + if minetest.is_protected(pos, placer:get_player_name()) then + return nil + end + minetest.rotate_and_place(ItemStack("cottages:pitchfork_placed"), placer, pointed_thing) + -- did the placing succeed? + local nnode = minetest.get_node(pos) + if( not(nnode) or not(nnode.name) or nnode.name ~= "cottages:pitchfork_placed") then + return nil + end + local meta = minetest.get_meta(pos) + meta:set_int( "wear", itemstack:get_wear()) + meta:set_string("infotext", S("pitchfork (for hay and straw)")) + -- the tool has been placed; consume it + return ItemStack("") + end, +}) + + +-- a ptichfork placed somewhere +minetest.register_node("cottages:pitchfork_placed", { + description = S("pitchfork (for hay and straw)"), + tiles = {"default_wood.png^[transformR90"}, --default_tree.png"}, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = false, + groups = {snappy = 2, dig_immediate = 3, falling_node = 1, attached_node = 1}, + sounds = default.node_sound_wood_defaults(), + node_box = { + type = "fixed", + fixed = { + -- handle (goes a bit into the ground) + { -(1/32), -(11/16), -(1/32), (1/32), 16/16, (1/32)}, + -- middle connection + { -(7/32), -(4/16), -(1/32), (7/32), -(2/16), (1/32)}, + -- thongs + { -(7/32), -(11/16), -(1/32), -(5/32), -(4/16), (1/32)}, + { (5/32), -(11/16), -(1/32), (7/32), -(4/16), (1/32)}, + }, + }, + selection_box = { + type = "fixed", + fixed = { -0.3, -0.5, -0.1, 0.3, 1.0, 0.1 } + }, + drop = "cottages:pitchfork", + -- perserve wear + preserve_metadata = function(pos, oldnode, oldmeta, drops) + if(oldmeta["wear"]) then + -- the first drop is the pitchfork + drops[1]:set_wear(oldmeta["wear"]) + end + end, +}) + +-- +-- craft recipes +-- +minetest.register_craft({ + output = 'cottages:pitchfork', + recipe = { + { 'default:stick','default:stick','default:stick' }, + { '','default:stick', '' }, + { '','default:stick','' }, + } +}) diff --git a/nodes_straw.lua b/nodes_straw.lua index ff30bf8..940fa3b 100644 --- a/nodes_straw.lua +++ b/nodes_straw.lua @@ -19,7 +19,7 @@ minetest.register_node("cottages:straw_mat", { paramtype = 'light', paramtype2 = "facedir", walkable = false, - groups = { snappy = 3 }, + groups = { hay = 3, snappy = 2, oddly_breakable_by_hand = 2, flammable=3 }, sounds = default.node_sound_leaves_defaults, node_box = { type = "fixed", @@ -45,7 +45,7 @@ minetest.register_node("cottages:straw_bale", { description = S("straw bale"), tiles = {"cottages_darkage_straw_bale.png"}, paramtype = "light", - groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, + groups = { hay = 3, snappy = 2, oddly_breakable_by_hand = 2, flammable=3 }, sounds = default.node_sound_wood_defaults, -- the bale is slightly smaller than a full node node_box = { @@ -68,7 +68,7 @@ minetest.register_node("cottages:straw", { drawtype = "normal", description = S("straw"), tiles = {"cottages_darkage_straw.png"}, - groups = {snappy=3,choppy=3,oddly_breakable_by_hand=3,flammable=3}, + groups = { hay = 3, snappy = 2, oddly_breakable_by_hand = 2, flammable=3 }, sounds = default.node_sound_wood_defaults, -- the bale is slightly smaller than a full node is_ground_content = false, From 479e76b8543a203bba78f3a8732403dee149c774 Mon Sep 17 00:00:00 2001 From: Sokomine Date: Sun, 17 Feb 2019 14:27:49 +0100 Subject: [PATCH 19/31] corrected bug with sounds --- init.lua | 10 ++++++++++ nodes_feldweg.lua | 32 ++++++++++++++++---------------- nodes_furniture.lua | 10 +++++----- nodes_hay.lua | 6 +++--- nodes_historic.lua | 9 ++++----- nodes_mining.lua | 2 +- nodes_pitchfork.lua | 2 +- nodes_roof.lua | 6 +++--- nodes_straw.lua | 6 +++--- nodes_water.lua | 2 +- 10 files changed, 47 insertions(+), 38 deletions(-) diff --git a/init.lua b/init.lua index 518503c..fd7f333 100644 --- a/init.lua +++ b/init.lua @@ -29,10 +29,20 @@ else cottages.S = function(s) return s end end +cottages.sounds = {} -- MineClone2 needs special treatment; default is only needed for -- crafting materials and sounds (less important) if( not( minetest.get_modpath("default"))) then default = {}; + cottages.sounds.wood = nil + cottages.sounds.dirt = nil + cottages.sounds.leaves = nil + cottages.sounds.stone = nil +else + cottages.sounds.wood = default.node_sound_wood_defaults() + cottages.sounds.dirt = default.node_sound_dirt_defaults() + cottages.sounds.stone = default.node_sound_stone_defaults() + cottages.sounds.leaves = default.node_sound_leaves_defaults() end --cottages.config_use_mesh_barrel = false; --cottages.config_use_mesh_handmill = true; diff --git a/nodes_feldweg.lua b/nodes_feldweg.lua index bb21479..bb41ce7 100644 --- a/nodes_feldweg.lua +++ b/nodes_feldweg.lua @@ -28,7 +28,7 @@ if( cottages_feldweg_mode == "simple" or cottages_feldweg_mode == "flat" ) then groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, legacy_facedir_simple = true, groups = {crumbly=3}, - sounds = default.node_sound_dirt_defaults, + sounds = cottages.sounds.dirt, is_ground_content = false, }) end @@ -47,7 +47,7 @@ if( cottages_feldweg_mode == "flat" ) then groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, legacy_facedir_simple = true, groups = {crumbly=3}, - sounds = default.node_sound_dirt_defaults, + sounds = cottages.sounds.dirt, is_ground_content = false, }) @@ -58,7 +58,7 @@ if( cottages_feldweg_mode == "flat" ) then groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, legacy_facedir_simple = true, groups = {crumbly=3}, - sounds = default.node_sound_dirt_defaults, + sounds = cottages.sounds.dirt, is_ground_content = false, }) @@ -69,7 +69,7 @@ if( cottages_feldweg_mode == "flat" ) then groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, legacy_facedir_simple = true, groups = {crumbly=3}, - sounds = default.node_sound_dirt_defaults, + sounds = cottages.sounds.dirt, is_ground_content = false, }) @@ -84,7 +84,7 @@ elseif( cottages_feldweg_mode == "nodebox" ) then roups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, legacy_facedir_simple = true, groups = {crumbly=3}, - sounds = default.node_sound_dirt_defaults, + sounds = cottages.sounds.dirt, is_ground_content = false, drawtype = "nodebox", -- top, bottom, side1, side2, inner, outer @@ -116,7 +116,7 @@ elseif( cottages_feldweg_mode == "nodebox" ) then groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, legacy_facedir_simple = true, groups = {crumbly=3}, - sounds = default.node_sound_dirt_defaults, + sounds = cottages.sounds.dirt, is_ground_content = false, drawtype = "nodebox", @@ -162,7 +162,7 @@ elseif( cottages_feldweg_mode == "nodebox" ) then groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, legacy_facedir_simple = true, groups = {crumbly=3}, - sounds = default.node_sound_dirt_defaults, + sounds = cottages.sounds.dirt, is_ground_content = false, drawtype = "nodebox", @@ -206,7 +206,7 @@ elseif( cottages_feldweg_mode == "nodebox" ) then groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, legacy_facedir_simple = true, groups = {crumbly=3}, - sounds = default.node_sound_dirt_defaults, + sounds = cottages.sounds.dirt, is_ground_content = false, drawtype = "nodebox", @@ -256,7 +256,7 @@ elseif( cottages_feldweg_mode == "mesh" ) then groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, legacy_facedir_simple = true, groups = {crumbly=3}, - sounds = default.node_sound_dirt_defaults, + sounds = cottages.sounds.dirt, is_ground_content = false, tiles = {"cottages_feldweg_end.png","default_dirt.png^default_grass_side.png", "default_dirt.png", "default_grass.png", @@ -274,7 +274,7 @@ elseif( cottages_feldweg_mode == "mesh" ) then groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, legacy_facedir_simple = true, groups = {crumbly=3}, - sounds = default.node_sound_dirt_defaults, + sounds = cottages.sounds.dirt, is_ground_content = false, tiles = {"cottages_feldweg_end.png","default_dirt.png", "default_grass.png","cottages_feldweg_surface.png", @@ -290,7 +290,7 @@ elseif( cottages_feldweg_mode == "mesh" ) then groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, legacy_facedir_simple = true, groups = {crumbly=3}, - sounds = default.node_sound_dirt_defaults, + sounds = cottages.sounds.dirt, is_ground_content = false, tiles = {"cottages_feldweg_end.png","default_dirt.png^default_grass_side.png", "default_dirt.png", "default_grass.png","cottages_feldweg_surface.png", @@ -306,7 +306,7 @@ elseif( cottages_feldweg_mode == "mesh" ) then groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, legacy_facedir_simple = true, groups = {crumbly=3}, - sounds = default.node_sound_dirt_defaults, + sounds = cottages.sounds.dirt, is_ground_content = false, tiles = {"default_dirt.png^default_grass_side.png","default_grass.png", "default_dirt.png^default_grass_side.png","cottages_feldweg_surface.png", @@ -322,7 +322,7 @@ elseif( cottages_feldweg_mode == "mesh" ) then groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, legacy_facedir_simple = true, groups = {crumbly=3}, - sounds = default.node_sound_dirt_defaults, + sounds = cottages.sounds.dirt, is_ground_content = false, tiles = {"cottages_feldweg_end.png","default_dirt.png^default_grass_side.png", "default_dirt.png", "default_grass.png", @@ -342,7 +342,7 @@ if( minetest.get_modpath("stairs") and stairs and stairs.register_stair_and_slab {"cottages_feldweg.png","default_dirt.png", "default_grass.png","default_grass.png","cottages_feldweg.png","cottages_feldweg.png"}, S("Dirt Road Stairs"), S("Dirt Road, half height"), - default.node_sound_dirt_defaults) + cottages.sounds.dirt) end if( cottages_feldweg_mode == "nodebox" or cottages_feldweg_mode == "mesh" ) then @@ -371,7 +371,7 @@ if( cottages_feldweg_mode == "nodebox" or cottages_feldweg_mode == "mesh" ) then groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, legacy_facedir_simple = true, groups = {crumbly=3}, - sounds = default.node_sound_dirt_defaults, + sounds = cottages.sounds.dirt, is_ground_content = false, tiles = {"cottages_feldweg_end.png","default_dirt.png^default_grass_side.png", "default_dirt.png", "default_grass.png", @@ -391,7 +391,7 @@ if( cottages_feldweg_mode == "nodebox" or cottages_feldweg_mode == "mesh" ) then groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, legacy_facedir_simple = true, groups = {crumbly=3}, - sounds = default.node_sound_dirt_defaults, + sounds = cottages.sounds.dirt, is_ground_content = false, tiles = {"cottages_feldweg_end.png","default_dirt.png^default_grass_side.png", "default_dirt.png", "default_grass.png", diff --git a/nodes_furniture.lua b/nodes_furniture.lua index 056c8d7..5705c76 100644 --- a/nodes_furniture.lua +++ b/nodes_furniture.lua @@ -23,7 +23,7 @@ minetest.register_node("cottages:bed_foot", { paramtype = "light", paramtype2 = "facedir", groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, - sounds = default.node_sound_wood_defaults, + sounds = cottages.sounds.wood, node_box = { type = "fixed", fixed = { @@ -58,7 +58,7 @@ minetest.register_node("cottages:bed_head", { paramtype = "light", paramtype2 = "facedir", groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, - sounds = default.node_sound_wood_defaults, + sounds = cottages.sounds.wood, node_box = { type = "fixed", fixed = { @@ -99,7 +99,7 @@ minetest.register_node("cottages:sleeping_mat", { paramtype2 = "facedir", walkable = false, groups = { snappy = 3 }, - sounds = default.node_sound_leaves_defaults, + sounds = cottages.sounds.leaves, selection_box = { type = "wallmounted", }, @@ -133,7 +133,7 @@ minetest.register_node("cottages:sleeping_mat_head", { paramtype = 'light', paramtype2 = "facedir", groups = { snappy = 3 }, - sounds = default.node_sound_leaves_defaults, + sounds = cottages.sounds.leaves, node_box = { type = "fixed", fixed = { @@ -162,7 +162,7 @@ minetest.register_node("cottages:bench", { paramtype = "light", paramtype2 = "facedir", groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, - sounds = default.node_sound_wood_defaults, + sounds = cottages.sounds.wood, node_box = { type = "fixed", fixed = { diff --git a/nodes_hay.lua b/nodes_hay.lua index 4576c53..c513208 100644 --- a/nodes_hay.lua +++ b/nodes_hay.lua @@ -46,7 +46,7 @@ minetest.register_node("cottages:hay_mat", { description = S("Some hay"), tiles = {"cottages_darkage_straw.png^[multiply:#88BB88"}, groups = {hay=3, snappy=2, oddly_breakable_by_hand=2, flammable=3}, - sounds = default.node_sound_wood_defaults, + sounds = cottages.sounds.leaves, -- the bale is slightly smaller than a full node is_ground_content = false, node_box = { @@ -73,7 +73,7 @@ minetest.register_node("cottages:hay", { description = S("Hay"), tiles = {"cottages_darkage_straw.png^[multiply:#88BB88"}, groups = {hay=3, snappy=2, oddly_breakable_by_hand=2, flammable=3}, - sounds = default.node_sound_wood_defaults, + sounds = cottages.sounds.leaves, is_ground_content = false, }) @@ -85,7 +85,7 @@ minetest.register_node("cottages:hay_bale", { tiles = {"cottages_darkage_straw_bale.png^[multiply:#88BB88"}, paramtype = "light", groups = {hay=3, snappy=2, oddly_breakable_by_hand=2, flammable=3}, - sounds = default.node_sound_wood_defaults, + sounds = cottages.sounds.leaves, -- the bale is slightly smaller than a full node node_box = { type = "fixed", diff --git a/nodes_historic.lua b/nodes_historic.lua index 90e48c4..7af2d69 100644 --- a/nodes_historic.lua +++ b/nodes_historic.lua @@ -27,7 +27,6 @@ minetest.register_node("cottages:wagon_wheel", { }, groups = {choppy=2,dig_immediate=2,attached_node=1}, legacy_wallmounted = true, - sounds = default.node_sound_defaults, is_ground_content = false, }) @@ -38,7 +37,7 @@ minetest.register_node("cottages:loam", { tiles = {"cottages_loam.png"}, groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, groups = {crumbly=3}, - sounds = default.node_sound_dirt_defaults, + sounds = cottages.sounds.dirt, is_ground_content = false, }) @@ -50,7 +49,7 @@ if( minetest.get_modpath("stairs") and stairs and stairs.register_stair_and_slab {"cottages_loam.png"}, S("Loam Stairs"), S("Loam Slab"), - default.node_sound_dirt_defaults) + cottages.sounds.dirt) if( minetest.registered_nodes["default:clay"]) then stairs.register_stair_and_slab("clay", "default:clay", @@ -58,7 +57,7 @@ if( minetest.get_modpath("stairs") and stairs and stairs.register_stair_and_slab {"cottages_clay.png"}, S("Clay Stairs"), S("Clay Slab"), - default.node_sound_dirt_defaults) + cottages.sounds.dirt) end end @@ -70,7 +69,7 @@ minetest.register_node("cottages:straw_ground", { tiles = {"cottages_darkage_straw.png","cottages_loam.png","cottages_loam.png","cottages_loam.png","cottages_loam.png","cottages_loam.png"}, groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, groups = {crumbly=3}, - sounds = default.node_sound_dirt_defaults, + sounds = cottages.sounds.leaves, is_ground_content = false, }) diff --git a/nodes_mining.lua b/nodes_mining.lua index b33ec3d..ba557f1 100644 --- a/nodes_mining.lua +++ b/nodes_mining.lua @@ -54,7 +54,7 @@ minetest.register_node("cottages:ladder_with_rope_and_rail", { }, groups = {choppy=2,oddly_breakable_by_hand=3,rail=1,connect_to_raillike=1}, --connect_to_raillike=minetest.raillike_group("rail")}, legacy_wallmounted = true, - sounds = default.node_sound_wood_defaults, + sounds = cottages.sounds.wood, }) diff --git a/nodes_pitchfork.lua b/nodes_pitchfork.lua index 81ff39c..749602d 100644 --- a/nodes_pitchfork.lua +++ b/nodes_pitchfork.lua @@ -72,7 +72,7 @@ minetest.register_node("cottages:pitchfork_placed", { paramtype2 = "facedir", is_ground_content = false, groups = {snappy = 2, dig_immediate = 3, falling_node = 1, attached_node = 1}, - sounds = default.node_sound_wood_defaults(), + sounds = cottages.sounds.wood, node_box = { type = "fixed", fixed = { diff --git a/nodes_roof.lua b/nodes_roof.lua index 9503e86..64ce581 100644 --- a/nodes_roof.lua +++ b/nodes_roof.lua @@ -191,7 +191,7 @@ minetest.register_node("cottages:slate_vertical", { tiles = {"cottages_slate.png",cottages.texture_roof_sides,"cottages_slate.png","cottages_slate.png",cottages.texture_roof_sides,"cottages_slate.png"}, paramtype2 = "facedir", groups = {cracky=2, stone=1}, - sounds = default.node_sound_stone_defaults, + sounds = cottages.sounds.stone, is_ground_content = false, }) @@ -208,8 +208,8 @@ minetest.register_craft({ minetest.register_node("cottages:reet", { description = S("Reet for thatching"), tiles = {"cottages_reet.png"}, - groups = {snappy=3,choppy=3,oddly_breakable_by_hand=3,flammable=3}, - sounds = default.node_sound_wood_defaults, + groups = {hay = 3, snappy=3,choppy=3,oddly_breakable_by_hand=3,flammable=3}, + sounds = cottages.sounds.leaves, is_ground_content = false, }) diff --git a/nodes_straw.lua b/nodes_straw.lua index 940fa3b..600d0de 100644 --- a/nodes_straw.lua +++ b/nodes_straw.lua @@ -20,7 +20,7 @@ minetest.register_node("cottages:straw_mat", { paramtype2 = "facedir", walkable = false, groups = { hay = 3, snappy = 2, oddly_breakable_by_hand = 2, flammable=3 }, - sounds = default.node_sound_leaves_defaults, + sounds = cottages.sounds.leaves, node_box = { type = "fixed", fixed = { @@ -46,7 +46,7 @@ minetest.register_node("cottages:straw_bale", { tiles = {"cottages_darkage_straw_bale.png"}, paramtype = "light", groups = { hay = 3, snappy = 2, oddly_breakable_by_hand = 2, flammable=3 }, - sounds = default.node_sound_wood_defaults, + sounds = cottages.sounds.leaves, -- the bale is slightly smaller than a full node node_box = { type = "fixed", @@ -69,7 +69,7 @@ minetest.register_node("cottages:straw", { description = S("straw"), tiles = {"cottages_darkage_straw.png"}, groups = { hay = 3, snappy = 2, oddly_breakable_by_hand = 2, flammable=3 }, - sounds = default.node_sound_wood_defaults, + sounds = cottages.sounds.leaves, -- the bale is slightly smaller than a full node is_ground_content = false, }) diff --git a/nodes_water.lua b/nodes_water.lua index 09f44ec..0190d78 100644 --- a/nodes_water.lua +++ b/nodes_water.lua @@ -117,7 +117,7 @@ minetest.register_node("cottages:water_gen", { paramtype2 = "facedir", is_ground_content = false, groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2}, - sounds = default.node_sound_wood_defaults(), + sounds = cottages.sounds.wood, node_box = { type = "fixed", fixed = { From e9741c039772243e7b3a3bf92abda386ea3420ae Mon Sep 17 00:00:00 2001 From: Sokomine Date: Sun, 17 Feb 2019 14:32:29 +0100 Subject: [PATCH 20/31] fixed recipe for rope --- nodes_mining.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nodes_mining.lua b/nodes_mining.lua index ba557f1..2098afe 100644 --- a/nodes_mining.lua +++ b/nodes_mining.lua @@ -31,7 +31,7 @@ minetest.register_node("cottages:rope", { minetest.register_craft({ output = "cottages:rope", recipe = { - {"default:cotton","default:cotton","default:cotton"} + {"farming:cotton","farming:cotton","farming:cotton"} } }) From 68465f41098401666b1aa2a679f137bc75b46363 Mon Sep 17 00:00:00 2001 From: Sokomine Date: Sun, 17 Feb 2019 15:13:04 +0100 Subject: [PATCH 21/31] fixed bug regarding locale --- nodes_hay.lua | 2 ++ nodes_pitchfork.lua | 2 ++ 2 files changed, 4 insertions(+) diff --git a/nodes_hay.lua b/nodes_hay.lua index c513208..78da2d4 100644 --- a/nodes_hay.lua +++ b/nodes_hay.lua @@ -1,5 +1,7 @@ -- contains hay_mat, hay and hay bale -- (gives the pitchfork some work) +-- +local S = cottages.S -- If default:dirt_with_grass is digged while wielding a pitchfork, it will -- turn into dirt and get some hay placed above it. diff --git a/nodes_pitchfork.lua b/nodes_pitchfork.lua index 749602d..785171f 100644 --- a/nodes_pitchfork.lua +++ b/nodes_pitchfork.lua @@ -1,4 +1,6 @@ +local S = cottages.S + -- fast tool for digging nodes with the group "hay"; -- can also be placed as a node From ccb66008c4b1e9a402b1734641a1239aebd28592 Mon Sep 17 00:00:00 2001 From: Sokomine Date: Sun, 17 Feb 2019 16:04:58 +0100 Subject: [PATCH 22/31] removed duplicate wool and straw block in case of farming and wool beeing installed --- init.lua | 10 ++++++++++ nodes_hay.lua | 4 ++-- nodes_historic.lua | 10 +++++++--- nodes_roof.lua | 18 +++++++++++++----- nodes_straw.lua | 18 +++++++++++------- 5 files changed, 43 insertions(+), 17 deletions(-) diff --git a/init.lua b/init.lua index fd7f333..b6c412b 100644 --- a/init.lua +++ b/init.lua @@ -44,6 +44,16 @@ else cottages.sounds.stone = default.node_sound_stone_defaults() cottages.sounds.leaves = default.node_sound_leaves_defaults() end + +-- the straw from default comes with stairs as well and might replace +-- cottages:roof_connector_straw and cottages:roof_flat_straw +-- however, that does not look very good +if( false and minetest.registered_nodes["farming:straw"]) then + cottages.straw_texture = "farming_straw.png" + cottages.use_farming_straw_stairs = true +else + cottages.straw_texture = "cottages_darkage_straw.png" +end --cottages.config_use_mesh_barrel = false; --cottages.config_use_mesh_handmill = true; diff --git a/nodes_hay.lua b/nodes_hay.lua index 78da2d4..3d1f8b0 100644 --- a/nodes_hay.lua +++ b/nodes_hay.lua @@ -46,7 +46,7 @@ minetest.register_node("cottages:hay_mat", { drawtype = "nodebox", paramtype2 = "leveled", description = S("Some hay"), - tiles = {"cottages_darkage_straw.png^[multiply:#88BB88"}, + tiles = {cottages.straw_texture.."^[multiply:#88BB88"}, groups = {hay=3, snappy=2, oddly_breakable_by_hand=2, flammable=3}, sounds = cottages.sounds.leaves, -- the bale is slightly smaller than a full node @@ -73,7 +73,7 @@ minetest.register_node("cottages:hay_mat", { -- hay block, similar to straw block minetest.register_node("cottages:hay", { description = S("Hay"), - tiles = {"cottages_darkage_straw.png^[multiply:#88BB88"}, + tiles = {cottages.straw_texture.."^[multiply:#88BB88"}, groups = {hay=3, snappy=2, oddly_breakable_by_hand=2, flammable=3}, sounds = cottages.sounds.leaves, is_ground_content = false, diff --git a/nodes_historic.lua b/nodes_historic.lua index 7af2d69..af8aa3a 100644 --- a/nodes_historic.lua +++ b/nodes_historic.lua @@ -66,7 +66,7 @@ end -- right now, this block mostly serves as a placeholder minetest.register_node("cottages:straw_ground", { description = S("straw ground for animals"), - tiles = {"cottages_darkage_straw.png","cottages_loam.png","cottages_loam.png","cottages_loam.png","cottages_loam.png","cottages_loam.png"}, + tiles = {cottages.straw_texture,"cottages_loam.png","cottages_loam.png","cottages_loam.png","cottages_loam.png","cottages_loam.png"}, groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, groups = {crumbly=3}, sounds = cottages.sounds.leaves, @@ -178,12 +178,16 @@ minetest.register_node("cottages:wool_tent", { }) -- a fallback for cases in which there is no wool -minetest.register_node("cottages:wool", { +if( not( minetest.registered_nodes["wool:white"])) then + minetest.register_node("cottages:wool", { description = "Wool", tiles = {"cottages_wool.png"}, is_ground_content = false, groups = {snappy=2,choppy=2,oddly_breakable_by_hand=3,flammable=3,wool=1}, -}) + }) +else + minetest.register_alias("cottages:wool", "wool:white") +end --------------------------------------------------------------------------------------- diff --git a/nodes_roof.lua b/nodes_roof.lua index 64ce581..240f94f 100644 --- a/nodes_roof.lua +++ b/nodes_roof.lua @@ -36,7 +36,8 @@ cottages.register_roof = function( name, tiles, basic_material, homedecor_altern }) -- a better roof than the normal stairs; this one is for usage directly on top of walls (it has the form of a stair) - minetest.register_node("cottages:roof_connector_"..name, { + if( name~="straw" or not(minetest.registered_nodes["stairs:stair_straw"]) or not(cottages.use_farming_straw_stairs)) then + minetest.register_node("cottages:roof_connector_"..name, { description = S("Roof connector "..name), drawtype = "nodebox", -- top, bottom, side1, side2, inner, outer @@ -60,9 +61,13 @@ cottages.register_roof = function( name, tiles, basic_material, homedecor_altern }, is_ground_content = false, }) + else + minetest.register_alias("cottages:roof_connector_straw", "stairs:stair_straw") + end -- this one is the slab version of the above roof - minetest.register_node("cottages:roof_flat_"..name, { + if( name~="straw" or not(minetest.registered_nodes["stairs:slab_straw"]) or not(cottages.use_farming_straw_stairs)) then + minetest.register_node("cottages:roof_flat_"..name, { description = S("Roof (flat) "..name), drawtype = "nodebox", -- top, bottom, side1, side2, inner, outer @@ -85,6 +90,9 @@ cottages.register_roof = function( name, tiles, basic_material, homedecor_altern }, is_ground_content = false, }) + else + minetest.register_alias("cottages:roof_flat_straw", "stairs:slab_straw") + end if( not( homedecor_alternative ) @@ -147,9 +155,9 @@ end -- of cottages.register_roof( name, tiles, basic_material ) -- add the diffrent roof types --------------------------------------------------------------------------------------- cottages.register_roof( 'straw', - {"cottages_darkage_straw.png","cottages_darkage_straw.png", - "cottages_darkage_straw.png","cottages_darkage_straw.png", - "cottages_darkage_straw.png","cottages_darkage_straw.png"}, + {cottages.straw_texture, cottages.straw_texture, + cottages.straw_texture, cottages.straw_texture, + cottages.straw_texture, cottages.straw_texture}, 'cottages:straw_mat', nil ); cottages.register_roof( 'reet', {"cottages_reet.png","cottages_reet.png", diff --git a/nodes_straw.lua b/nodes_straw.lua index 600d0de..d26f6b8 100644 --- a/nodes_straw.lua +++ b/nodes_straw.lua @@ -12,9 +12,9 @@ local S = cottages.S minetest.register_node("cottages:straw_mat", { description = S("layer of straw"), drawtype = 'nodebox', - tiles = { 'cottages_darkage_straw.png' }, -- done by VanessaE - wield_image = 'cottages_darkage_straw.png', - inventory_image = 'cottages_darkage_straw.png', + tiles = { cottages.straw_texture }, -- done by VanessaE + wield_image = cottages.straw_texture, + inventory_image = cottages.straw_texture, sunlight_propagates = true, paramtype = 'light', paramtype2 = "facedir", @@ -64,15 +64,19 @@ minetest.register_node("cottages:straw_bale", { }) -- just straw -minetest.register_node("cottages:straw", { +if( not(minetest.registered_nodes["farming:straw"])) then + minetest.register_node("cottages:straw", { drawtype = "normal", description = S("straw"), - tiles = {"cottages_darkage_straw.png"}, + tiles = {cottages.straw_texture}, groups = { hay = 3, snappy = 2, oddly_breakable_by_hand = 2, flammable=3 }, sounds = cottages.sounds.leaves, -- the bale is slightly smaller than a full node is_ground_content = false, -}) + }) +else + minetest.register_alias("cottages:straw", "farming:straw") +end local cottages_formspec_treshing_floor = @@ -239,7 +243,7 @@ minetest.register_node("cottages:threshing_floor", { end local overlay1 = "^farming_wheat.png"; - local overlay2 = "^cottages_darkage_straw.png"; + local overlay2 = "^"..cottages.straw_texture; local overlay3 = "^"..cottages.texture_wheat_seed; -- this can be enlarged by a multiplicator if desired From 0eca84e0d4c0b413be4d4e95500d1afb7b2d0231 Mon Sep 17 00:00:00 2001 From: Sokomine Date: Sun, 17 Feb 2019 17:57:16 +0100 Subject: [PATCH 23/31] added texture for pitchfork --- nodes_pitchfork.lua | 6 +++--- textures/cottages_pitchfork.png | Bin 0 -> 1262 bytes 2 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 textures/cottages_pitchfork.png diff --git a/nodes_pitchfork.lua b/nodes_pitchfork.lua index 785171f..666393a 100644 --- a/nodes_pitchfork.lua +++ b/nodes_pitchfork.lua @@ -20,9 +20,9 @@ end minetest.register_tool("cottages:pitchfork", { description = S("pitchfork (dig dirt with grass to get hay, place with right-click)"), groups = {}, - inventory_image = "default_wood.png", -- TODO - wield_image = "", - wield_scale = {x=1,y=1,z=1}, + inventory_image = "cottages_pitchfork.png", + wield_image = "cottages_pitchfork.png^[transformFYR180", + wield_scale = {x=1.5,y=1.5,z=0.5}, stack_max = 1, liquids_pointable = false, -- very useful for digging hay, straw and bales of those materials diff --git a/textures/cottages_pitchfork.png b/textures/cottages_pitchfork.png new file mode 100644 index 0000000000000000000000000000000000000000..7253a7a093dfbd0e7f94412f2c413549b0655cf6 GIT binary patch literal 1262 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Ea{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZKG?d}4kf#9d}?s_1_ zS>O>_%)r2R7=#&*=dVZs3bL1Y`ns||W)c*XmwR#{Y7GMe^G;6}$B>F!Z)fjcEfXqo z-2Q%Xx|v5!Qja!UkVXVo(}D>~y{)}Vx4M2<@1g&X|D{gOTb7NRKkhe3TB^v{IdS^- znRBcAj=tHq;rBO3gEw-&;Q97Hr?4n!yDKRG;`ui$la`Hx?-=Wq4DJIjzk!uvqS+D{BEAJ!Hvm%SIf=fM8` zYx0y&Ox`bMF?Cy>*)k>@g>3>NE{;by-Wqc?M3^qoh%T35b$Rpclb}q348!?deNta7 zJGcI*nS=eED0*U?90P zx6Nh)Bg2wi$vPG%7Ps^Fvp1w1Nb8Oht3SLsVAkK&=6nqd$MvLS8V~7J9n*?D7Ps6{ znP~+ZSMu(&tLLohOV!zSa?KB!iw+#GT0Q$OK4k38{e5iJ%YIe|-UA0K4=tD9|N2nn z|Gl$K0z36yR2;Z#y?w8)Ux0#4;Ketu3K<+6T@J47V5kx~Ur=RbzcgTmYk=05RWo`H z6v%oDr7*r?f9$+q+VA~#ZqN3V88u&9S#*cVon^P0$NxkISGQ!{SceQxjTb&99bL)q z0$Kwd7719$2G#yN#m{u$r0K8y=RaK9yv2CIQi(IOjMo%8v7HUg;1(08YPDPU`03TX zug$uaA650Xi?8`Mal6gZ%X9Mg|Id8B!{gTbT^B4oKWsY1%TuTt*gi3=MUU~qnF%f# zYo?SZFkDMZ*P6)H@Rg@>m7IZuoP&8FLpEP$sXR-A4-5N57US3l_53HyWE+K!C;zc-Bz)4Y)CVE zn`f|F-GlW(iNo1Byw9072)MMXubMcESxa{S?_0#` zymYq^s-D2m#+rC|nU(mCvP%I@R}A+}uyJAN_4;-#;Zw?rHEZU-T2-LgmT6%;NA*8L z-DAh7i)Ftb0`s+MiEBhjN@7W>RdP`(kYX@0FtpS)Fw!+N4>2^iGBvU?HP<#Uv@$TL zy7NQ~MMG|WN@iLmng(M-D`NwQ2JX{RkAWH_KsE&DrY1jvM}SH+22WQ%mvv4FO#lu;5={UA literal 0 HcmV?d00001 From 5b6ed3b00336b42eed894637b13bef67d7d7d86a Mon Sep 17 00:00:00 2001 From: Sokomine Date: Sun, 17 Feb 2019 20:03:54 +0100 Subject: [PATCH 24/31] small bugfix --- nodes_water.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nodes_water.lua b/nodes_water.lua index 0190d78..1cfe77d 100644 --- a/nodes_water.lua +++ b/nodes_water.lua @@ -187,7 +187,7 @@ minetest.register_node("cottages:water_gen", { end, allow_metadata_inventory_put = function(pos, listname, index, stack, player) local meta = minetest.get_meta(pos) - if not(stack) or not cottages.player_can_use(meta, player:get_player_name()) then + if not(stack) or not cottages.player_can_use(meta, player) then return 0 end local inv = meta:get_inventory() @@ -201,7 +201,7 @@ minetest.register_node("cottages:water_gen", { return stack:get_count() end, allow_metadata_inventory_take = function(pos, listname, index, stack, player) - if not(cottages.player_can_use(meta:get_string(pos), player:get_player_name())) then + if not(cottages.player_can_use(meta:get_string(pos), player)) then return 0 end return stack:get_count() From 81036b01251a7c7b9f977f2cc88ebf1347589409 Mon Sep 17 00:00:00 2001 From: Sokomine Date: Mon, 11 Mar 2019 00:34:37 +0100 Subject: [PATCH 25/31] fixed bug with locale --- nodes_water.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/nodes_water.lua b/nodes_water.lua index 1cfe77d..c2bb118 100644 --- a/nodes_water.lua +++ b/nodes_water.lua @@ -16,6 +16,7 @@ -- how many seconds does it take to fill a bucket? cottages.water_fill_time = 10 +local S = cottages.S -- code taken from the itemframes mod in homedecor -- (the relevant functions are sadly private there and thus cannot be reused) From 360d84edc9f1a20288ba37a2a69cfee115478fca Mon Sep 17 00:00:00 2001 From: Sokomine Date: Mon, 11 Mar 2019 22:14:35 +0100 Subject: [PATCH 26/31] removed obsolete maxwear; removed pitchfork-as-a-node from creative inv --- nodes_pitchfork.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/nodes_pitchfork.lua b/nodes_pitchfork.lua index 666393a..8e0cad9 100644 --- a/nodes_pitchfork.lua +++ b/nodes_pitchfork.lua @@ -30,9 +30,9 @@ minetest.register_tool("cottages:pitchfork", { full_punch_interval = 1.0, max_drop_level=1, groupcaps={ - fleshy={times={[2]=0.80, [3]=0.40}, maxwear=0.05, maxlevel=1, uses=40}, - snappy={times={[2]=0.80, [3]=0.40}, maxwear=0.05, maxlevel=1, uses=40}, - hay ={times={[2]=0.10, [3]=0.10}, maxwear=0.05, maxlevel=1, uses=40}, + fleshy={times={[2]=0.80, [3]=0.40}, maxlevel=1, uses=1/0.002 }, + snappy={times={[2]=0.80, [3]=0.40}, maxlevel=1, uses=1/0.002 }, + hay ={times={[2]=0.10, [3]=0.10}, maxlevel=1, uses=1/0.002 }, }, damage_groups = {fleshy=5}, -- slightly stronger than a stone sword }, @@ -73,7 +73,7 @@ minetest.register_node("cottages:pitchfork_placed", { paramtype = "light", paramtype2 = "facedir", is_ground_content = false, - groups = {snappy = 2, dig_immediate = 3, falling_node = 1, attached_node = 1}, + groups = {snappy = 2, dig_immediate = 3, falling_node = 1, attached_node = 1, not_in_creative_inventory=1}, sounds = cottages.sounds.wood, node_box = { type = "fixed", From f1648ed2d625cbc099495a68c22603a253a84b51 Mon Sep 17 00:00:00 2001 From: Sokomine Date: Mon, 11 Mar 2019 22:15:06 +0100 Subject: [PATCH 27/31] removed obsolete setpos call --- nodes_furniture.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/nodes_furniture.lua b/nodes_furniture.lua index 5705c76..0a5e72b 100644 --- a/nodes_furniture.lua +++ b/nodes_furniture.lua @@ -393,7 +393,7 @@ cottages.sit_on_bench = function( pos, node, clicker, itemstack, pointed_thing ) if( animation and animation.animation=="sit") then default.player_attached[pname] = false - clicker:setpos({x=pos.x,y=pos.y-0.5,z=pos.z}) + clicker:set_pos({x=pos.x,y=pos.y-0.5,z=pos.z}) clicker:set_eye_offset({x=0,y=0,z=0}, {x=0,y=0,z=0}) clicker:set_physics_override(1, 1, 1) default.player_set_animation(clicker, "stand", 30) @@ -411,7 +411,7 @@ cottages.sit_on_bench = function( pos, node, clicker, itemstack, pointed_thing ) end clicker:set_eye_offset({x=0,y=-7,z=2}, {x=0,y=0,z=0}) - clicker:setpos( p2 ) + clicker:set_pos( p2 ) default.player_set_animation(clicker, "sit", 30) clicker:set_physics_override(0, 0, 0) default.player_attached[pname] = true @@ -553,7 +553,7 @@ cottages.sleep_in_bed = function( pos, node, clicker, itemstack, pointed_thing ) clicker:set_eye_offset({x=0,y=-7,z=2}, {x=0,y=0,z=0}) - clicker:setpos( p ); + clicker:set_pos( p ); default.player_set_animation(clicker, new_animation, 30) clicker:set_physics_override(0, 0, 0) default.player_attached[pname] = true From 63153e745743d2a839d03afa59032f369acd800e Mon Sep 17 00:00:00 2001 From: Sokomine Date: Mon, 11 Mar 2019 22:15:27 +0100 Subject: [PATCH 28/31] cottages_feldweg_mode is now a setting in minetest.conf --- nodes_feldweg.lua | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/nodes_feldweg.lua b/nodes_feldweg.lua index d81cc02..9205952 100644 --- a/nodes_feldweg.lua +++ b/nodes_feldweg.lua @@ -15,8 +15,14 @@ local S = cottages.S -- * flat: each node is a full node; junction, t-junction and corner are included -- * nodebox: like flat - except that each node has a nodebox that fits to that road node -- * mesh: like nodebox - except that it uses a nice roundish model -if( not( cottages_feldweg_mode )) then +local cottages_feldweg_mode = minetest.settings:get("cottages_feldweg_mode") +if( cottages_feldweg_mode ~= "mesh" + and cottages_feldweg_mode ~= "flat" + and cottages_feldweg_mode ~= "nodebox" + and cottages_feldweg_mode ~= "flat") then cottages_feldweg_mode = "mesh"; + -- add the setting to the minetest.conf so that the player can set it there + minetest.settings:set("cottages_feldweg_mode", "mesh") end local function register_recipes(include_end) From 1a92b77ec412bc21f6b1a19679151453897b9c02 Mon Sep 17 00:00:00 2001 From: Sokomine Date: Mon, 11 Mar 2019 22:20:13 +0100 Subject: [PATCH 29/31] updated changelog in init.lua --- init.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/init.lua b/init.lua index b6c412b..3874218 100644 --- a/init.lua +++ b/init.lua @@ -4,6 +4,8 @@ -- License: GPLv3 -- -- Modified: +-- 11.03.19 Adjustments for MT 5.x +-- cottages_feldweg_mode is now a setting in minetest.conf -- 27.07.15 Moved into its own repository. -- Made sure textures and craft receipe indigrents are available or can be replaced. -- Took care of "unregistered globals" warnings. From ddafb51c104395f9e4a6b357a12a8467b6edf869 Mon Sep 17 00:00:00 2001 From: Sokomine Date: Mon, 11 Mar 2019 23:44:35 +0100 Subject: [PATCH 30/31] removed deprecated setpos call --- nodes_furniture.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nodes_furniture.lua b/nodes_furniture.lua index 0a5e72b..65e229d 100644 --- a/nodes_furniture.lua +++ b/nodes_furniture.lua @@ -441,7 +441,7 @@ cottages.sleep_in_bed = function( pos, node, clicker, itemstack, pointed_thing ) -- let players get back up if( animation and animation.animation=="lay" ) then default.player_attached[pname] = false - clicker:setpos({x=pos.x,y=pos.y-0.5,z=pos.z}) + clicker:set_pos({x=pos.x,y=pos.y-0.5,z=pos.z}) clicker:set_eye_offset({x=0,y=0,z=0}, {x=0,y=0,z=0}) clicker:set_physics_override(1, 1, 1) default.player_set_animation(clicker, "stand", 30) @@ -542,7 +542,7 @@ cottages.sleep_in_bed = function( pos, node, clicker, itemstack, pointed_thing ) -- no sleeping on this place else default.player_attached[pname] = false - clicker:setpos({x=pos.x,y=pos.y-0.5,z=pos.z}) + clicker:set_pos({x=pos.x,y=pos.y-0.5,z=pos.z}) clicker:set_eye_offset({x=0,y=0,z=0}, {x=0,y=0,z=0}) clicker:set_physics_override(1, 1, 1) default.player_set_animation(clicker, "stand", 30) From 43eabc2f2723a95a1740897958a78ba1bc09176f Mon Sep 17 00:00:00 2001 From: Sokomine Date: Tue, 12 Mar 2019 21:24:13 +0100 Subject: [PATCH 31/31] fixed bug --- nodes_water.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/nodes_water.lua b/nodes_water.lua index c2bb118..44e4119 100644 --- a/nodes_water.lua +++ b/nodes_water.lua @@ -202,7 +202,8 @@ minetest.register_node("cottages:water_gen", { return stack:get_count() end, allow_metadata_inventory_take = function(pos, listname, index, stack, player) - if not(cottages.player_can_use(meta:get_string(pos), player)) then + local meta = minetest.get_meta(pos) + if not(cottages.player_can_use(meta, player)) then return 0 end return stack:get_count()