From a9bba98e204f607e1e4987e4b1055f05a7f08425 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 25 Oct 2021 14:38:22 +0200 Subject: [PATCH] update --- mods/flowerpot/.luacheckrc | 27 + mods/flowerpot/init.lua | 4 +- mods/mob_horse/init.lua | 60 +- mods/mob_horse/spawn_example.lua | 72 ++ mods/morelights/morelights_vintage/init.lua | 15 +- .../textures/morelights_vintage_block.png | Bin 272 -> 0 bytes .../morelights_vintage_block_frame.png | Bin 0 -> 220 bytes .../morelights_vintage_block_frame.xcf | Bin 0 -> 3961 bytes .../morelights_vintage_block_glass.png | Bin 0 -> 152 bytes .../textures/morelights_vintage_lantern.png | Bin 422 -> 0 bytes .../morelights_vintage_lantern_frame.png | Bin 0 -> 368 bytes .../morelights_vintage_lantern_glass.png | Bin 0 -> 191 bytes mods/mydoors/my_castle_doors/locked.lua | 26 +- mods/mydoors/my_castle_doors/unlocked.lua | 26 +- mods/mydoors/my_cottage_doors/locked.lua | 26 +- mods/mydoors/my_cottage_doors/unlocked.lua | 26 +- mods/mydoors/my_default_doors/locked.lua | 47 +- mods/mydoors/my_default_doors/unlocked.lua | 47 +- mods/mydoors/my_door_wood/init.lua | 53 +- mods/mydoors/my_fancy_doors/locked.lua | 26 +- mods/mydoors/my_fancy_doors/unlocked.lua | 26 +- mods/mydoors/my_future_doors/framed.lua | 390 ++++---- mods/mydoors/my_future_doors/sliding.lua | 479 +++++----- mods/mydoors/my_garage_door/init.lua | 179 ++-- mods/mydoors/my_hidden_doors/init.lua | 33 +- mods/mydoors/my_misc_doors/bars.lua | 209 ++--- mods/mydoors/my_misc_doors/locked.lua | 26 +- mods/mydoors/my_misc_doors/unlocked.lua | 26 +- mods/mydoors/my_old_doors/locked.lua | 25 +- mods/mydoors/my_old_doors/unlocked.lua | 24 +- mods/mydoors/my_saloon_doors/init.lua | 200 ++-- mods/mydoors/my_sliding_doors/init.lua | 1 - mods/mydoors/my_sliding_doors/jdoors1.lua | 857 +++++++++--------- mods/mydoors/my_sliding_doors/jdoors2.lua | 533 +++++------ mods/protector/README.md | 2 +- mods/protector/doors_chest.lua | 235 ++--- mods/protector/settingtypes.txt | 3 + mods/skinsdb/meta/character_2129.txt | 3 + mods/skinsdb/meta/character_2130.txt | 3 + mods/skinsdb/textures/character_2129.png | Bin 0 -> 1971 bytes mods/skinsdb/textures/character_2130.png | Bin 0 -> 465 bytes mods/unified_inventory/api.lua | 41 +- mods/unified_inventory/callbacks.lua | 3 +- mods/unified_inventory/doc/mod_api.txt | 58 ++ mods/unified_inventory/init.lua | 2 + mods/unified_inventory/internal.lua | 3 +- mods/unified_inventory/waypoints.lua | 5 +- 47 files changed, 2041 insertions(+), 1780 deletions(-) create mode 100644 mods/flowerpot/.luacheckrc create mode 100644 mods/mob_horse/spawn_example.lua delete mode 100644 mods/morelights/morelights_vintage/textures/morelights_vintage_block.png create mode 100644 mods/morelights/morelights_vintage/textures/morelights_vintage_block_frame.png create mode 100644 mods/morelights/morelights_vintage/textures/morelights_vintage_block_frame.xcf create mode 100644 mods/morelights/morelights_vintage/textures/morelights_vintage_block_glass.png delete mode 100644 mods/morelights/morelights_vintage/textures/morelights_vintage_lantern.png create mode 100644 mods/morelights/morelights_vintage/textures/morelights_vintage_lantern_frame.png create mode 100644 mods/morelights/morelights_vintage/textures/morelights_vintage_lantern_glass.png create mode 100644 mods/skinsdb/meta/character_2129.txt create mode 100644 mods/skinsdb/meta/character_2130.txt create mode 100644 mods/skinsdb/textures/character_2129.png create mode 100644 mods/skinsdb/textures/character_2130.png diff --git a/mods/flowerpot/.luacheckrc b/mods/flowerpot/.luacheckrc new file mode 100644 index 00000000..f002be16 --- /dev/null +++ b/mods/flowerpot/.luacheckrc @@ -0,0 +1,27 @@ +quiet = 1 +codes = true + +exclude_files = { + ".luarocks/*", + "worldeditadditions/utils/bit.lua" +} + + +ignore = { + "631", "61[124]", + "542", + "412", + "321/bit", + "21[123]" +} + +-- Read-write globals (i.e. they can be defined) +globals = { + "flowerpot" +} +-- Read-only globals +read_globals = { + "minetest", + "default" +} +std = "max" diff --git a/mods/flowerpot/init.lua b/mods/flowerpot/init.lua index 0998e6dc..53b4b657 100644 --- a/mods/flowerpot/init.lua +++ b/mods/flowerpot/init.lua @@ -84,7 +84,7 @@ function flowerpot.register_node(nodename) local desc = nodedef.description local name = nodedef.name:gsub(":", "_") - local tiles = {} + local tiles if nodedef.drawtype == "plantlike" then tiles = { @@ -109,6 +109,7 @@ function flowerpot.register_node(nodename) tiles = tiles, paramtype = "light", sunlight_propagates = true, + use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "clip" or true, collision_box = { type = "fixed", fixed = {-1/4, -1/2, -1/4, 1/4, -1/8, 1/4}, @@ -151,6 +152,7 @@ minetest.register_node("flowerpot:empty", { }, paramtype = "light", sunlight_propagates = true, + use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "clip" or true, collision_box = { type = "fixed", fixed = {-1/4, -1/2, -1/4, 1/4, -1/8, 1/4}, diff --git a/mods/mob_horse/init.lua b/mods/mob_horse/init.lua index 1a3e9d9f..f43dc010 100644 --- a/mods/mob_horse/init.lua +++ b/mods/mob_horse/init.lua @@ -1,8 +1,9 @@ -- Load support for intllib. -local MP = minetest.get_modpath(minetest.get_current_modname()) +local MP = minetest.get_modpath(minetest.get_current_modname()) .. "/" local S = minetest.get_translator and minetest.get_translator("mob_horse") or - dofile(MP .. "/intllib.lua") + dofile(MP .. "intllib.lua") + -- 0.4.17 or 5.0 check local y_off = 20 @@ -10,6 +11,7 @@ if minetest.features.object_independent_selectionbox then y_off = 10 end + -- horse shoes (speed, jump, break, overlay texture) local shoes = { ["mobs:horseshoe_steel"] = {7, 4, 2, "mobs_horseshoe_steelo.png"}, @@ -19,6 +21,7 @@ local shoes = { ["mobs:horseshoe_crystal"] = {11, 6, 9, "mobs_horseshoe_crystalo.png"} } + -- rideable horse mobs:register_mob("mob_horse:horse", { type = "animal", @@ -39,7 +42,7 @@ mobs:register_mob("mob_horse:horse", { walk_start = 75, walk_end = 100, run_start = 75, - run_end = 100, + run_end = 100 }, textures = { {"mobs_horse.png"}, -- textures by Mjollna @@ -227,16 +230,28 @@ mobs:register_mob("mob_horse:horse", { end }) -mobs:spawn({ - name = "mob_horse:horse", - nodes = {"default:dirt_with_grass", "ethereal:dry_dirt"}, - min_light = 14, - interval = 60, - chance = 16000, - min_height = 10, - max_height = 31000, - day_toggle = true, -}) + +-- check for custom spawn.lua +local input = io.open(MP .. "spawn.lua", "r") + +if input then + input:close() + input = nil + dofile(MP .. "spawn.lua") +else + + mobs:spawn({ + name = "mob_horse:horse", + nodes = {"default:dirt_with_grass", "ethereal:dry_dirt"}, + min_light = 14, + interval = 60, + chance = 16000, + min_height = 10, + max_height = 31000, + day_toggle = true + }) +end + mobs:register_egg("mob_horse:horse", S("Horse"), "wool_brown.png", 1) @@ -252,14 +267,14 @@ minetest.register_craft({ recipe = { {"", "default:steelblock", ""}, {"default:steel_ingot", "", "default:steel_ingot"}, - {"default:steel_ingot", "", "default:steel_ingot"}, + {"default:steel_ingot", "", "default:steel_ingot"} } }) -- bronze horseshoes minetest.register_craftitem(":mobs:horseshoe_bronze", { description = S("Bronze HorseShoes (use on horse to apply)"), - inventory_image = "mobs_horseshoe_bronze.png", + inventory_image = "mobs_horseshoe_bronze.png" }) minetest.register_craft({ @@ -267,14 +282,14 @@ minetest.register_craft({ recipe = { {"", "default:bronzeblock", ""}, {"default:bronze_ingot", "", "default:bronze_ingot"}, - {"default:bronze_ingot", "", "default:bronze_ingot"}, + {"default:bronze_ingot", "", "default:bronze_ingot"} } }) -- mese horseshoes minetest.register_craftitem(":mobs:horseshoe_mese", { description = S("Mese HorseShoes (use on horse to apply)"), - inventory_image = "mobs_horseshoe_mese.png", + inventory_image = "mobs_horseshoe_mese.png" }) minetest.register_craft({ @@ -282,14 +297,14 @@ minetest.register_craft({ recipe = { {"", "default:mese", ""}, {"default:mese_crystal_fragment", "", "default:mese_crystal_fragment"}, - {"default:mese_crystal_fragment", "", "default:mese_crystal_fragment"}, + {"default:mese_crystal_fragment", "", "default:mese_crystal_fragment"} } }) -- diamond horseshoes minetest.register_craftitem(":mobs:horseshoe_diamond", { description = S("Diamond HorseShoes (use on horse to apply)"), - inventory_image = "mobs_horseshoe_diamond.png", + inventory_image = "mobs_horseshoe_diamond.png" }) minetest.register_craft({ @@ -297,7 +312,7 @@ minetest.register_craft({ recipe = { {"", "default:diamondblock", ""}, {"default:diamond", "", "default:diamond"}, - {"default:diamond", "", "default:diamond"}, + {"default:diamond", "", "default:diamond"} } }) @@ -306,7 +321,7 @@ if minetest.get_modpath("ethereal") then minetest.register_craftitem(":mobs:horseshoe_crystal", { description = S("Crystal HorseShoes (use on horse to apply)"), - inventory_image = "mobs_horseshoe_crystal.png", + inventory_image = "mobs_horseshoe_crystal.png" }) minetest.register_craft({ @@ -314,12 +329,13 @@ minetest.register_craft({ recipe = { {"", "ethereal:crystal_block", ""}, {"ethereal:crystal_ingot", "", "ethereal:crystal_ingot"}, - {"ethereal:crystal_ingot", "", "ethereal:crystal_ingot"}, + {"ethereal:crystal_ingot", "", "ethereal:crystal_ingot"} } }) end + -- lucky blocks if minetest.get_modpath("lucky_block") then diff --git a/mods/mob_horse/spawn_example.lua b/mods/mob_horse/spawn_example.lua new file mode 100644 index 00000000..dba11f4c --- /dev/null +++ b/mods/mob_horse/spawn_example.lua @@ -0,0 +1,72 @@ + +--[[ Spawn Template, defaults to values shown if line not provided + +mobs:spawn({ + + name = "", + + - Name of mob, must be provided e.g. "mymod:my_mob" + + nodes = {"group:soil, "group:stone"}, + + - Nodes to spawn on top of. + + neighbors = {"air"}, + + - Nodes to spawn beside. + + min_light = 0, + + - Minimum light level. + + max_light = 15, + + - Maximum light level, 15 is sunlight only. + + interval = 30, + + - Spawn interval in seconds. + + chance = 5000, + + - Spawn chance, 1 in every 5000 nodes. + + active_object_count = 1, + + - Active mobs of this type in area. + + min_height = -31000, + + - Minimum height level. + + max_height = 31000, + + - Maximum height level. + + day_toggle = nil, + + - Daytime toggle, true to spawn during day, false for night, nil for both + + on_spawn = nil, + + - On spawn function to run when mob spawns in world + + on_map_load = nil, + + - On map load, when true mob only spawns in newly generated map areas +}) +]]-- + + +-- Horse + +mobs:spawn({ + name = "mob_horse:horse", + nodes = {"default:dirt_with_grass", "ethereal:dry_dirt"}, + min_light = 14, + interval = 60, + chance = 16000, + min_height = 10, + max_height = 31000, + day_toggle = true +}) diff --git a/mods/morelights/morelights_vintage/init.lua b/mods/morelights/morelights_vintage/init.lua index 974390d3..545637fd 100644 --- a/mods/morelights/morelights_vintage/init.lua +++ b/mods/morelights/morelights_vintage/init.lua @@ -77,7 +77,7 @@ minetest.register_node("morelights_vintage:chain_ceiling_b", { minetest.register_node("morelights_vintage:block", { description = S("Vintage Light Block"), - tiles = {"morelights_vintage_block.png"}, + tiles = {"morelights_vintage_block_glass.png^morelights_vintage_block_frame.png"}, paramtype = "light", light_source = minetest.LIGHT_MAX, groups = {cracky = 2, oddly_breakable_by_hand = 3, handy = 1}, @@ -93,9 +93,10 @@ minetest.register_node("morelights_vintage:smallblock", { fixed = {-1/4, -1/2, -1/4, 1/4, 0, 1/4} }, tiles = { - "morelights_vintage_block.png", - "morelights_vintage_block.png", - "[combine:16x16:0,4=morelights_vintage_block.png" + "morelights_vintage_block_glass.png^morelights_vintage_block_frame.png", + "morelights_vintage_block_glass.png^morelights_vintage_block_frame.png", + "[combine:16x16:0,4=" .. + "(morelights_vintage_block_glass.png^morelights_vintage_block_frame.png)" }, use_texture_alpha = "opaque", paramtype = "light", @@ -116,7 +117,7 @@ minetest.register_node("morelights_vintage:lantern_f", { drawtype = "mesh", mesh = "morelights_vintage_lantern_f.obj", tiles = { - "morelights_vintage_lantern.png", + "morelights_vintage_lantern_frame.png^morelights_vintage_lantern_glass.png", "morelights_metal_dark_32.png" }, use_texture_alpha = "opaque", @@ -159,7 +160,7 @@ minetest.register_node("morelights_vintage:lantern_c", { drawtype = "mesh", mesh = "morelights_vintage_lantern_c.obj", tiles = { - "morelights_vintage_lantern.png", + "morelights_vintage_lantern_frame.png^morelights_vintage_lantern_glass.png", "morelights_metal_dark_32.png" }, use_texture_alpha = "opaque", @@ -185,7 +186,7 @@ minetest.register_node("morelights_vintage:lantern_w", { drawtype = "mesh", mesh = "morelights_vintage_lantern_w.obj", tiles = { - "morelights_vintage_lantern.png", + "morelights_vintage_lantern_frame.png^morelights_vintage_lantern_glass.png", "morelights_metal_dark_32.png" }, use_texture_alpha = "clip", diff --git a/mods/morelights/morelights_vintage/textures/morelights_vintage_block.png b/mods/morelights/morelights_vintage/textures/morelights_vintage_block.png deleted file mode 100644 index 89071f945a421db6eb55661996f57ec58a83663c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 272 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUwN(+cR2O&Bly=dUaL|?U z)R%EHQuH!Z3NTgju}}{**ZBHk%hy+Xe!SiPWl>Ho$cx37{YO#aRNjB ze+Ko*>S1O@6`2f0yLHZ-IkelI!F$h|vv-c3-pEjWobBCPXYb7nDyGIEZJJ!63^hke z-@Qw+InGdXHtzqwXLnC9$lTNW|Nqh36AUr;{Qm!c{`MGy4N&U;<2Oebc#bN(dpB8T zGec#fWr8|;3L}H}(XzX5m94iiXz!Led-wS1Z43sxZO)uIw%e1zz)3Ao%OfyFcduJ( Uk?S{BpfedfUHx3vIVCg!0NC4ZdjJ3c diff --git a/mods/morelights/morelights_vintage/textures/morelights_vintage_block_frame.png b/mods/morelights/morelights_vintage/textures/morelights_vintage_block_frame.png new file mode 100644 index 0000000000000000000000000000000000000000..150dc18e09a2717c1dd41cd24182abdc3d6affbd GIT binary patch literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa2=EDU1=7~);x5{G&FUZs%h-~^x7@0*ZXPrZhOD&^vHp8nh(cn8dq@&?WsBNH}F3o z0TSYZgv6N(;=+v_av@yW3#tSMi22QWH`$1!Ri%O=MxHmbGxO%-y?G<|2ag^rPgggT zkL*T+0TvP@{!`#}U@nK{25{Dch!C&{yafCNxRmf@cN6wJ=t3W^jlrXp{<_iM8LUCX zNPkot?LOODS4P9F!J2xdw$Wc5ZVh*oT1b=^#nuOBY)$pb`3!A+ zI(odaI@svYO>$}J4(dK`OCX&-z=@c@M`)u-Y ziB1^w zzn{=}O?4zcNaaWD2-jL+@HV{RQ zQRJA7Q6yFr8Ou=QxjGa%ru_wWL^pIi1gLFhKiFJZ8-9G@+e}8TZ_{SeROkszCoeFT zq^*>+*|c?HcYHPwO-HHxi0z}zUa8vY?2zp<{6G#D6UE&( z8NkDf)Z--><9_~!f#TLfnQ?m(McFaG$a3RXm}%%qTE=4>T&%#sz24w*Vt_+~cR+fh z)X~>I9PDl?TdSMO_HZy-C-r|dKPmj%&QF@pabr`WfV1W&z1nns(j3mf|yK=$M5=H6nRs@9{Vm@4tk;Mw!CiJht%`1xRKxObsRtN{HWuE ztte_m?a+7Kj_W#6=sKR?4gARI`JHZiIS2#4<%W^J+=_hH>v%yBx}7Mv?{)*%_uAcF zJ8-&A&uIm45p=>XHgsLzhr4#z^W2aE`>%g1 z6Sc6_X(7p|8@8h$%6mWeJa~0_ZLfu>$k%UsuH(Qy@_HS34!oY{G(UOBNv2GZM$&~K`q@xD7|6U>ee00GE^jBTDE=HHj#(cKq{u* zsOvQwso9!&*U;2@UAHacULCaS;EQl9@o5s*0o3#Bq&LS535#1%`Nh$^a_C`&vt zE+JdWUy+fZB0bO16gqxCi>F73@@QrBke;?owIL$^hh|}(q*V$c~UIc!e)0T&^!iDS3j3^P6I0004W zQchCd=bR^Hm|8mE_A=8*o{7@I^5+D@MCstvR*1(^Z^TkM+!Puc zytV~KrvpldDh>eqX6H0j~uIcRQ@puV_iL|cP)t-sagyae zB@#L(7e6N%Ln|CbEEqv99YZb|N-!NpG8{@VB1SVJPc3(tQ9E(~R$%Y+u^bI|crLOyYz0!R9nAX7)idQ2^X*1AvQ~iM^2@ zI%~#u!@h?@Goc$Yb)7WhyJ1F4(TwRv%wx9ZYe_R&TFuC)xMpj{jb%oKXdXj@EEYf( z&Ag0EE(Pmm$=)W>Oljx&Y3wp&8H zp2@y$!?)dM$aSc7Eqs%4$-qPW`sK*_Jx+`OAyXd`-pM&{Qho^kJNX4R4hU1ATug}o O0000VS)*PzAUUtU}C=GOXG_cwjG zxB2a(EngmO`|xc4m)D1zP72lml`)nC`2{mLJiCzw%@%4lcp|=lExcardui`vt8@@#*osZd0gY2O*3=?tE(elF{r5}E)ZlSY{U literal 0 HcmV?d00001 diff --git a/mods/mydoors/my_castle_doors/locked.lua b/mods/mydoors/my_castle_doors/locked.lua index 86a64924..1131793d 100644 --- a/mods/mydoors/my_castle_doors/locked.lua +++ b/mods/mydoors/my_castle_doors/locked.lua @@ -14,21 +14,21 @@ local cdoor_list = { --Number , Description , Inven Image , Image -- {"Castle Door 13" , "door13"}, } - -for i in ipairs(cdoor_list) do - local desc = cdoor_list[i][1] - local img = cdoor_list[i][2] - - -doors.register("my_castle_doors:"..img.."_locked", { - description = desc.." Locked", - inventory_image = "mydoors_"..img.."_inv.png", - groups = {choppy=2,cracky=2,door=1}, - tiles = {{ name = "mydoors_"..img..".png", backface_culling = true }}, - protected = true, -}) +local function add_door(desc, img) + doors.register("my_castle_doors:"..img.."_locked", { + description = desc.." Locked", + inventory_image = "mydoors_"..img.."_inv.png", + groups = {choppy=2,cracky=2,door=1}, + tiles = {{ name = "mydoors_"..img..".png", backface_culling = true }}, + protected = true, + }) end +for _,cdoor in ipairs(cdoor_list) do + add_door(unpack(cdoor)) +end + + ---[[ Crafts minetest.register_craft({ diff --git a/mods/mydoors/my_castle_doors/unlocked.lua b/mods/mydoors/my_castle_doors/unlocked.lua index bd497089..9ded97fe 100644 --- a/mods/mydoors/my_castle_doors/unlocked.lua +++ b/mods/mydoors/my_castle_doors/unlocked.lua @@ -14,21 +14,21 @@ local cdoor_list = { --Number , Description , Inven Image , Image {"Castle Door 13" , "door13"}, } - -for i in ipairs(cdoor_list) do - local desc = cdoor_list[i][1] - local img = cdoor_list[i][2] - - -doors.register_door("my_castle_doors:"..img, { - description = desc, - inventory_image = "mydoors_"..img.."_inv.png", - groups = {choppy=2,cracky=2,door=1}, - tiles = {{name="mydoors_"..img..".png", backface_culling = true}}, - protected = false, -}) +local function add_door(desc, img) + doors.register_door("my_castle_doors:"..img, { + description = desc, + inventory_image = "mydoors_"..img.."_inv.png", + groups = {choppy=2,cracky=2,door=1}, + tiles = {{name="mydoors_"..img..".png", backface_culling = true}}, + protected = false, + }) end +for _,cdoor in ipairs(cdoor_list) do + add_door(unpack(cdoor)) +end + + -- Crafts minetest.register_craft({ diff --git a/mods/mydoors/my_cottage_doors/locked.lua b/mods/mydoors/my_cottage_doors/locked.lua index 14410fbb..9895b4a6 100644 --- a/mods/mydoors/my_cottage_doors/locked.lua +++ b/mods/mydoors/my_cottage_doors/locked.lua @@ -3,21 +3,21 @@ local cdoor_list = { --Number , Description , Inven Image , Image -- {"Cottage Door 2" , "door2"}, } - -for i in ipairs(cdoor_list) do - local desc = cdoor_list[i][1] - local img = cdoor_list[i][2] - - -doors.register_door("my_cottage_doors:"..img.."_locked", { - description = desc.." Locked", - inventory_image = "mycdoors_"..img.."_inv.png", - groups = {choppy=2,cracky=2,door=1}, - tiles = {{name="mycdoors_"..img..".png", backface_culling = true}}, - protected = true, -}) +local function add_door(desc, img) + doors.register_door("my_cottage_doors:"..img.."_locked", { + description = desc.." Locked", + inventory_image = "mycdoors_"..img.."_inv.png", + groups = {choppy=2,cracky=2,door=1}, + tiles = {{name="mycdoors_"..img..".png", backface_culling = true}}, + protected = true, + }) end +for _,cdoor in ipairs(cdoor_list) do + add_door(unpack(cdoor)) +end + + -- Crafts minetest.register_craft({ diff --git a/mods/mydoors/my_cottage_doors/unlocked.lua b/mods/mydoors/my_cottage_doors/unlocked.lua index ca6ca41b..218b6918 100644 --- a/mods/mydoors/my_cottage_doors/unlocked.lua +++ b/mods/mydoors/my_cottage_doors/unlocked.lua @@ -3,21 +3,21 @@ local cdoor_list = { --Number , Description , Inven Image , Image {"Cottage Door 2" , "door2"}, } - -for i in ipairs(cdoor_list) do - local desc = cdoor_list[i][1] - local img = cdoor_list[i][2] - - -doors.register_door("my_cottage_doors:"..img, { - description = desc, - inventory_image = "mycdoors_"..img.."_inv.png", - groups = {choppy=2,cracky=2,door=1}, - tiles = {{name="mycdoors_"..img..".png", backface_culling = true}}, - protected = false, -}) +local function add_door(desc, img) + doors.register_door("my_cottage_doors:"..img, { + description = desc, + inventory_image = "mycdoors_"..img.."_inv.png", + groups = {choppy=2,cracky=2,door=1}, + tiles = {{name="mycdoors_"..img..".png", backface_culling = true}}, + protected = false, + }) end +for _,cdoor in ipairs(cdoor_list) do + add_door(unpack(cdoor)) +end + + -- Crafts minetest.register_craft({ diff --git a/mods/mydoors/my_default_doors/locked.lua b/mods/mydoors/my_default_doors/locked.lua index 487924f4..e1654548 100644 --- a/mods/mydoors/my_default_doors/locked.lua +++ b/mods/mydoors/my_default_doors/locked.lua @@ -6,31 +6,26 @@ local cdoor_list = { --Number , Description , Inven Image , Image { "5", "Mese Door" , "mese", "mese_crystal"}, } +local function add_door(num, desc, img, itm) + doors.register_door("my_default_doors:door"..num.."_locked", { + description = desc.." Locked", + inventory_image = "mydoors_"..img.."_inv.png", + groups = {choppy=2,cracky=2,door=1}, + tiles = {{name="mydoors_"..img..".png", backface_culling = true}}, + protected = true, + }) -for i in ipairs(cdoor_list) do - local num = cdoor_list[i][1] - local desc = cdoor_list[i][2] - local img = cdoor_list[i][3] - local itm = cdoor_list[i][4] - - -doors.register_door("my_default_doors:door"..num.."_locked", { - description = desc.." Locked", - inventory_image = "mydoors_"..img.."_inv.png", - groups = {choppy=2,cracky=2,door=1}, - tiles = {{name="mydoors_"..img..".png", backface_culling = true}}, - protected = true, -}) - - --- Crafts - -minetest.register_craft({ - output = "my_default_doors:door"..num.."_locked 1", - recipe = { - {"", "", ""}, - {"default:"..itm, "doors:door_steel", "default:"..itm}, - {"", "default:steel_ingot", ""} - } -}) + -- Crafts + minetest.register_craft({ + output = "my_default_doors:door"..num.."_locked 1", + recipe = { + {"", "", ""}, + {"default:"..itm, "doors:door_steel", "default:"..itm}, + {"", "default:steel_ingot", ""} + } + }) +end + +for _,cdoor in ipairs(cdoor_list) do + add_door(unpack(cdoor)) end diff --git a/mods/mydoors/my_default_doors/unlocked.lua b/mods/mydoors/my_default_doors/unlocked.lua index 75f530f4..c7d2b0ec 100644 --- a/mods/mydoors/my_default_doors/unlocked.lua +++ b/mods/mydoors/my_default_doors/unlocked.lua @@ -6,31 +6,26 @@ local cdoor_list = { --Number , Description , Inven Image , Image { "5", "Mese Door" , "mese", "mese_crystal"}, } +local function add_door(num, desc, img, itm) + doors.register_door("my_default_doors:door"..num, { + description = desc, + inventory_image = "mydoors_"..img.."_inv.png", + groups = {choppy=2,cracky=2,door=1}, + tiles = {{name="mydoors_"..img..".png", backface_culling = true}}, + protected = false, + }) -for i in ipairs(cdoor_list) do - local num = cdoor_list[i][1] - local desc = cdoor_list[i][2] - local img = cdoor_list[i][3] - local itm = cdoor_list[i][4] - - -doors.register_door("my_default_doors:door"..num, { - description = desc, - inventory_image = "mydoors_"..img.."_inv.png", - groups = {choppy=2,cracky=2,door=1}, - tiles = {{name="mydoors_"..img..".png", backface_culling = true}}, - protected = false, -}) - - --- Crafts - -minetest.register_craft({ - output = "my_default_doors:door"..num.." 1", - recipe = { - {"", "", ""}, - {"default:"..itm, "doors:door_steel", "default:"..itm}, - {"", "", ""} - } -}) + -- Crafts + minetest.register_craft({ + output = "my_default_doors:door"..num.." 1", + recipe = { + {"", "", ""}, + {"default:"..itm, "doors:door_steel", "default:"..itm}, + {"", "", ""} + } + }) +end + +for _,cdoor in ipairs(cdoor_list) do + add_door(unpack(cdoor)) end diff --git a/mods/mydoors/my_door_wood/init.lua b/mods/mydoors/my_door_wood/init.lua index f3babaaf..84881d30 100644 --- a/mods/mydoors/my_door_wood/init.lua +++ b/mods/mydoors/my_door_wood/init.lua @@ -8,9 +8,9 @@ local door_wood = { -- color, desc, image {"black", "Black", "black"}, } local function my_door_wood_block_stairs(nodename, def) - local mod = string.match (nodename,"(.+):") - local name = string.match (nodename,":(.+)") - minetest.register_node(nodename,def) + local mod = string.match(nodename, "(.+):") + local name = string.match(nodename, ":(.+)") + minetest.register_node(nodename, def) if minetest.get_modpath("moreblocks") then stairsplus:register_all( mod, @@ -33,30 +33,29 @@ local function my_door_wood_block_stairs(nodename, def) ) end end -for i in ipairs(door_wood) do - local color = door_wood[i][1] - local desc = door_wood[i][2] - local img = door_wood[i][3] -my_door_wood_block_stairs("my_door_wood:wood_"..color, { - description = desc.." Wood", - drawtype = "normal", - paramtype = "light", - tiles = {"mydoors_"..img.."_wood.png"}, - paramtype = "light", - groups = {cracky = 2, choppy = 2}, - sounds = default.node_sound_wood_defaults(), +local function add_door(color, desc, img) + my_door_wood_block_stairs("my_door_wood:wood_"..color, { + description = desc.." Wood", + drawtype = "normal", + paramtype = "light", + tiles = {"mydoors_"..img.."_wood.png"}, + paramtype = "light", + groups = {cracky = 2, choppy = 2}, + sounds = default.node_sound_wood_defaults(), + }) -}) - --- Crafts - -minetest.register_craft({ - output = "my_door_wood:wood_"..color, - recipe = { - {"default:wood", "", ""}, - {"dye:"..color, "", ""}, - {"", "", ""} - } -}) + -- Crafts + minetest.register_craft({ + output = "my_door_wood:wood_"..color, + recipe = { + {"default:wood", "", ""}, + {"dye:"..color, "", ""}, + {"", "", ""} + } + }) +end + +for _,door in ipairs(door_wood) do + add_door(unpack(door)) end diff --git a/mods/mydoors/my_fancy_doors/locked.lua b/mods/mydoors/my_fancy_doors/locked.lua index 6c09d0be..4442029d 100644 --- a/mods/mydoors/my_fancy_doors/locked.lua +++ b/mods/mydoors/my_fancy_doors/locked.lua @@ -9,21 +9,21 @@ local fdoor_list = { --Number , Description , Inven Image , Image {"Fancy Door 8" , "door8"}, } - -for i in ipairs(fdoor_list) do - local desc = fdoor_list[i][1] - local img = fdoor_list[i][2] - - -doors.register_door("my_fancy_doors:"..img.."_locked", { - description = desc.." Locked", - inventory_image = "myfdoors_"..img.."_inv.png", - groups = {choppy=2,cracky=2,door=1}, - tiles = {{ name = "myfdoors_"..img..".png", backface_culling = true }}, - protected = true, -}) +local function add_door(desc, img) + doors.register_door("my_fancy_doors:"..img.."_locked", { + description = desc.." Locked", + inventory_image = "myfdoors_"..img.."_inv.png", + groups = {choppy=2,cracky=2,door=1}, + tiles = {{ name = "myfdoors_"..img..".png", backface_culling = true }}, + protected = true, + }) end +for _,fdoor in ipairs(fdoor_list) do + add_door(unpack(fdoor)) +end + + -- Crafts minetest.register_craft({ diff --git a/mods/mydoors/my_fancy_doors/unlocked.lua b/mods/mydoors/my_fancy_doors/unlocked.lua index 2ab32f9b..edfe9211 100644 --- a/mods/mydoors/my_fancy_doors/unlocked.lua +++ b/mods/mydoors/my_fancy_doors/unlocked.lua @@ -9,21 +9,21 @@ local fdoor_list = { --Number , Description , Inven Image , Image -- {"Fancy Door 8" , "door8"}, } - -for i in ipairs(fdoor_list) do - local desc = fdoor_list[i][1] - local img = fdoor_list[i][2] - - -doors.register_door("my_fancy_doors:"..img, { - description = desc, - inventory_image = "myfdoors_"..img.."_inv.png", - groups = {choppy=2,cracky=2,door=1}, - tiles = {{ name = "myfdoors_"..img..".png", backface_culling = true }}, - protected = false, -}) +local function add_door(desc, img) + doors.register_door("my_fancy_doors:"..img, { + description = desc, + inventory_image = "myfdoors_"..img.."_inv.png", + groups = {choppy=2,cracky=2,door=1}, + tiles = {{ name = "myfdoors_"..img..".png", backface_culling = true }}, + protected = false, + }) end +for _,fdoor in ipairs(fdoor_list) do + add_door(unpack(fdoor)) +end + + -- Crafts minetest.register_craft({ diff --git a/mods/mydoors/my_future_doors/framed.lua b/mods/mydoors/my_future_doors/framed.lua index 0ece7810..26b0287a 100644 --- a/mods/mydoors/my_future_doors/framed.lua +++ b/mods/mydoors/my_future_doors/framed.lua @@ -1,190 +1,210 @@ local doorcolors = {"white","red","black"} -for i = 1,#doorcolors do -local col = doorcolors[i] -minetest.register_node("my_future_doors:door1a_"..col, { - description = "Door 1a", - tiles = { - "myndoors_door1_"..col..".png", - "myndoors_door1_"..col..".png", - "myndoors_door1_"..col..".png", - "myndoors_door1_"..col..".png", - "myndoors_door1_"..col.."b.png", - "myndoors_door1_"..col.."b.png" - }, - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - groups = {cracky = 3}, - node_box = { - type = "fixed", - fixed = { - {-0.4375, -0.5, -0.1875, 0.4375, 0.5, -0.0625}, - {-0.5, -0.5, -0.5, -0.4375, 0.5, 0.5}, - {0.4375, -0.5, -0.5, 0.5, 0.5, 0.5}, - {0.4375, -0.5, 0.5, 0.625, 0.5, 0.5625}, - {0.4375, -0.5, -0.5625, 0.625, 0.5, -0.5}, - {-0.625, -0.5, -0.5625, -0.4375, 0.5, -0.5}, - {-0.625, -0.5, 0.5, -0.4375, 0.5, 0.5625}, - } - }, - selection_box = { - type = "fixed", - fixed = { - {-0.4375, -0.5, -0.1875, 0.4375, 1.5, -0.0625}, --door - {0.4375, -0.5, -0.5625, 0.625, 1.4375, 0.5625}, --right - {-0.625, -0.5, -0.5625, -0.4375, 1.4375, 0.5625}, --left - {-0.625, 1.4375, -0.5625, 0.625, 1.625, 0.5625}, --top - } - }, +local function add_door(col) + minetest.register_node("my_future_doors:door1a_"..col, { + description = "Door 1a", + tiles = { + "myndoors_door1_"..col..".png", + "myndoors_door1_"..col..".png", + "myndoors_door1_"..col..".png", + "myndoors_door1_"..col..".png", + "myndoors_door1_"..col.."b.png", + "myndoors_door1_"..col.."b.png" + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + groups = {cracky = 3}, + node_box = { + type = "fixed", + fixed = { + {-0.4375, -0.5, -0.1875, 0.4375, 0.5, -0.0625}, + {-0.5, -0.5, -0.5, -0.4375, 0.5, 0.5}, + { 0.4375, -0.5, -0.5, 0.5, 0.5, 0.5}, + { 0.4375, -0.5, 0.5, 0.625, 0.5, 0.5625}, + { 0.4375, -0.5, -0.5625, 0.625, 0.5, -0.5}, + {-0.625, -0.5, -0.5625,-0.4375, 0.5, -0.5}, + {-0.625, -0.5, 0.5, -0.4375, 0.5, 0.5625}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.4375, -0.5, -0.1875, 0.4375, 1.5, -0.0625}, --door + { 0.4375, -0.5, -0.5625, 0.625, 1.4375, 0.5625}, --right + {-0.625, -0.5, -0.5625, -0.4375, 1.4375, 0.5625}, --left + {-0.625, 1.4375,-0.5625, 0.625, 1.625, 0.5625}, --top + } + }, -on_place = function(itemstack, placer, pointed_thing) - local pos1 = pointed_thing.above - local pos2 = {x=pos1.x, y=pos1.y, z=pos1.z} - pos2.y = pos2.y+1 - if - not minetest.registered_nodes[minetest.get_node(pos1).name].buildable_to or - not minetest.registered_nodes[minetest.get_node(pos2).name].buildable_to or - not placer or - not placer:is_player() then - return - end - return minetest.item_place(itemstack, placer, pointed_thing) -end, -after_place_node = function(pos, placer, itemstack, pointed_thing) - local node = minetest.get_node(pos) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name="my_future_doors:door1b_"..col,param2=node.param2}) -end, -after_destruct = function(pos, oldnode) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name="air"}) -end, -on_rightclick = function(pos, node, player, itemstack, pointed_thing) - local timer = minetest.get_node_timer(pos) - if node.name == "my_future_doors:door1a_"..col then - minetest.set_node(pos,{name="my_future_doors:door1c_"..col,param2=node.param2}) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name="my_future_doors:door1d_"..col,param2=node.param2}) - timer:start(3) - end -end, -}) -minetest.register_node("my_future_doors:door1b_"..col, { - tiles = { - "myndoors_door1_"..col..".png", - "myndoors_door1_"..col..".png", - "myndoors_door1_"..col..".png", - "myndoors_door1_"..col..".png", - "myndoors_door1_"..col.."b.png", - "myndoors_door1_"..col.."b.png" - }, - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - groups = {cracky = 1}, - node_box = { - type = "fixed", - fixed = { - {-0.4375, -0.5, -0.1875, 0.4375, 0.5, -0.0625}, - {-0.5, -0.5, -0.5, -0.4375, 0.5, 0.5}, - {0.4375, -0.5, -0.5, 0.5, 0.5, 0.5}, - {0.4375, -0.5, 0.5, 0.625, 0.5, 0.5625}, - {0.4375, -0.5, -0.5625, 0.625, 0.5, -0.5}, - {-0.625, -0.5, -0.5625, -0.4375, 0.5, -0.5}, - {-0.625, -0.5, 0.5, -0.4375, 0.5, 0.5625}, - {-0.5, 0.4375, -0.5, 0.5, 0.5, 0.5}, - {-0.625, 0.4375, -0.5625, 0.625, 0.625, -0.5}, - {-0.625, 0.4375, 0.5, 0.625, 0.625, 0.5625}, + on_place = function(itemstack, placer, pointed_thing) + local pos1 = pointed_thing.above + local pos2 = vector.add(pos1, {x=0,y=1,z=0}) + + if not placer or not placer:is_player() then + return + end + + if not minetest.registered_nodes[minetest.get_node(pos1).name].buildable_to or + not minetest.registered_nodes[minetest.get_node(pos2).name].buildable_to then + minetest.chat_send_player(placer:get_player_name(), "Not enough room") + return + end + + local player_name = placer:get_player_name() + if minetest.is_protected(pos1, player_name) then + minetest.record_protection_violation(pos1, player_name) + return + end + if minetest.is_protected(pos2, player_name) then + minetest.record_protection_violation(pos2, player_name) + return + end + return minetest.item_place(itemstack, placer, pointed_thing) + end, + after_place_node = function(pos, placer, itemstack, pointed_thing) + local node = minetest.get_node(pos) + minetest.set_node(vector.add(pos, {x=0,y=1,z=0}), {name="my_future_doors:door1b_"..col, param2=node.param2}) + end, + after_destruct = function(pos, oldnode) + minetest.set_node(vector.add(pos, {x=0,y=1,z=0}), {name="air"}) + end, + on_rightclick = function(pos, node, player, itemstack, pointed_thing) + if node.name == "my_future_doors:door1a_"..col then + local timer = minetest.get_node_timer(pos) + minetest.set_node(pos, {name="my_future_doors:door1c_"..col, param2=node.param2}) + minetest.set_node(vector.add(pos, {x=0,y=1,z=0}), {name="my_future_doors:door1d_"..col, param2=node.param2}) + timer:start(3) + end + end, + }) + minetest.register_node("my_future_doors:door1b_"..col, { + tiles = { + "myndoors_door1_"..col..".png", + "myndoors_door1_"..col..".png", + "myndoors_door1_"..col..".png", + "myndoors_door1_"..col..".png", + "myndoors_door1_"..col.."b.png", + "myndoors_door1_"..col.."b.png" + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + groups = {cracky = 1}, + node_box = { + type = "fixed", + fixed = { + {-0.4375, -0.5, -0.1875, 0.4375, 0.5, -0.0625}, + {-0.5, -0.5, -0.5, -0.4375, 0.5, 0.5}, + { 0.4375, -0.5, -0.5, 0.5, 0.5, 0.5}, + { 0.4375, -0.5, 0.5, 0.625, 0.5, 0.5625}, + { 0.4375, -0.5, -0.5625, 0.625, 0.5, -0.5}, + {-0.625, -0.5, -0.5625, -0.4375, 0.5, -0.5}, + {-0.625, -0.5, 0.5, -0.4375, 0.5, 0.5625}, + {-0.5, 0.4375, -0.5, 0.5, 0.5, 0.5}, + {-0.625, 0.4375, -0.5625, 0.625, 0.625, -0.5}, + {-0.625, 0.4375, 0.5, 0.625, 0.625, 0.5625}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, -0.5, -0.5, -0.5}, + } + }, + }) + minetest.register_node("my_future_doors:door1c_"..col, { + tiles = { + "myndoors_door1_"..col..".png", + "myndoors_door1_"..col..".png", + "myndoors_door1_"..col..".png", + "myndoors_door1_"..col..".png", + "myndoors_door1_"..col.."b.png", + "myndoors_door1_"..col.."b.png" + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + groups = {cracky = 1}, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, -0.4375, 0.5, 0.5}, + { 0.4375, -0.5, -0.5, 0.5, 0.5, 0.5}, + { 0.4375, -0.5, 0.5, 0.625, 0.5, 0.5625}, + { 0.4375, -0.5, -0.5625, 0.625, 0.5, -0.5}, + {-0.625, -0.5, -0.5625, -0.4375, 0.5, -0.5}, + {-0.625, -0.5, 0.5, -0.4375, 0.5, 0.5625}, + } + }, + selection_box = { + type = "fixed", + fixed = { + { 0.4375, -0.5, -0.5625, 0.625, 1.4375, 0.5625}, --right + {-0.625, -0.5, -0.5625, -0.4375, 1.4375, 0.5625}, --left + {-0.625, 1.4375, -0.5625, 0.625, 1.625, 0.5625}, --top + } + }, + drop = "my_future_doors:door1a_"..col, + after_place_node = function(pos, placer, itemstack, pointed_thing) + local node = minetest.get_node(pos) + local timer = minetest.get_node_timer(pos) + minetest.set_node(vector.add(pos, {x=0,y=1,z=0}), {name="my_future_doors:door1d_"..col, param2=node.param2}) + timer:start(3) + end, + after_destruct = function(pos, oldnode) + minetest.set_node(vector.add(pos, {x=0,y=1,z=0}), {name="air"}) + end, + on_timer = function(pos, elapsed) + local node = minetest.get_node(pos) + minetest.set_node(pos, {name="my_future_doors:door1a_"..col, param2=node.param2}) + minetest.set_node(vector.add(pos, {x=0,y=1,z=0}), {name="my_future_doors:door1b_"..col, param2=node.param2}) + end, + }) + minetest.register_node("my_future_doors:door1d_"..col, { + tiles = { + "myndoors_door1_"..col..".png", + "myndoors_door1_"..col..".png", + "myndoors_door1_"..col..".png", + "myndoors_door1_"..col..".png", + "myndoors_door1_"..col.."b.png", + "myndoors_door1_"..col.."b.png" + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + groups = {cracky = 1}, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, -0.4375, 0.5, 0.5}, + { 0.4375, -0.5, -0.5, 0.5, 0.5, 0.5}, + { 0.4375, -0.5, 0.5, 0.625, 0.5, 0.5625}, + { 0.4375, -0.5, -0.5625, 0.625, 0.5, -0.5}, + {-0.625, -0.5, -0.5625, -0.4375, 0.5, -0.5}, + {-0.625, -0.5, 0.5, -0.4375, 0.4375, 0.5625}, + {-0.5, 0.4375, -0.5, 0.5, 0.5, 0.5}, + {-0.625, 0.4375, -0.5625, 0.625, 0.625, -0.5}, + {-0.625, 0.4375, 0.5, 0.625, 0.625, 0.5625}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, -0.5, -0.5, -0.5}, + } + }, + }) + minetest.register_craft({ + output = "my_future_doors:door1a_"..col.." 1", + recipe = { + {"my_door_wood:wood_"..col, "wool:"..col, "my_door_wood:wood_"..col}, + {"wool:"..col, "my_door_wood:wood_"..col, "wool:"..col}, + {"my_door_wood:wood_"..col, "wool:"..col, "my_door_wood:wood_"..col} } - }, - selection_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.5, -0.5, -0.5, -0.5}, - } - }, -})minetest.register_node("my_future_doors:door1c_"..col, { - tiles = { - "myndoors_door1_"..col..".png", - "myndoors_door1_"..col..".png", - "myndoors_door1_"..col..".png", - "myndoors_door1_"..col..".png", - "myndoors_door1_"..col.."b.png", - "myndoors_door1_"..col.."b.png" - }, - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - groups = {cracky = 1}, - node_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.5, -0.4375, 0.5, 0.5}, - {0.4375, -0.5, -0.5, 0.5, 0.5, 0.5}, - {0.4375, -0.5, 0.5, 0.625, 0.5, 0.5625}, - {0.4375, -0.5, -0.5625, 0.625, 0.5, -0.5}, - {-0.625, -0.5, -0.5625, -0.4375, 0.5, -0.5}, - {-0.625, -0.5, 0.5, -0.4375, 0.5, 0.5625}, - } - }, - selection_box = { - type = "fixed", - fixed = { - {0.4375, -0.5, -0.5625, 0.625, 1.4375, 0.5625}, --right - {-0.625, -0.5, -0.5625, -0.4375, 1.4375, 0.5625}, --left - {-0.625, 1.4375, -0.5625, 0.625, 1.625, 0.5625}, --top - } - }, -after_place_node = function(pos, placer, itemstack, pointed_thing) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name="my_future_doors:door1d_"..col,param2=nodeu.param2}) -end, -after_destruct = function(pos, oldnode) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name="air"}) -end, -on_timer = function(pos, elapsed) - local node = minetest.get_node(pos) - minetest.set_node(pos,{name="my_future_doors:door1a_"..col,param2=node.param2}) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name="my_future_doors:door1b_"..col,param2=node.param2}) -end, -}) -minetest.register_node("my_future_doors:door1d_"..col, { - tiles = { - "myndoors_door1_"..col..".png", - "myndoors_door1_"..col..".png", - "myndoors_door1_"..col..".png", - "myndoors_door1_"..col..".png", - "myndoors_door1_"..col.."b.png", - "myndoors_door1_"..col.."b.png" - }, - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - groups = {cracky = 1}, - node_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.5, -0.4375, 0.5, 0.5}, - {0.4375, -0.5, -0.5, 0.5, 0.5, 0.5}, - {0.4375, -0.5, 0.5, 0.625, 0.5, 0.5625}, - {0.4375, -0.5, -0.5625, 0.625, 0.5, -0.5}, - {-0.625, -0.5, -0.5625, -0.4375, 0.5, -0.5}, - {-0.625, -0.5, 0.5, -0.4375, 0.4375, 0.5625}, - {-0.5, 0.4375, -0.5, 0.5, 0.5, 0.5}, - {-0.625, 0.4375, -0.5625, 0.625, 0.625, -0.5}, - {-0.625, 0.4375, 0.5, 0.625, 0.625, 0.5625}, - } - }, - selection_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.5, -0.5, -0.5, -0.5}, - } - }, -}) -minetest.register_craft({ - output = "my_future_doors:door1a_"..col.." 1", - recipe = { - {"my_door_wood:wood_"..col, "wool:"..col, "my_door_wood:wood_"..col}, - {"wool:"..col, "my_door_wood:wood_"..col, "wool:"..col}, - {"my_door_wood:wood_"..col, "wool:"..col, "my_door_wood:wood_"..col} - } -}) + }) +end + +for _,col in ipairs(doorcolors) do + add_door(col) end diff --git a/mods/mydoors/my_future_doors/sliding.lua b/mods/mydoors/my_future_doors/sliding.lua index f9b9e122..50a401a1 100644 --- a/mods/mydoors/my_future_doors/sliding.lua +++ b/mods/mydoors/my_future_doors/sliding.lua @@ -1,270 +1,247 @@ local doors = { - {"my_future_doors:door2a","my_future_doors:door2b","my_future_doors:door2c","my_future_doors:door2d","2","Steel"}, - {"my_future_doors:door3a","my_future_doors:door3b","my_future_doors:door3c","my_future_doors:door3d","3","Squared"}, - {"my_future_doors:door4a","my_future_doors:door4b","my_future_doors:door4c","my_future_doors:door4d","4","Dark"}, - {"my_future_doors:door6a","my_future_doors:door6b","my_future_doors:door6c","my_future_doors:door6d","6","Points"}, - {"my_future_doors:door7a","my_future_doors:door7b","my_future_doors:door7c","my_future_doors:door7d","7","Snow Flake"}, - {"my_future_doors:door8a","my_future_doors:door8b","my_future_doors:door8c","my_future_doors:door8d","8","Blue Steel"}, - {"my_future_doors:door9a","my_future_doors:door9b","my_future_doors:door9c","my_future_doors:door9d","9","Tan Steel"}, - } - -local recipes = { - {{"default:steel_ingot", "default:steelblock", ""}, - {"default:steel_ingot", "default:steel_ingot", ""}, - {"default:steelblock", "default:steel_ingot", ""}}, - {{"default:steel_ingot","default:steel_ingot", ""}, - {"default:steel_ingot", "default:steel_ingot", ""}, - {"default:steelblock", "default:steelblock", ""}}, - {{"default:steel_ingot","default:steel_ingot", ""}, - {"default:steel_ingot", "default:steel_ingot", "dye:black"}, - {"default:steelblock", "default:steelblock", ""}}, - {{"default:steel_ingot","default:steel_ingot", ""}, - {"default:steelblock", "default:steelblock", ""}, - {"default:steel_ingot", "default:steel_ingot", ""}}, - {{"default:steel_ingot", "default:steelblock", ""}, - {"default:steel_ingot", "default:steel_ingot", ""}, - { "default:steel_ingot", "default:steelblock",""}}, - {{"default:steel_ingot", "default:steelblock", ""}, - {"default:steel_ingot", "default:steel_ingot", "dye:blue"}, - { "default:steel_ingot", "default:steelblock",""}}, - {{"default:steel_ingot", "default:steelblock", ""}, - {"default:steel_ingot", "default:steel_ingot", "dye:brown"}, - { "default:steel_ingot", "default:steelblock",""}}, + {"my_future_doors:door2a","my_future_doors:door2b","my_future_doors:door2c","my_future_doors:door2d","2","Steel", + {{"default:steel_ingot", "default:steelblock", ""}, + {"default:steel_ingot", "default:steel_ingot", ""}, + {"default:steelblock", "default:steel_ingot", ""}}}, + {"my_future_doors:door3a","my_future_doors:door3b","my_future_doors:door3c","my_future_doors:door3d","3","Squared", + {{"default:steel_ingot","default:steel_ingot", ""}, + {"default:steel_ingot", "default:steel_ingot", ""}, + {"default:steelblock", "default:steelblock", ""}}}, + {"my_future_doors:door4a","my_future_doors:door4b","my_future_doors:door4c","my_future_doors:door4d","4","Dark", + {{"default:steel_ingot","default:steel_ingot", ""}, + {"default:steel_ingot", "default:steel_ingot", "dye:black"}, + {"default:steelblock", "default:steelblock", ""}}}, + {"my_future_doors:door6a","my_future_doors:door6b","my_future_doors:door6c","my_future_doors:door6d","6","Points", + {{"default:steel_ingot","default:steel_ingot", ""}, + {"default:steelblock", "default:steelblock", ""}, + {"default:steel_ingot", "default:steel_ingot", ""}}}, + {"my_future_doors:door7a","my_future_doors:door7b","my_future_doors:door7c","my_future_doors:door7d","7","Snow Flake", + {{"default:steel_ingot", "default:steelblock", ""}, + {"default:steel_ingot", "default:steel_ingot", ""}, + { "default:steel_ingot", "default:steelblock",""}}}, + {"my_future_doors:door8a","my_future_doors:door8b","my_future_doors:door8c","my_future_doors:door8d","8","Blue Steel", + {{"default:steel_ingot", "default:steelblock", ""}, + {"default:steel_ingot", "default:steel_ingot", "dye:blue"}, + { "default:steel_ingot", "default:steelblock",""}}}, + {"my_future_doors:door9a","my_future_doors:door9b","my_future_doors:door9c","my_future_doors:door9d","9","Tan Steel", + {{"default:steel_ingot", "default:steelblock", ""}, + {"default:steel_ingot", "default:steel_ingot", "dye:brown"}, + { "default:steel_ingot", "default:steelblock",""}}}, } -for i in ipairs (doors) do -local doora = doors[i][1] -local doorb = doors[i][2] -local doorc = doors[i][3] -local doord = doors[i][4] -local num = doors[i][5] -local des = doors[i][6] -local recipe = recipes[i] -local function onplace(itemstack, placer, pointed_thing) - local pos1 = pointed_thing.above - local pos2 = {x=pos1.x, y=pos1.y, z=pos1.z} - pos2.y = pos2.y+1 - if - not minetest.registered_nodes[minetest.get_node(pos1).name].buildable_to or - not minetest.registered_nodes[minetest.get_node(pos2).name].buildable_to or - not placer or - not placer:is_player() then - return - end - local pt = pointed_thing.above - local pt2 = {x=pt.x, y=pt.y, z=pt.z} - pt2.y = pt2.y+1 - local p2 = minetest.dir_to_facedir(placer:get_look_dir()) - local pt3 = {x=pt.x, y=pt.y, z=pt.z} - local p4 = 0 - if p2 == 0 then - pt3.x = pt3.x-1 - p4 = 2 - elseif p2 == 1 then - pt3.z = pt3.z+1 - p4 = 3 - elseif p2 == 2 then - pt3.x = pt3.x+1 - p4 = 0 - elseif p2 == 3 then - pt3.z = pt3.z-1 - p4 = 1 - end - if minetest.get_node(pt3).name == doora then - minetest.set_node(pt, {name=doora, param2=p4}) - minetest.set_node(pt2, {name=doorb, param2=p4}) - else - minetest.set_node(pt, {name=doora, param2=p2}) - minetest.set_node(pt2, {name=doorb, param2=p2}) - end - itemstack: take_item() +local function add_door(doora, doorb, doorc, doord, num, des, recipe) + local function onplace(itemstack, placer, pointed_thing) + local pos1 = pointed_thing.above + local pos2 = vector.add(pos1, {x=0,y=1,z=0}) + + if not placer or not placer:is_player() then + return + end + + if not minetest.registered_nodes[minetest.get_node(pos1).name].buildable_to or + not minetest.registered_nodes[minetest.get_node(pos2).name].buildable_to then + minetest.chat_send_player(placer:get_player_name(), "Not enough room") + return + end + + local p2 = minetest.dir_to_facedir(placer:get_look_dir()) + local p4 = (p2+2)%4 + local pos3 = vector.add(pos1, minetest.facedir_to_dir((p2-1)%4)) + + local player_name = placer:get_player_name() + if minetest.is_protected(pos1, player_name) then + minetest.record_protection_violation(pos1, player_name) + return + end + if minetest.is_protected(pos2, player_name) then + minetest.record_protection_violation(pos2, player_name) + return + end + + if minetest.get_node(pos3).name == doora then + minetest.set_node(pos1, {name=doora, param2=p4}) + minetest.set_node(pos2, {name=doorb, param2=p4}) + else + minetest.set_node(pos1, {name=doora, param2=p2}) + minetest.set_node(pos2, {name=doorb, param2=p2}) + end + + if not (minetest.settings:get_bool("creative_mode") or minetest.check_player_privs(placer:get_player_name(), {creative = true})) then + itemstack:take_item() + end return itemstack -end + end -local function afterdestruct(pos, oldnode) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name="air"}) -end + local function afterdestruct(pos, oldnode) + minetest.set_node(vector.add(pos, {x=0,y=1,z=0}), {name="air"}) + end -local function rightclick(pos, node, player, itemstack, pointed_thing) - local timer = minetest.get_node_timer(pos) - local a = minetest.get_node({x=pos.x, y=pos.y, z=pos.z-1}) - local b = minetest.get_node({x=pos.x, y=pos.y, z=pos.z+1}) - local c = minetest.get_node({x=pos.x+1, y=pos.y, z=pos.z}) - local d = minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z}) + local function rightclick(pos, node, player, itemstack, pointed_thing) + local timer = minetest.get_node_timer(pos) minetest.set_node(pos, {name=doorc, param2=node.param2}) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z}, {name=doord, param2=node.param2}) + minetest.set_node(vector.add(pos, {x=0,y=1,z=0}), {name=doord, param2=node.param2}) - if a.name == doora then - minetest.set_node({x=pos.x, y=pos.y, z=pos.z-1}, {name=doorc, param2=a.param2}) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z-1}, {name=doord, param2=a.param2}) - end - if b.name == doora then - minetest.set_node({x=pos.x, y=pos.y, z=pos.z+1}, {name=doorc, param2=b.param2}) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z+1}, {name=doord, param2=b.param2}) - end - if c.name == doora then - minetest.set_node({x=pos.x+1, y=pos.y, z=pos.z}, {name=doorc, param2=c.param2}) - minetest.set_node({x=pos.x+1,y=pos.y+1,z=pos.z}, {name=doord, param2=c.param2}) - end - if d.name == doora then - minetest.set_node({x=pos.x-1, y=pos.y, z=pos.z}, {name=doorc, param2=d.param2}) - minetest.set_node({x=pos.x-1,y=pos.y+1,z=pos.z}, {name=doord, param2=d.param2}) + -- Open neighbouring doors + for i=0,3 do + local dir = minetest.facedir_to_dir(i) + local neighbour_pos = vector.add(pos, dir) + local neighbour = minetest.get_node(neighbour_pos) + if neighbour.name == "my_misc_doors:door2a" then + minetest.set_node(neighbour_pos, {name=doorc, param2=neighbour.param2}) + minetest.set_node(vector.add(neighbour_pos, {x=0,y=1,z=0}), {name=doord, param2=neighbour.param2}) + end end - timer:start(3) + timer:start(3) + end -end + local function afterplace(pos, placer, itemstack, pointed_thing) + local node = minetest.get_node(pos) + local timer = minetest.get_node_timer(pos) + minetest.set_node(vector.add(pos, {x=0,y=1,z=0}), {name=doord, param2=node.param2}) + timer:start(3) + end -local function afterplace(pos, placer, itemstack, pointed_thing) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name=doord,param2=nodeu.param2}) -end - -local function ontimer(pos, elapsed) - local node = minetest.get_node(pos) - local a = minetest.get_node({x=pos.x, y=pos.y, z=pos.z-1}) - local b = minetest.get_node({x=pos.x, y=pos.y, z=pos.z+1}) - local c = minetest.get_node({x=pos.x+1, y=pos.y, z=pos.z}) - local d = minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z}) + local function ontimer(pos, elapsed) + local node = minetest.get_node(pos) minetest.set_node(pos, {name=doora, param2=node.param2}) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z}, {name=doorb, param2=node.param2}) + minetest.set_node(vector.add(pos, {x=0,y=1,z=0}), {name=doorb, param2=node.param2}) - if a.name == doorc then - minetest.set_node({x=pos.x, y=pos.y, z=pos.z-1}, {name=doora, param2=a.param2}) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z-1}, {name=doorb, param2=a.param2}) - end - if b.name == doorc then - minetest.set_node({x=pos.x, y=pos.y, z=pos.z+1}, {name=doora, param2=b.param2}) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z+1}, {name=doorb, param2=b.param2}) - end - if c.name == doorc then - minetest.set_node({x=pos.x+1, y=pos.y, z=pos.z}, {name=doora, param2=c.param2}) - minetest.set_node({x=pos.x+1,y=pos.y+1,z=pos.z}, {name=doorb, param2=c.param2}) - end - if d.name == doorc then - minetest.set_node({x=pos.x-1, y=pos.y, z=pos.z}, {name=doora, param2=d.param2}) - minetest.set_node({x=pos.x-1,y=pos.y+1,z=pos.z}, {name=doorb, param2=d.param2}) + -- Close neighbouring doors + for i=0,3 do + local dir = minetest.facedir_to_dir(i) + local neighbour_pos = vector.add(pos, dir) + local neighbour = minetest.get_node(neighbour_pos) + if neighbour.name == "my_misc_doors:door2c" then + minetest.set_node(neighbour_pos, {name=doora, param2=neighbour.param2}) + minetest.set_node(vector.add(neighbour_pos, {x=0,y=1,z=0}), {name=doorb, param2=neighbour.param2}) + end end + end + minetest.register_node(doora, { + description = des.." Sliding Door", + inventory_image = "myndoors_door"..num.."a_inv.png", + wield_image = "myndoors_door"..num.."a_inv.png", + tiles = { + "myndoors_door"..num.."a_edge.png", + "myndoors_door"..num.."a_edge.png", + "myndoors_door"..num.."a_edge.png", + "myndoors_door"..num.."a_edge.png", + "myndoors_door"..num.."a_bottom.png", + "myndoors_door"..num.."a_bottom.png^[transformFX" + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + groups = {cracky = 3}, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.0625, 0.5, 0.5, 0.0625} + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.0625, 0.5, 1.5, 0.0625} + } + }, + + on_place = onplace, + + after_destruct = afterdestruct, + + on_rightclick = rightclick, + }) + minetest.register_node(doorb, { + tiles = { + "myndoors_door"..num.."a_edge.png", + "myndoors_door"..num.."a_edge.png", + "myndoors_door"..num.."a_edge.png", + "myndoors_door"..num.."a_edge.png", + "myndoors_door"..num.."a_bottom.png^[transformFY", + "myndoors_door"..num.."a_bottom.png^[transformFX^[transformFY" + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + groups = {cracky = 1}, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.0625, 0.5, 0.5, 0.0625} + } + }, + selection_box = { + type = "fixed", + fixed = { + {0, 0, 0, 0, 0, 0}, + } + }, + }) + minetest.register_node(doorc, { + tiles = { + "myndoors_door"..num.."a_edge.png", + "myndoors_door"..num.."a_edge.png", + "myndoors_door"..num.."a_edge.png", + "myndoors_door"..num.."a_edge.png", + "myndoors_door"..num.."a_bottomo.png", + "myndoors_door"..num.."a_bottomo.png^[transformFX" + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + drop = doora, + groups = {cracky = 1}, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.0625, -0.25, 0.5, 0.0625}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.0625, -0.25, 1.5, 0.0625}, + } + }, + after_place_node = afterplace, + after_destruct = afterdestruct, + on_timer = ontimer, + }) + minetest.register_node(doord, { + tiles = { + "myndoors_door"..num.."a_edge.png", + "myndoors_door"..num.."a_edge.png", + "myndoors_door"..num.."a_edge.png", + "myndoors_door"..num.."a_edge.png", + "myndoors_door"..num.."a_bottomo.png^[transformFY", + "myndoors_door"..num.."a_bottomo.png^[transformFX^[transformFY" + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + groups = {cracky = 1}, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.0625, -0.25, 0.5, 0.0625}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {0, 0, 0, 0, 0, 0}, + } + }, + }) + minetest.register_craft({ + output = "my_future_doors:door"..num.."a 2", + recipe = recipe + }) end -minetest.register_node(doora, { - description = des.." Sliding Door", - inventory_image = "myndoors_door"..num.."a_inv.png", - wield_image = "myndoors_door"..num.."a_inv.png", - tiles = { - "myndoors_door"..num.."a_edge.png", - "myndoors_door"..num.."a_edge.png", - "myndoors_door"..num.."a_edge.png", - "myndoors_door"..num.."a_edge.png", - "myndoors_door"..num.."a_bottom.png", - "myndoors_door"..num.."a_bottom.png^[transformFX" - }, - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - groups = {cracky = 3}, - node_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.0625, 0.5, 0.5, 0.0625} - } - }, - selection_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.0625, 0.5, 1.5, 0.0625} - } - }, - -on_place = onplace, - -after_destruct = afterdestruct, - -on_rightclick = rightclick, -}) -minetest.register_node(doorb, { - tiles = { - "myndoors_door"..num.."a_edge.png", - "myndoors_door"..num.."a_edge.png", - "myndoors_door"..num.."a_edge.png", - "myndoors_door"..num.."a_edge.png", - "myndoors_door"..num.."a_bottom.png^[transformFY", - "myndoors_door"..num.."a_bottom.png^[transformFX^[transformFY" - }, - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - groups = {cracky = 1}, - node_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.0625, 0.5, 0.5, 0.0625} - } - }, - selection_box = { - type = "fixed", - fixed = { - {0, 0, 0, 0, 0, 0}, - } - }, -})minetest.register_node(doorc, { - tiles = { - "myndoors_door"..num.."a_edge.png", - "myndoors_door"..num.."a_edge.png", - "myndoors_door"..num.."a_edge.png", - "myndoors_door"..num.."a_edge.png", - "myndoors_door"..num.."a_bottomo.png", - "myndoors_door"..num.."a_bottomo.png^[transformFX" - }, - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - drop = doora, - groups = {cracky = 1}, - node_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.0625, -0.25, 0.5, 0.0625}, - } - }, - selection_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.0625, -0.25, 1.5, 0.0625}, - } - }, -after_place_node = afterplace, -after_destruct = afterdestruct, -on_timer = ontimer, -}) -minetest.register_node(doord, { - tiles = { - "myndoors_door"..num.."a_edge.png", - "myndoors_door"..num.."a_edge.png", - "myndoors_door"..num.."a_edge.png", - "myndoors_door"..num.."a_edge.png", - "myndoors_door"..num.."a_bottomo.png^[transformFY", - "myndoors_door"..num.."a_bottomo.png^[transformFX^[transformFY" - }, - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - groups = {cracky = 1}, - node_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.0625, -0.25, 0.5, 0.0625}, - } - }, - selection_box = { - type = "fixed", - fixed = { - {0, 0, 0, 0, 0, 0}, - } - }, -}) -minetest.register_craft({ - output = "my_future_doors:door"..num.."a 2", - recipe = recipe -}) +for i, door in ipairs(doors) do + add_door(unpack(door)) end diff --git a/mods/mydoors/my_garage_door/init.lua b/mods/mydoors/my_garage_door/init.lua index eee374fc..80bc3512 100644 --- a/mods/mydoors/my_garage_door/init.lua +++ b/mods/mydoors/my_garage_door/init.lua @@ -11,11 +11,11 @@ minetest.register_node("my_garage_door:garage_door", { node_box = { type = "fixed", fixed = { - {-1.5, -0.5, -0.125, 1.5, 0.5, -0.0625}, - {-1.5, -0.5, -0.1875, 1.5, -0.3125, -0.0625}, + {-1.5, -0.5, -0.125, 1.5, 0.5, -0.0625}, + {-1.5, -0.5, -0.1875, 1.5, -0.3125, -0.0625}, {-1.5, -0.25, -0.1875, 1.5, -0.0624999, -0.0625}, - {-1.5, 0, -0.1875, 1.5, 0.1875, -0.0625}, - {-1.5, 0.25, -0.1875, 1.5, 0.4375, -0.0625}, + {-1.5, 0, -0.1875, 1.5, 0.1875, -0.0625}, + {-1.5, 0.25, -0.1875, 1.5, 0.4375, -0.0625}, } }, selection_box = { @@ -25,38 +25,74 @@ minetest.register_node("my_garage_door:garage_door", { } }, on_place = function(itemstack, placer, pointed_thing) - local p = pointed_thing.above - local p2 = minetest.dir_to_facedir(placer:get_look_dir()) -print(p2) - minetest.set_node(p, {name = "my_garage_door:garage_door",param2 = p2}) - minetest.set_node({x=p.x,y=p.y+1,z=p.z}, {name = "my_garage_door:garage_door_top",param2 = p2}) + local pos1 = pointed_thing.above + local pos2 = vector.add(pos1, {x=0,y=1,z=0}) + + if not placer or not placer:is_player() then + return + end + + if not minetest.registered_nodes[minetest.get_node(pos1).name].buildable_to or + not minetest.registered_nodes[minetest.get_node(pos2).name].buildable_to then + minetest.chat_send_player(placer:get_player_name(), "Not enough room") + return + end + + local player_name = placer:get_player_name() + if minetest.is_protected(pos1, player_name) then + minetest.record_protection_violation(pos1, player_name) + return + end + if minetest.is_protected(pos2, player_name) then + minetest.record_protection_violation(pos2, player_name) + return + end + + local p2 = minetest.dir_to_facedir(placer:get_look_dir()) + minetest.set_node(pos1, {name = "my_garage_door:garage_door", param2 = p2}) + minetest.set_node(pos2, {name = "my_garage_door:garage_door_top", param2 = p2}) + + if not (minetest.settings:get_bool("creative_mode") or minetest.check_player_privs(placer:get_player_name(), {creative = true})) then + itemstack:take_item() + end + return itemstack end, after_destruct = function(pos, oldnode) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name = "air"}) + minetest.set_node(vector.add(pos, {x=0,y=1,z=0}), {name = "air"}) end, on_rightclick = function(pos, node, player, itemstack, pointed_thing) - local p2 = node.param2 --minetest.dir_to_facedir(player:get_look_dir()) - local t1 = {x=pos.x,y=pos.y+1,z=pos.z} - local t2 = {x=pos.x,y=pos.y+1,z=pos.z} - if p2 == 0 then - t1 = {x=pos.x,y=pos.y+1,z=pos.z+1} - t2 = {x=pos.x,y=pos.y+1,z=pos.z+2} - elseif p2 == 1 then - t1 = {x=pos.x+1,y=pos.y+1,z=pos.z} - t2 = {x=pos.x+2,y=pos.y+1,z=pos.z} - elseif p2 == 2 then - t1 = {x=pos.x,y=pos.y+1,z=pos.z-1} - t2 = {x=pos.x,y=pos.y+1,z=pos.z-2} - elseif p2 == 3 then - t1 = {x=pos.x-1,y=pos.y+1,z=pos.z} - t2 = {x=pos.x-2,y=pos.y+1,z=pos.z} + local p2 = node.param2 + local dir = minetest.facedir_to_dir(p2) + local above = vector.add(pos, {x=0,y=1,z=0}) + + local t1 = vector.add(above, dir) + local t2 = vector.add(t1, dir) + + if not player or not player:is_player() then + return end - minetest.set_node(t1,{name="my_garage_door:garage_door_open",param2=p2}) - minetest.set_node(t2,{name="my_garage_door:garage_door_open2",param2=p2}) - minetest.set_node(pos,{name="air"}) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name="air"}) - --end + + if not minetest.registered_nodes[minetest.get_node(t1).name].buildable_to or + not minetest.registered_nodes[minetest.get_node(t2).name].buildable_to then + minetest.chat_send_player(player:get_player_name(), "Not enough room to open") + return + end + + local player_name = player:get_player_name() + if minetest.is_protected(t1, player_name) then + minetest.record_protection_violation(t1, player_name) + return + end + if minetest.is_protected(t2, player_name) then + minetest.record_protection_violation(t2, player_name) + return + end + + minetest.set_node(t1, {name="my_garage_door:garage_door_open", param2=p2}) + minetest.set_node(t2, {name="my_garage_door:garage_door_open2", param2=p2}) + minetest.set_node(pos, {name="air"}) + minetest.set_node(above, {name="air"}) end, }) minetest.register_node("my_garage_door:garage_door_top", { @@ -73,11 +109,11 @@ minetest.register_node("my_garage_door:garage_door_top", { node_box = { type = "fixed", fixed = { - {-1.5, -0.5, -0.125, 1.5, 0.5, -0.0625}, - {-1.5, -0.5, -0.1875, 1.5, -0.3125, -0.0625}, + {-1.5, -0.5, -0.125, 1.5, 0.5, -0.0625}, + {-1.5, -0.5, -0.1875, 1.5, -0.3125, -0.0625}, {-1.5, -0.25, -0.1875, 1.5, -0.0624999, -0.0625}, - {-1.5, 0, -0.1875, 1.5, 0.1875, -0.0625}, - {-1.5, 0.25, -0.1875, 1.5, 0.4375, -0.0625}, + {-1.5, 0, -0.1875, 1.5, 0.1875, -0.0625}, + {-1.5, 0.25, -0.1875, 1.5, 0.4375, -0.0625}, } }, selection_box = {type = "fixed",fixed = {{0, 0, 0, 0, 0, 0},}}, @@ -95,41 +131,48 @@ minetest.register_node("my_garage_door:garage_door_open", { node_box = { type = "fixed", fixed = { - {-1.5, 0.4375, -0.5, 1.5, 0.375, 0.5}, - {-1.5, 0.375, 0.3125, 1.5, 0.5, 0.5}, - {-1.5, 0.375, 0.0625, 1.5, 0.5, 0.25}, - {-1.5, 0.375, -0.1875, 1.5, 0.5, 0}, - {-1.5, 0.375, -0.4375, 1.5, 0.5, -0.25}, + {-1.5, 0.4375, -0.5, 1.5, 0.375, 0.5}, + {-1.5, 0.375, 0.3125, 1.5, 0.5, 0.5}, + {-1.5, 0.375, 0.0625, 1.5, 0.5, 0.25}, + {-1.5, 0.375, -0.1875, 1.5, 0.5, 0}, + {-1.5, 0.375, -0.4375, 1.5, 0.5, -0.25}, } }, selection_box = {type = "fixed",fixed = {{-1.5, 0.375, -0.5, 1.5, 0.5, 1.5},}}, on_rightclick = function(pos, node, player, itemstack, pointed_thing) - local p2 = node.param2 --minetest.dir_to_facedir(player:get_look_dir()) - local t1 = {x=pos.x,y=pos.y+1,z=pos.z} - local t2 = {x=pos.x,y=pos.y+1,z=pos.z} - local t3 - if p2 == 0 then - t1 = {x=pos.x,y=pos.y,z=pos.z-1} - t2 = {x=pos.x,y=pos.y-1,z=pos.z-1} - t3 = {x=pos.x,y=pos.y,z=pos.z+1} - elseif p2 == 1 then - t1 = {x=pos.x-1,y=pos.y,z=pos.z} - t2 = {x=pos.x-1,y=pos.y-1,z=pos.z} - t3 = {x=pos.x+1,y=pos.y,z=pos.z} - elseif p2 == 2 then - t1 = {x=pos.x,y=pos.y,z=pos.z+1} - t2 = {x=pos.x,y=pos.y-1,z=pos.z+1} - t3 = {x=pos.x,y=pos.y,z=pos.z-1} - elseif p2 == 3 then - t1 = {x=pos.x+1,y=pos.y,z=pos.z} - t2 = {x=pos.x+1,y=pos.y-1,z=pos.z} - t3 = {x=pos.x-1,y=pos.y,z=pos.z} + local p2 = node.param2 + local dir = minetest.facedir_to_dir((p2+2)%4) + + local t1 = vector.add(pos, dir) + local t2 = vector.subtract(t1, {x=0,y=1,z=0}) + + if not player or not player:is_player() then + return end - minetest.set_node(t1,{name="my_garage_door:garage_door_top",param2=p2}) - minetest.set_node(t2,{name="my_garage_door:garage_door",param2=p2}) - minetest.set_node(pos,{name="air"}) - minetest.set_node(t3,{name="air"}) + + if not minetest.registered_nodes[minetest.get_node(t1).name].buildable_to or + not minetest.registered_nodes[minetest.get_node(t2).name].buildable_to then + minetest.chat_send_player(player:get_player_name(), "Not enough room to close") + return + end + + local player_name = player:get_player_name() + if minetest.is_protected(t1, player_name) then + minetest.record_protection_violation(t1, player_name) + return + end + if minetest.is_protected(t2, player_name) then + minetest.record_protection_violation(t2, player_name) + return + end + + local t3 = vector.subtract(pos, dir) + + minetest.set_node(t1, {name="my_garage_door:garage_door_top", param2=p2}) + minetest.set_node(t2, {name="my_garage_door:garage_door", param2=p2}) + minetest.set_node(pos, {name="air"}) + minetest.set_node(t3, {name="air"}) end, }) minetest.register_node("my_garage_door:garage_door_open2", { @@ -146,11 +189,11 @@ minetest.register_node("my_garage_door:garage_door_open2", { node_box = { type = "fixed", fixed = { - {-1.5, 0.4375, -0.5, 1.5, 0.375, 0.5}, - {-1.5, 0.375, 0.3125, 1.5, 0.5, 0.5}, - {-1.5, 0.375, 0.0625, 1.5, 0.5, 0.25}, - {-1.5, 0.375, -0.1875, 1.5, 0.5, 0}, - {-1.5, 0.375, -0.4375, 1.5, 0.5, -0.25}, + {-1.5, 0.4375, -0.5, 1.5, 0.375, 0.5}, + {-1.5, 0.375, 0.3125, 1.5, 0.5, 0.5}, + {-1.5, 0.375, 0.0625, 1.5, 0.5, 0.25}, + {-1.5, 0.375, -0.1875, 1.5, 0.5, 0}, + {-1.5, 0.375, -0.4375, 1.5, 0.5, -0.25}, } }, selection_box = {type = "fixed",fixed = {{0, 0, 0, 0, 0, 0},}}, diff --git a/mods/mydoors/my_hidden_doors/init.lua b/mods/mydoors/my_hidden_doors/init.lua index c1f80483..74d45b37 100644 --- a/mods/mydoors/my_hidden_doors/init.lua +++ b/mods/mydoors/my_hidden_doors/init.lua @@ -10,23 +10,22 @@ local hdoor_list = { --Number , Description , default image { "bookshelf", "Hidden Bookshelf Door" , "mydoors_bookshelf" , "door9"}, } - -for i in ipairs(hdoor_list) do - local img = hdoor_list[i][1] - local desc = hdoor_list[i][2] - --local dimg = hdoor_list[i][3] - - -doors.register_door("my_hidden_doors:hidden_door"..img, { - description = desc.." Locked", - inventory_image = "mydoors_"..img.."_inv.png", - groups = {choppy=2,cracky=2,door=1}, - only_placer_can_open = false, - tiles = {{ name = "mydoors_"..img..".png", backface_culling = true }}, - protected = false, -}) - +local function add_door(img, desc) + doors.register_door("my_hidden_doors:hidden_door"..img, { + description = desc.." Locked", + inventory_image = "mydoors_"..img.."_inv.png", + groups = {choppy=2,cracky=2,door=1}, + only_placer_can_open = false, + tiles = {{ name = "mydoors_"..img..".png", backface_culling = true }}, + protected = false, + }) end + + +for _,hdoor in ipairs(hdoor_list) do + add_door(unpack(hdoor)) +end + doors.register_door("my_hidden_doors:hidden_door_grey", { description = "Grey Door Locked", inventory_image = "mydoors_grey_inv.png", @@ -34,6 +33,8 @@ doors.register_door("my_hidden_doors:hidden_door_grey", { tiles = {{ name = "mydoors_grey.png", backface_culling = true }}, protected = false, }) + + -- Crafts minetest.register_craft({ diff --git a/mods/mydoors/my_misc_doors/bars.lua b/mods/mydoors/my_misc_doors/bars.lua index 633fba36..92f01461 100644 --- a/mods/mydoors/my_misc_doors/bars.lua +++ b/mods/mydoors/my_misc_doors/bars.lua @@ -17,10 +17,10 @@ minetest.register_node("my_misc_doors:door2a", { type = "fixed", fixed = { {-0.4375, -0.5, -0.0625, -0.3125, 0.5, 0.0625}, - {-0.0625, -0.5, -0.0625, 0.0625, 0.5, 0.0625}, - {0.3125, -0.5, -0.0625, 0.4375, 0.5, 0.0625}, - {0.125, -0.5, -0.0625, 0.25, 0.5, 0.0625}, - {-0.25, -0.5, -0.0625, -0.125, 0.5, 0.0625}, + {-0.0625, -0.5, -0.0625, 0.0625, 0.5, 0.0625}, + { 0.3125, -0.5, -0.0625, 0.4375, 0.5, 0.0625}, + { 0.125, -0.5, -0.0625, 0.25, 0.5, 0.0625}, + {-0.25, -0.5, -0.0625, -0.125, 0.5, 0.0625}, } }, selection_box = { @@ -30,76 +30,68 @@ minetest.register_node("my_misc_doors:door2a", { } }, -on_place = function(itemstack, placer, pointed_thing) - local pos1 = pointed_thing.above - local pos2 = {x=pos1.x, y=pos1.y, z=pos1.z} - pos2.y = pos2.y+1 - if - not minetest.registered_nodes[minetest.get_node(pos1).name].buildable_to or - not minetest.registered_nodes[minetest.get_node(pos2).name].buildable_to or - not placer or - not placer:is_player() then - return - end - local pt = pointed_thing.above - local pt2 = {x=pt.x, y=pt.y, z=pt.z} - pt2.y = pt2.y+1 - local p2 = minetest.dir_to_facedir(placer:get_look_dir()) - local pt3 = {x=pt.x, y=pt.y, z=pt.z} - local p4 = 0 - if p2 == 0 then - pt3.x = pt3.x-1 - p4 = 2 - elseif p2 == 1 then - pt3.z = pt3.z+1 - p4 = 3 - elseif p2 == 2 then - pt3.x = pt3.x+1 - p4 = 0 - elseif p2 == 3 then - pt3.z = pt3.z-1 - p4 = 1 - end - if minetest.get_node(pt3).name == "my_misc_doors:door2a" then - minetest.set_node(pt, {name="my_misc_doors:door2a", param2=p4}) - minetest.set_node(pt2, {name="my_misc_doors:door2b", param2=p4}) - else - minetest.set_node(pt, {name="my_misc_doors:door2a", param2=p2}) - minetest.set_node(pt2, {name="my_misc_doors:door2b", param2=p2}) - end -end, -after_destruct = function(pos, oldnode) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name="air"}) -end, -on_rightclick = function(pos, node, player, itemstack, pointed_thing) - local timer = minetest.get_node_timer(pos) - local a = minetest.get_node({x=pos.x, y=pos.y, z=pos.z-1}) - local b = minetest.get_node({x=pos.x, y=pos.y, z=pos.z+1}) - local c = minetest.get_node({x=pos.x+1, y=pos.y, z=pos.z}) - local d = minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z}) + on_place = function(itemstack, placer, pointed_thing) + local pos1 = pointed_thing.above + local pos2 = vector.add(pos1, {x=0,y=1,z=0}) + + if not placer or not placer:is_player() then + return + end + + if not minetest.registered_nodes[minetest.get_node(pos1).name].buildable_to or + not minetest.registered_nodes[minetest.get_node(pos2).name].buildable_to then + minetest.chat_send_player(placer:get_player_name(), "Not enough room") + return + end + + local p2 = minetest.dir_to_facedir(placer:get_look_dir()) + local p4 = (p2+2)%4 + local pos3 = vector.add(pos1, minetest.facedir_to_dir((p2-1)%4)) + + local player_name = placer:get_player_name() + if minetest.is_protected(pos1, player_name) then + minetest.record_protection_violation(pos1, player_name) + return + end + if minetest.is_protected(pos2, player_name) then + minetest.record_protection_violation(pos2, player_name) + return + end + + if minetest.get_node(pos3).name == "my_misc_doors:door2a" then + minetest.set_node(pos1, {name="my_misc_doors:door2a", param2=p4}) + minetest.set_node(pos2, {name="my_misc_doors:door2b", param2=p4}) + else + minetest.set_node(pos1, {name="my_misc_doors:door2a", param2=p2}) + minetest.set_node(pos2, {name="my_misc_doors:door2b", param2=p2}) + end + + if not (minetest.settings:get_bool("creative_mode") or minetest.check_player_privs(placer:get_player_name(), {creative = true})) then + itemstack:take_item() + end + return itemstack + end, + after_destruct = function(pos, oldnode) + minetest.set_node(vector.add(pos, {x=0,y=1,z=0}), {name="air"}) + end, + on_rightclick = function(pos, node, player, itemstack, pointed_thing) + local timer = minetest.get_node_timer(pos) minetest.set_node(pos, {name="my_misc_doors:door2c", param2=node.param2}) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z}, {name="my_misc_doors:door2d", param2=node.param2}) + minetest.set_node(vector.add(pos, {x=0,y=1,z=0}), {name="my_misc_doors:door2d", param2=node.param2}) - if a.name == "my_misc_doors:door2a" then - minetest.set_node({x=pos.x, y=pos.y, z=pos.z-1}, {name="my_misc_doors:door2c", param2=a.param2}) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z-1}, {name="my_misc_doors:door2d", param2=a.param2}) - end - if b.name == "my_misc_doors:door2a" then - minetest.set_node({x=pos.x, y=pos.y, z=pos.z+1}, {name="my_misc_doors:door2c", param2=b.param2}) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z+1}, {name="my_misc_doors:door2d", param2=b.param2}) - end - if c.name == "my_misc_doors:door2a" then - minetest.set_node({x=pos.x+1, y=pos.y, z=pos.z}, {name="my_misc_doors:door2c", param2=c.param2}) - minetest.set_node({x=pos.x+1,y=pos.y+1,z=pos.z}, {name="my_misc_doors:door2d", param2=c.param2}) - end - if d.name == "my_misc_doors:door2a" then - minetest.set_node({x=pos.x-1, y=pos.y, z=pos.z}, {name="my_misc_doors:door2c", param2=d.param2}) - minetest.set_node({x=pos.x-1,y=pos.y+1,z=pos.z}, {name="my_misc_doors:door2d", param2=d.param2}) + -- Open neighbouring doors + for i=0,3 do + local dir = minetest.facedir_to_dir(i) + local neighbour_pos = vector.add(pos, dir) + local neighbour = minetest.get_node(neighbour_pos) + if neighbour.name == "my_misc_doors:door2a" then + minetest.set_node(neighbour_pos, {name="my_misc_doors:door2c", param2=neighbour.param2}) + minetest.set_node(vector.add(neighbour_pos, {x=0,y=1,z=0}), {name="my_misc_doors:door2d", param2=neighbour.param2}) + end end - timer:start(3) - -end, + timer:start(3) + end, }) minetest.register_node("my_misc_doors:door2b", { tiles = { @@ -113,10 +105,10 @@ minetest.register_node("my_misc_doors:door2b", { type = "fixed", fixed = { {-0.4375, -0.5, -0.0625, -0.3125, 0.5, 0.0625}, - {-0.0625, -0.5, -0.0625, 0.0625, 0.5, 0.0625}, - {0.3125, -0.5, -0.0625, 0.4375, 0.5, 0.0625}, - {0.125, -0.5, -0.0625, 0.25, 0.5, 0.0625}, - {-0.25, -0.5, -0.0625, -0.125, 0.5, 0.0625}, + {-0.0625, -0.5, -0.0625, 0.0625, 0.5, 0.0625}, + { 0.3125, -0.5, -0.0625, 0.4375, 0.5, 0.0625}, + { 0.125, -0.5, -0.0625, 0.25, 0.5, 0.0625}, + {-0.25, -0.5, -0.0625, -0.125, 0.5, 0.0625}, } }, selection_box = { @@ -143,10 +135,10 @@ minetest.register_node("my_misc_doors:door2c", { type = "fixed", fixed = { {-0.4375, -0.375, -0.0625, -0.3125, -0.5, 0.0625}, - {-0.0625, -0.375, -0.0625, 0.0625, -0.5, 0.0625}, - {0.3125, -0.375, -0.0625, 0.4375, -0.5, 0.0625}, - {0.125, -0.375, -0.0625, 0.25, -0.5, 0.0625}, - {-0.25, -0.375, -0.0625, -0.125, -0.5, 0.0625}, + {-0.0625, -0.375, -0.0625, 0.0625, -0.5, 0.0625}, + { 0.3125, -0.375, -0.0625, 0.4375, -0.5, 0.0625}, + { 0.125, -0.375, -0.0625, 0.25, -0.5, 0.0625}, + {-0.25, -0.375, -0.0625, -0.125, -0.5, 0.0625}, } }, selection_box = { @@ -155,39 +147,32 @@ minetest.register_node("my_misc_doors:door2c", { {0, 0, 0, 0, 0, 0}, } }, -after_place_node = function(pos, placer, itemstack, pointed_thing) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name="my_misc_doors:door2d",param2=nodeu.param2}) -end, -after_destruct = function(pos, oldnode) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name="air"}) -end, -on_timer = function(pos, elapsed) - local node = minetest.get_node(pos) - local a = minetest.get_node({x=pos.x, y=pos.y, z=pos.z-1}) - local b = minetest.get_node({x=pos.x, y=pos.y, z=pos.z+1}) - local c = minetest.get_node({x=pos.x+1, y=pos.y, z=pos.z}) - local d = minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z}) + drop = "my_misc_doors:door2a", + after_place_node = function(pos, placer, itemstack, pointed_thing) + local node = minetest.get_node(pos) + local timer = minetest.get_node_timer(pos) + minetest.set_node(vector.add(pos, {x=0,y=1,z=0}), {name="my_misc_doors:door2d",param2=node.param2}) + timer:start(3) + end, + after_destruct = function(pos, oldnode) + minetest.set_node(vector.add(pos, {x=0,y=1,z=0}), {name="air"}) + end, + on_timer = function(pos, elapsed) + local node = minetest.get_node(pos) minetest.set_node(pos, {name="my_misc_doors:door2a", param2=node.param2}) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z}, {name="my_misc_doors:door2b", param2=node.param2}) + minetest.set_node(vector.add(pos, {x=0,y=1,z=0}), {name="my_misc_doors:door2b", param2=node.param2}) - if a.name == "my_misc_doors:door2c" then - minetest.set_node({x=pos.x, y=pos.y, z=pos.z-1}, {name="my_misc_doors:door2a", param2=a.param2}) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z-1}, {name="my_misc_doors:door2b", param2=a.param2}) + -- Close neighbouring doors + for i=0,3 do + local dir = minetest.facedir_to_dir(i) + local neighbour_pos = vector.add(pos, dir) + local neighbour = minetest.get_node(neighbour_pos) + if neighbour.name == "my_misc_doors:door2c" then + minetest.set_node(neighbour_pos, {name="my_misc_doors:door2a", param2=neighbour.param2}) + minetest.set_node(vector.add(neighbour_pos, {x=0,y=1,z=0}), {name="my_misc_doors:door2b", param2=neighbour.param2}) + end end - if b.name == "my_misc_doors:door2c" then - minetest.set_node({x=pos.x, y=pos.y, z=pos.z+1}, {name="my_misc_doors:door2a", param2=b.param2}) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z+1}, {name="my_misc_doors:door2b", param2=b.param2}) - end - if c.name == "my_misc_doors:door2c" then - minetest.set_node({x=pos.x+1, y=pos.y, z=pos.z}, {name="my_misc_doors:door2a", param2=c.param2}) - minetest.set_node({x=pos.x+1,y=pos.y+1,z=pos.z}, {name="my_misc_doors:door2b", param2=c.param2}) - end - if d.name == "my_misc_doors:door2c" then - minetest.set_node({x=pos.x-1, y=pos.y, z=pos.z}, {name="my_misc_doors:door2a", param2=d.param2}) - minetest.set_node({x=pos.x-1,y=pos.y+1,z=pos.z}, {name="my_misc_doors:door2b", param2=d.param2}) - end - -end, + end, }) minetest.register_node("my_misc_doors:door2d", { tiles = { @@ -206,10 +191,10 @@ minetest.register_node("my_misc_doors:door2d", { type = "fixed", fixed = { {-0.4375, 0.375, -0.0625, -0.3125, 0.5, 0.0625}, - {-0.0625, 0.375, -0.0625, 0.0625, 0.5, 0.0625}, - {0.3125, 0.375, -0.0625, 0.4375, 0.5, 0.0625}, - {0.125, 0.375, -0.0625, 0.25, 0.5, 0.0625}, - {-0.25, 0.375, -0.0625, -0.125, 0.5, 0.0625}, + {-0.0625, 0.375, -0.0625, 0.0625, 0.5, 0.0625}, + { 0.3125, 0.375, -0.0625, 0.4375, 0.5, 0.0625}, + { 0.125, 0.375, -0.0625, 0.25, 0.5, 0.0625}, + {-0.25, 0.375, -0.0625, -0.125, 0.5, 0.0625}, } }, selection_box = { diff --git a/mods/mydoors/my_misc_doors/locked.lua b/mods/mydoors/my_misc_doors/locked.lua index a2299ac8..49886950 100644 --- a/mods/mydoors/my_misc_doors/locked.lua +++ b/mods/mydoors/my_misc_doors/locked.lua @@ -6,21 +6,21 @@ local mdoor_list = { --Number , Description , Inven Image , Image -- {"Misc Door 5" , "door5"}, } - -for i in ipairs(mdoor_list) do - local desc = mdoor_list[i][1] - local img = mdoor_list[i][2] - - -doors.register_door("my_misc_doors:"..img.."_locked", { - description = desc.." Locked", - inventory_image = "mymdoors_"..img.."_inv.png", - groups = {choppy=2,cracky=2,door=1}, - tiles = {{name="mymdoors_"..img..".png", backface_culling = true }}, - protected = true, -}) +local function add_door(desc, img) + doors.register_door("my_misc_doors:"..img.."_locked", { + description = desc.." Locked", + inventory_image = "mymdoors_"..img.."_inv.png", + groups = {choppy=2,cracky=2,door=1}, + tiles = {{name="mymdoors_"..img..".png", backface_culling = true }}, + protected = true, + }) end +for _,mdoor in ipairs(mdoor_list) do + add_door(unpack(mdoor)) +end + + -- Crafts minetest.register_craft({ diff --git a/mods/mydoors/my_misc_doors/unlocked.lua b/mods/mydoors/my_misc_doors/unlocked.lua index 14af7439..c7a94d33 100644 --- a/mods/mydoors/my_misc_doors/unlocked.lua +++ b/mods/mydoors/my_misc_doors/unlocked.lua @@ -6,21 +6,21 @@ local mdoor_list = { --Number , Description , Inven Image , Image {"Misc Door 5" , "door5"}, } - -for i in ipairs(mdoor_list) do - local desc = mdoor_list[i][1] - local img = mdoor_list[i][2] - - -doors.register_door("my_misc_doors:"..img, { - description = desc, - inventory_image = "mymdoors_"..img.."_inv.png", - groups = {choppy=2,cracky=2,door=1}, - tiles = {{name="mymdoors_"..img..".png", backface_culling = true }}, - protected = false, -}) +local function add_door(desc, img) + doors.register_door("my_misc_doors:"..img, { + description = desc, + inventory_image = "mymdoors_"..img.."_inv.png", + groups = {choppy=2,cracky=2,door=1}, + tiles = {{name="mymdoors_"..img..".png", backface_culling = true }}, + protected = false, + }) end +for _,mdoor in ipairs(mdoor_list) do + add_door(unpack(mdoor)) +end + + -- Crafts minetest.register_craft({ diff --git a/mods/mydoors/my_old_doors/locked.lua b/mods/mydoors/my_old_doors/locked.lua index 9b4dd172..9e9c54fc 100644 --- a/mods/mydoors/my_old_doors/locked.lua +++ b/mods/mydoors/my_old_doors/locked.lua @@ -4,21 +4,22 @@ local cdoor_list = { --Number , Description , Inven Image , Image { "3", "Old Door 3" , "old3"}, { "4", "Old Door 4" , "old4"}, } -for i in ipairs(cdoor_list) do - local num = cdoor_list[i][1] - local desc = cdoor_list[i][2] - local img = cdoor_list[i][3] - -doors.register_door("my_old_doors:door"..num.."_locked", { - description = desc.." Locked", - inventory_image = "mydoors_"..img.."_inv.png", - groups = {choppy=2,cracky=2,door=1}, - tiles = {{ name = "mydoors_"..img..".png", backface_culling = true }}, - protected = true, -}) +local function add_door(num, desc, img) + doors.register_door("my_old_doors:door"..num.."_locked", { + description = desc.." Locked", + inventory_image = "mydoors_"..img.."_inv.png", + groups = {choppy=2,cracky=2,door=1}, + tiles = {{ name = "mydoors_"..img..".png", backface_culling = true }}, + protected = true, + }) end +for _,cdoor in ipairs(cdoor_list) do + add_door(unpack(cdoor)) +end + + -- Crafts minetest.register_craft({ diff --git a/mods/mydoors/my_old_doors/unlocked.lua b/mods/mydoors/my_old_doors/unlocked.lua index f2ceff4a..1823bdb5 100644 --- a/mods/mydoors/my_old_doors/unlocked.lua +++ b/mods/mydoors/my_old_doors/unlocked.lua @@ -4,20 +4,22 @@ local cdoor_list = { --Number , Description , Inven Image , Image -- { "3", "Old Door 3" , "old3"}, -- { "4", "Old Door 4" , "old4"}, } -for i in ipairs(cdoor_list) do - local num = cdoor_list[i][1] - local desc = cdoor_list[i][2] - local img = cdoor_list[i][3] -doors.register_door("my_old_doors:door"..num, { - description = desc, - inventory_image = "mydoors_"..img.."_inv.png", - groups = {choppy=2,cracky=2,door=1}, - tiles = {{ name = "mydoors_"..img..".png", backface_culling = true }}, - protected = true, -}) +local function add_door(num, desc, img) + doors.register_door("my_old_doors:door"..num, { + description = desc, + inventory_image = "mydoors_"..img.."_inv.png", + groups = {choppy=2,cracky=2,door=1}, + tiles = {{ name = "mydoors_"..img..".png", backface_culling = true }}, + protected = true, + }) end +for _,cdoor in ipairs(cdoor_list) do + add_door(unpack(cdoor)) +end + + -- Crafts minetest.register_craft({ diff --git a/mods/mydoors/my_saloon_doors/init.lua b/mods/mydoors/my_saloon_doors/init.lua index 8bd35f92..5f3ee88d 100644 --- a/mods/mydoors/my_saloon_doors/init.lua +++ b/mods/mydoors/my_saloon_doors/init.lua @@ -1,4 +1,3 @@ - local doorcol = { {"white", "White", "^[colorize:white:120"}, {"red", "Red", "^[colorize:red:120"}, @@ -7,103 +6,114 @@ local doorcol = { {"grey", "Grey", "^[colorize:white:120^[colorize:black:120"}, {"dark_grey", "Dark grey", "^[colorize:white:120^[colorize:black:200"}, {"yellow", "Yellow", "^[colorize:yellow:100"}, - } -for i in ipairs (doorcol) do -local col = doorcol[i][1] -local des = doorcol[i][2] -local tint = doorcol[i][3] +} -minetest.register_node("my_saloon_doors:door1a_"..col, { - description = des.." Saloon Door ", - tiles = {"mydoors_saloon_bottom.png"..tint}, - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - groups = {cracky = 3}, - node_box = { - type = "fixed", - fixed = { - {-0.5, -0.1875, -0.0625, 0, 0.75, 0.0625}, - {-0.5, 0.75, -0.0625, -0.0625, 0.8125, 0.0625}, - {-0.5, 0.8125, -0.0625, -0.125, 0.875, 0.0625}, - {-0.5, 0.875, -0.0625, -0.1875, 0.9375, 0.0625}, - {-0.5, 0.9375, -0.0625, -0.3125, 1, 0.0625}, - {-0, -0.1875, -0.0625, 0.5, 0.75, 0.0625}, - {0.0625, 0.75, -0.0625, 0.5, 0.8125, 0.0625}, - {0.125, 0.8125, -0.0625, 0.5, 0.875, 0.0625}, - {0.1875, 0.875, -0.0625, 0.5, 0.9375, 0.0625}, - {0.3125, 0.9375, -0.0625, 0.5, 1, 0.0625}, - } - }, - selection_box = { - type = "fixed", - fixed = { - {-0.5, -0.1875, -0.0625, 0.5, 1, 0.0625}, - } - }, +local function add_door(col, des, tint) + minetest.register_node("my_saloon_doors:door1a_"..col, { + description = des.." Saloon Door ", + tiles = {"mydoors_saloon_bottom.png"..tint}, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + groups = {cracky = 3}, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.1875, -0.0625, 0, 0.75, 0.0625}, + {-0.5, 0.75, -0.0625, -0.0625, 0.8125, 0.0625}, + {-0.5, 0.8125, -0.0625, -0.125, 0.875, 0.0625}, + {-0.5, 0.875, -0.0625, -0.1875, 0.9375, 0.0625}, + {-0.5, 0.9375, -0.0625, -0.3125, 1, 0.0625}, + {-0, -0.1875, -0.0625, 0.5, 0.75, 0.0625}, + { 0.0625, 0.75, -0.0625, 0.5, 0.8125, 0.0625}, + { 0.125, 0.8125, -0.0625, 0.5, 0.875, 0.0625}, + { 0.1875, 0.875, -0.0625, 0.5, 0.9375, 0.0625}, + { 0.3125, 0.9375, -0.0625, 0.5, 1, 0.0625}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.1875, -0.0625, 0.5, 1, 0.0625}, + } + }, -on_place = function(itemstack, placer, pointed_thing) - local pos1 = pointed_thing.above - local pos2 = {x=pos1.x, y=pos1.y, z=pos1.z} - pos2.y = pos2.y+1 - if - not minetest.registered_nodes[minetest.get_node(pos1).name].buildable_to or - not minetest.registered_nodes[minetest.get_node(pos2).name].buildable_to or - not placer or - not placer:is_player() then - return - end - return minetest.item_place(itemstack, placer, pointed_thing) -end, -on_rightclick = function(pos, node, player, itemstack, pointed_thing) + on_place = function(itemstack, placer, pointed_thing) + local pos1 = pointed_thing.above + local pos2 = vector.add(pos1, {x=0,y=1,z=0}) + + if not placer or not placer:is_player() then + return + end - local timer = minetest.get_node_timer(pos) - local par1 = node.param2 - local par2 = minetest.dir_to_facedir(player:get_look_dir()) - if par1 + par2 == 1 or - par1 + par2 == 3 or - par1 + par2 == 5 then - par2 = par1 - end - if node.name == "my_saloon_doors:door1a_"..col then - minetest.set_node(pos,{name="my_saloon_doors:door1b_"..col,param2=par2}) - timer:start(3) - end -end, -}) -minetest.register_node("my_saloon_doors:door1b_"..col, { - tiles = {"mydoors_saloon_bottom.png^[transformFY"..tint}, - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - groups = {cracky = 1}, - node_box = { - type = "fixed", - fixed = { - {-0.5, -0.1875, -0.0625, -0.375, 0.75, 0.5}, - {-0.5, 0.75, -0.0625, -0.375, 0.8125, 0.4375}, - {-0.5, 0.8125, -0.0625, -0.375, 0.875, 0.375}, - {-0.5, 0.875, -0.0625, -0.375, 0.9375, 0.3125}, - {-0.5, 0.9375, -0.0625, -0.375, 1, 0.1875}, - {0.375, -0.1875, -0.0625, 0.5, 0.75, 0.5}, - {0.375, 0.75, -0.0625, 0.5, 0.8125, 0.4375}, - {0.375, 0.8125, -0.0625, 0.5, 0.875, 0.375}, - {0.375, 0.875, -0.0625, 0.5, 0.9375, 0.3125}, - {0.375, 0.9375, -0.0625, 0.5, 1, 0.1875}, - } - }, - selection_box = { - type = "fixed", - fixed = { - {0, 0, 0, 0, 0, 0}, - } - }, + if not minetest.registered_nodes[minetest.get_node(pos1).name].buildable_to or + not minetest.registered_nodes[minetest.get_node(pos2).name].buildable_to then + minetest.chat_send_player(placer:get_player_name(), "Not enough room") + return + end -on_timer = function(pos, elapsed) - local node = minetest.get_node(pos) - minetest.set_node(pos,{name="my_saloon_doors:door1a_"..col,param2=node.param2}) --- minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name="my_saloon_doors:door1b_"..col,param2=node.param2}) -end, -}) + local player_name = placer:get_player_name() + if minetest.is_protected(pos1, player_name) then + minetest.record_protection_violation(pos1, player_name) + return + end + if minetest.is_protected(pos2, player_name) then + minetest.record_protection_violation(pos2, player_name) + return + end + return minetest.item_place(itemstack, placer, pointed_thing) + end, + on_rightclick = function(pos, node, player, itemstack, pointed_thing) + local timer = minetest.get_node_timer(pos) + local par1 = node.param2 + local par2 = minetest.dir_to_facedir(player:get_look_dir()) + if par1 + par2 == 1 or + par1 + par2 == 3 or + par1 + par2 == 5 then + par2 = par1 + end + if node.name == "my_saloon_doors:door1a_"..col then + minetest.set_node(pos, {name="my_saloon_doors:door1b_"..col, param2=par2}) + timer:start(3) + end + end, + }) + minetest.register_node("my_saloon_doors:door1b_"..col, { + tiles = {"mydoors_saloon_bottom.png^[transformFY"..tint}, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + groups = {cracky = 1}, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.1875, -0.0625, -0.375, 0.75, 0.5}, + {-0.5, 0.75, -0.0625, -0.375, 0.8125, 0.4375}, + {-0.5, 0.8125, -0.0625, -0.375, 0.875, 0.375}, + {-0.5, 0.875, -0.0625, -0.375, 0.9375, 0.3125}, + {-0.5, 0.9375, -0.0625, -0.375, 1, 0.1875}, + { 0.375, -0.1875, -0.0625, 0.5, 0.75, 0.5}, + { 0.375, 0.75, -0.0625, 0.5, 0.8125, 0.4375}, + { 0.375, 0.8125, -0.0625, 0.5, 0.875, 0.375}, + { 0.375, 0.875, -0.0625, 0.5, 0.9375, 0.3125}, + { 0.375, 0.9375, -0.0625, 0.5, 1, 0.1875}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {0, 0, 0, 0, 0, 0}, + } + }, + on_timer = function(pos, elapsed) + local node = minetest.get_node(pos) + minetest.set_node(pos, {name="my_saloon_doors:door1a_"..col, param2=node.param2}) + -- minetest.set_node(vector.add(pos, {x=0,y=1,z=0}),{name="my_saloon_doors:door1b_"..col,param2=node.param2}) + end, + }) +end + +for _,door in ipairs(doorcol) do + add_door(unpack(door)) end diff --git a/mods/mydoors/my_sliding_doors/init.lua b/mods/mydoors/my_sliding_doors/init.lua index 68d61402..5d005a19 100644 --- a/mods/mydoors/my_sliding_doors/init.lua +++ b/mods/mydoors/my_sliding_doors/init.lua @@ -1,3 +1,2 @@ - dofile(minetest.get_modpath("my_sliding_doors").."/jdoors1.lua") dofile(minetest.get_modpath("my_sliding_doors").."/jdoors2.lua") diff --git a/mods/mydoors/my_sliding_doors/jdoors1.lua b/mods/mydoors/my_sliding_doors/jdoors1.lua index e3da343f..1b50c945 100644 --- a/mods/mydoors/my_sliding_doors/jdoors1.lua +++ b/mods/mydoors/my_sliding_doors/jdoors1.lua @@ -2,437 +2,470 @@ local doors = { {"my_sliding_doors:door1a","my_sliding_doors:door1b","my_sliding_doors:door1c","my_sliding_doors:door1d","1","White"}, {"my_sliding_doors:door2a","my_sliding_doors:door2b","my_sliding_doors:door2c","my_sliding_doors:door2d","2","Flower"}, {"my_sliding_doors:door3a","my_sliding_doors:door3b","my_sliding_doors:door3c","my_sliding_doors:door3d","3","Framed"}, - } -for i in ipairs (doors) do -local doora = doors[i][1] -local doorb = doors[i][2] -local doorc = doors[i][3] -local doord = doors[i][4] -local num = doors[i][5] -local des = doors[i][6] +} -function onplace(itemstack, placer, pointed_thing) +local function add_door(doora, doorb, doorc, doord, num, des) + local function onplace(itemstack, placer, pointed_thing) + local pos1 = pointed_thing.above + local pos = pos1 + local pos2 = minetest.find_node_near(pos1, 1, {doora}) + local par = minetest.dir_to_facedir(placer:get_look_dir()) + local par2 = par + 2 + local above = vector.add(pos, {x=0,y=1,z=0}) + + if not placer or not placer:is_player() then + return + end - local pos1 = pointed_thing.above - local pos = pos1 - local pos2 = minetest.find_node_near(pos1, 1, {doora}) - local par = minetest.dir_to_facedir(placer:get_look_dir()) - local par2 = par + 2 + if not minetest.registered_nodes[minetest.get_node(pos).name].buildable_to or + not minetest.registered_nodes[minetest.get_node(above).name].buildable_to then + minetest.chat_send_player(placer:get_player_name(), "Not enough room") + return + end + + local player_name = placer:get_player_name() + if minetest.is_protected(pos, player_name) then + minetest.record_protection_violation(pos, player_name) + return + end + if minetest.is_protected(above, player_name) then + minetest.record_protection_violation(above, player_name) + return + end if par2 == 4 then par2 = 0 end if par2 == 5 then par2 = 1 end if pos2 == nil then minetest.set_node(pos, {name=doora,param2=par}) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z}, {name=doorb,param2=par}) + minetest.set_node(above, {name=doorb,param2=par}) else minetest.set_node(pos, {name=doora.."2",param2=par2}) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z}, {name=doorb.."2",param2=par2}) + minetest.set_node(above, {name=doorb.."2",param2=par2}) end -end + if not (minetest.settings:get_bool("creative_mode") or minetest.check_player_privs(placer:get_player_name(), {creative = true})) then + itemstack:take_item() + end + return itemstack -function afterdestruct(pos, oldnode) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name="air"}) -end + end -function rightclick(pos, node, player, itemstack, pointed_thing) + local function afterdestruct(pos, oldnode) + minetest.set_node(vector.add(pos, {x=0,y=1,z=0}), {name="air"}) + end - local a = minetest.get_node({x=pos.x, y=pos.y, z=pos.z-1}) - local b = minetest.get_node({x=pos.x, y=pos.y, z=pos.z+1}) - local c = minetest.get_node({x=pos.x+1, y=pos.y, z=pos.z}) - local d = minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z}) + local function rightclick(pos, node, player, itemstack, pointed_thing) if node.name == doora then - minetest.set_node(pos, {name=doorc, param2=node.param2}) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z}, {name=doord, param2=node.param2}) + minetest.set_node(pos, {name=doorc, param2=node.param2}) + minetest.set_node(vector.add(pos, {x=0,y=1,z=0}), {name=doord, param2=node.param2}) elseif node.name == doorc then - minetest.set_node(pos, {name=doora, param2=node.param2}) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z}, {name=doorb, param2=node.param2}) + minetest.set_node(pos, {name=doora, param2=node.param2}) + minetest.set_node(vector.add(pos, {x=0,y=1,z=0}), {name=doorb, param2=node.param2}) end - if a.name == doora then - minetest.set_node({x=pos.x, y=pos.y, z=pos.z-1}, {name=doorc, param2=a.param2}) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z-1}, {name=doord, param2=a.param2}) + -- Open neighbouring doors + for i=0,3 do + local dir = minetest.facedir_to_dir(i) + local neighbour_pos = vector.add(pos, dir) + local neighbour_above = vector.add(neighbour_pos, {x=0,y=1,z=0}) + local neighbour = minetest.get_node(neighbour_pos) + if neighbour.name == doora then + minetest.set_node(neighbour_pos, {name=doorc, param2=neighbour.param2}) + minetest.set_node(neighbour_above, {name=doord, param2=neighbour.param2}) + elseif neighbour.name == doora.."2" then + minetest.set_node(neighbour_pos, {name=doorc.."2", param2=neighbour.param2}) + minetest.set_node(neighbour_above, {name=doord.."2", param2=neighbour.param2}) + elseif neighbour.name == doorc then + minetest.set_node(neighbour_pos, {name=doora, param2=neighbour.param2}) + minetest.set_node(neighbour_above, {name=doorb, param2=neighbour.param2}) + elseif neighbour.name == doorc.."2" then + minetest.set_node(neighbour_pos, {name=doora.."2", param2=neighbour.param2}) + minetest.set_node(neighbour_above, {name=doorb.."2", param2=neighbour.param2}) + end end - if b.name == doora then - minetest.set_node({x=pos.x, y=pos.y, z=pos.z+1}, {name=doorc, param2=b.param2}) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z+1}, {name=doord, param2=b.param2}) - end - if c.name == doora then - minetest.set_node({x=pos.x+1, y=pos.y, z=pos.z}, {name=doorc, param2=c.param2}) - minetest.set_node({x=pos.x+1,y=pos.y+1,z=pos.z}, {name=doord, param2=c.param2}) - end - if d.name == doora then - minetest.set_node({x=pos.x-1, y=pos.y, z=pos.z}, {name=doorc, param2=d.param2}) - minetest.set_node({x=pos.x-1,y=pos.y+1,z=pos.z}, {name=doord, param2=d.param2}) - end - - if a.name == doora.."2" then - minetest.set_node({x=pos.x, y=pos.y, z=pos.z-1}, {name=doorc.."2", param2=a.param2}) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z-1}, {name=doord.."2", param2=a.param2}) - end - if b.name == doora.."2" then - minetest.set_node({x=pos.x, y=pos.y, z=pos.z+1}, {name=doorc.."2", param2=b.param2}) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z+1}, {name=doord.."2", param2=b.param2}) - end - if c.name == doora.."2" then - minetest.set_node({x=pos.x+1, y=pos.y, z=pos.z}, {name=doorc.."2", param2=c.param2}) - minetest.set_node({x=pos.x+1,y=pos.y+1,z=pos.z}, {name=doord.."2", param2=c.param2}) - end - if d.name == doora.."2" then - minetest.set_node({x=pos.x-1, y=pos.y, z=pos.z}, {name=doorc.."2", param2=d.param2}) - minetest.set_node({x=pos.x-1,y=pos.y+1,z=pos.z}, {name=doord.."2", param2=d.param2}) - end - if a.name == doorc then - minetest.set_node({x=pos.x, y=pos.y, z=pos.z-1}, {name=doora, param2=a.param2}) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z-1}, {name=doorb, param2=a.param2}) - end - if b.name == doorc then - minetest.set_node({x=pos.x, y=pos.y, z=pos.z+1}, {name=doora, param2=b.param2}) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z+1}, {name=doorb, param2=b.param2}) - end - if c.name == doorc then - minetest.set_node({x=pos.x+1, y=pos.y, z=pos.z}, {name=doora, param2=c.param2}) - minetest.set_node({x=pos.x+1,y=pos.y+1,z=pos.z}, {name=doorb, param2=c.param2}) - end - if d.name == doorc then - minetest.set_node({x=pos.x-1, y=pos.y, z=pos.z}, {name=doora, param2=d.param2}) - minetest.set_node({x=pos.x-1,y=pos.y+1,z=pos.z}, {name=doorb, param2=d.param2}) - end - - if a.name == doorc.."2" then - minetest.set_node({x=pos.x, y=pos.y, z=pos.z-1}, {name=doora.."2", param2=a.param2}) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z-1}, {name=doorb.."2", param2=a.param2}) - end - if b.name == doorc.."2" then - minetest.set_node({x=pos.x, y=pos.y, z=pos.z+1}, {name=doora.."2", param2=b.param2}) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z+1}, {name=doorb.."2", param2=b.param2}) - end - if c.name == doorc.."2" then - minetest.set_node({x=pos.x+1, y=pos.y, z=pos.z}, {name=doora.."2", param2=c.param2}) - minetest.set_node({x=pos.x+1,y=pos.y+1,z=pos.z}, {name=doorb.."2", param2=c.param2}) - end - if d.name == doorc.."2" then - minetest.set_node({x=pos.x-1, y=pos.y, z=pos.z}, {name=doora.."2", param2=d.param2}) - minetest.set_node({x=pos.x-1,y=pos.y+1,z=pos.z}, {name=doorb.."2", param2=d.param2}) - end - -end - -function afterplace(pos, placer, itemstack, pointed_thing) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name=doord,param2=nodeu.param2}) -end - -minetest.register_node(doora, { - description = des.." Sliding Door", - inventory_image = "myjdoors_door"..num.."a_inv.png", - wield_image = "myjdoors_door"..num.."a_inv.png", - tiles = { - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_bottom.png^[transformFX", - "myjdoors_door"..num.."a_bottom.png" - }, - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = true, - groups = {cracky = 3}, - node_box = { - type = "fixed", - fixed = { - {0.375, -0.5, 0.1875, 0.5, 0.5, 0.0625}, - {-0.5, -0.5, 0.1875, -0.375, 0.5, 0.0625}, - - {-0.5, -0.5, 0.1875, 0.5, -0.375, 0.0625}, - {-0.5, -0.5, 0.125, 0.5, 0.5, 0.145}, - - {-0.625, -0.5, -0.0625, -0.5, 0.5, 0.0625}, - {-1.5, -0.5, -0.0625, -1.375, 0.5, 0.0625}, - - {-1.5, -0.5, -0.0625, -0.5, -0.375, 0.0625}, - {-1.5, -0.5, 0, -0.5, 0.5, 0.02}, - } - }, - selection_box = {type = "fixed",fixed = {{-1.5, -0.5, -0.0625, -0.5, 1.5, 0.0625},{-0.5, -0.5, 0.0625, 0.5, 1.5, 0.1875}}}, - -on_place = onplace, - -after_destruct = afterdestruct, - -on_rightclick = rightclick, -}) -minetest.register_node(doorb, { - tiles = { - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_top.png^[transformFX", - "myjdoors_door"..num.."a_top.png" - }, - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = true, - groups = {cracky = 1}, - node_box = { - type = "fixed", - fixed = { - {0.375, -0.5, 0.1875, 0.5, 0.5, 0.0625}, - {-0.5, -0.5, 0.1875, -0.375, 0.5, 0.0625}, - - {-0.5, 0.5, 0.1875, 0.5, 0.375, 0.0625}, - {-0.5, -0.5, 0.125, 0.5, 0.5, 0.145}, - - {-0.625, -0.5, -0.0625, -0.5, 0.5, 0.0625}, - {-1.5, -0.5, -0.0625, -1.375, 0.5, 0.0625}, - - {-1.5, 0.5, -0.0625, -0.5, 0.375, 0.0625}, - {-1.5, -0.5, 0, -0.5, 0.5, 0.02}, - } - }, - selection_box = { - type = "fixed", - fixed = { - {0, 0, 0, 0, 0, 0}, - } - }, -})minetest.register_node(doorc, { - tiles = { - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_bottom.png^[transformFX", - "myjdoors_door"..num.."a_bottom.png" - }, - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = true, - drop = doora, - groups = {cracky = 1}, - node_box = { - type = "fixed", - fixed = { - {-0.625, -0.5, 0.1875, -0.5, 0.5, 0.0625}, - {-1.5, -0.5, 0.1875, -1.375, 0.5, 0.0625}, - - {-1.5, -0.5, 0.1875, -0.5, -0.375, 0.0625}, - {-1.5, -0.5, 0.125, -0.5, 0.5, 0.145}, - - {-0.625, -0.5, -0.0625, -0.5, 0.5, 0.0625}, - {-1.5, -0.5, -0.0625, -1.375, 0.5, 0.0625}, - - {-1.5, -0.5, -0.0625, -0.5, -0.375, 0.0625}, - {-1.5, -0.5, 0, -0.5, 0.5, 0.02}, - } - }, - selection_box = { - type = "fixed", - fixed = { - {-1.5, -0.5, -0.0625, -0.5, 1.5, 0.1875} - } - }, -after_place_node = afterplace, -after_destruct = afterdestruct, -on_rightclick = rightclick, -}) -minetest.register_node(doord, { - tiles = { - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_top.png^[transformFX", - "myjdoors_door"..num.."a_top.png" - }, - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = true, - groups = {cracky = 1}, - node_box = { - type = "fixed", - fixed = { - {-0.625, -0.5, 0.1875, -0.5, 0.5, 0.0625}, - {-1.5, -0.5, 0.1875, -1.375, 0.5, 0.0625}, - - {-1.5, 0.5, 0.1875, -0.5, 0.375, 0.0625}, - {-1.5, -0.5, 0.125, -0.5, 0.5, 0.145}, - - {-0.625, -0.5, -0.0625, -0.5, 0.5, 0.0625}, - {-1.5, -0.5, -0.0625, -1.375, 0.5, 0.0625}, - - {-1.5, 0.5, -0.0625, -0.5, 0.375, 0.0625}, - {-1.5, -0.5, 0, -0.5, 0.5, 0.02}, - } - }, - selection_box = { - type = "fixed", - fixed = { - {0, 0, 0, 0, 0, 0}, - } - }, -}) -minetest.register_node("my_sliding_doors:jpanel"..num, { - description = des.." Panel", - inventory_image = "myjdoors_panel"..num.."_inv.png", - wield_image = "myjdoors_panel"..num.."_inv.png", - tiles = { - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_bottom.png", - "myjdoors_door"..num.."a_bottom.png" - }, - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = true, - groups = {cracky = 3}, - node_box = { - type = "fixed", - fixed = { - {0.375, -0.5, -0.0625, 0.5, 0.5, 0.0625}, - {-0.5, -0.5, -0.0625, -0.375, 0.5, 0.0625}, - {-0.5, -0.5, -0.0625, 0.5, -0.375, 0.0625}, - {-0.4375, -0.5, 0, 0.4375, 0.5, 0.02}, - } - }, - selection_box = {type = "fixed",fixed = {{-0.5, -0.5, -0.0625, 0.5, 1.5, 0.0625}}}, - collision_box = {type = "fixed",fixed = {{-0.5, -0.5, -0.0625, 0.5, 1.5, 0.0625}}}, - - on_place = function(itemstack, placer, pointed_thing) - local p2 = minetest.dir_to_facedir(placer:get_look_dir()) - local pos = pointed_thing.above - local na = minetest.get_node({x=pos.x,y=pos.y+1,z=pos.z}) - if na.name == "air" then - minetest.set_node(pos,{name = "my_sliding_doors:jpanel"..num, param2 = p2}) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name = "my_sliding_doors:jpanel_top"..num, param2 = p2}) - else - return end - end, - on_destruct = function(pos) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name="air"}) - end, -}) -minetest.register_node("my_sliding_doors:jpanel_top"..num, { - tiles = { - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_top.png", - "myjdoors_door"..num.."a_top.png" - }, - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = true, - drop = "", - groups = {cracky = 3}, - node_box = { - type = "fixed", - fixed = { - {0.375, -0.5, -0.0625, 0.5, 0.5, 0.0625}, - {-0.5, -0.5, -0.0625, -0.375, 0.5, 0.0625}, - {-0.5, 0.5, -0.0625, 0.5, 0.375, 0.0625}, - {-0.4375, -0.5, 0, 0.4375, 0.5, 0.02}, - } - }, - selection_box = { - type = "fixed", - fixed = { - {0, 0, 0, 0, 0, 0} - } - }, -}) -minetest.register_node("my_sliding_doors:jpanel_corner_"..num, { - description = des.." Panel Corner", - inventory_image = "myjdoors_panel"..num.."_corner_inv.png", - wield_image = "myjdoors_panel"..num.."_corner_inv.png", - tiles = { - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_bottom.png", - "myjdoors_door"..num.."a_bottom.png", - "myjdoors_door"..num.."a_bottom.png", - "myjdoors_door"..num.."a_bottom.png" - }, - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = true, - groups = {cracky = 3}, - node_box = { - type = "fixed", - fixed = { - {-0.0625, -0.5, -0.5, 0.0625001, 0.5, -0.375}, - {-0.5, -0.5, -0.0625, -0.375, 0.5, 0.0625}, - {-0.5, -0.5, -0.0625, 0.0624999, -0.375, 0.0625}, - {-0.5, -0.5, 0, 0, 0.5, 0.02}, - {-0.0625, -0.5, -0.5, 0.0625, -0.375, 0.0625}, - {0.02, -0.5, -0.5, 0, 0.5, 0}, - } - }, - selection_box = { - type = "fixed", - fixed = { - {-0.0625, -0.5, -0.5, 0.0625, 1.5, 0}, - {-0.5, -0.5, -0.0625, 0, 1.5, 0.0625}, - } - }, - on_place = function(itemstack, placer, pointed_thing) - local p2 = minetest.dir_to_facedir(placer:get_look_dir()) - local pos = pointed_thing.above - local na = minetest.get_node({x=pos.x,y=pos.y+1,z=pos.z}) - if na.name == "air" then - minetest.set_node(pos,{name = "my_sliding_doors:jpanel_corner_"..num, param2 = p2}) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name = "my_sliding_doors:jpanel_corner_top"..num, param2 = p2}) - else - return + + local function afterplace(pos, placer, itemstack, pointed_thing) + local node = minetest.get_node(pos) + minetest.set_node(vector.add(pos, {x=0,y=1,z=0}), {name=doord,param2=node.param2}) end - end, - on_destruct = function(pos) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name="air"}) - end, -}) -minetest.register_node("my_sliding_doors:jpanel_corner_top"..num, { - tiles = { - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_top.png", - "myjdoors_door"..num.."a_top.png", - "myjdoors_door"..num.."a_top.png", - "myjdoors_door"..num.."a_top.png" - }, - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = true, - drop = "", - groups = {cracky = 3}, - node_box = { - type = "fixed", - fixed = { - {-0.0625, -0.5, -0.5, 0.0625001, 0.5, -0.375}, - {-0.5, -0.5, -0.0625, -0.375, 0.5, 0.0625}, - {-0.5, 0.375, -0.0625, 0.0625, 0.5, 0.0625}, - {-0.5, -0.5, 0, 0, 0.5, 0.02}, - {-0.0625, 0.375, -0.5, 0.0625, 0.5, 0.0625}, - {0.02, -0.5, -0.5, 0, 0.5, 0}, - } - }, - selection_box = { - type = "fixed", - fixed = { - {0, 0, 0, 0, 0, 0} - } - }, -}) + + minetest.register_node(doora, { + description = des.." Sliding Door", + inventory_image = "myjdoors_door"..num.."a_inv.png", + wield_image = "myjdoors_door"..num.."a_inv.png", + tiles = { + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_bottom.png^[transformFX", + "myjdoors_door"..num.."a_bottom.png" + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + groups = {cracky = 3}, + node_box = { + type = "fixed", + fixed = { + { 0.375, -0.5, 0.1875, 0.5, 0.5, 0.0625}, + {-0.5, -0.5, 0.1875, -0.375, 0.5, 0.0625}, + + {-0.5, -0.5, 0.1875, 0.5, -0.375, 0.0625}, + {-0.5, -0.5, 0.125, 0.5, 0.5, 0.145}, + + {-0.625, -0.5, -0.0625, -0.5, 0.5, 0.0625}, + {-1.5, -0.5, -0.0625, -1.375, 0.5, 0.0625}, + + {-1.5, -0.5, -0.0625, -0.5, -0.375, 0.0625}, + {-1.5, -0.5, 0, -0.5, 0.5, 0.02}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-1.5, -0.5, -0.0625, -0.5, 1.5, 0.0625}, + {-0.5, -0.5, 0.0625, 0.5, 1.5, 0.1875} + } + }, + + on_place = onplace, + + after_destruct = afterdestruct, + + on_rightclick = rightclick, + }) + minetest.register_node(doorb, { + tiles = { + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_top.png^[transformFX", + "myjdoors_door"..num.."a_top.png" + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + groups = {cracky = 1}, + node_box = { + type = "fixed", + fixed = { + { 0.375, -0.5, 0.1875, 0.5, 0.5, 0.0625}, + {-0.5, -0.5, 0.1875, -0.375, 0.5, 0.0625}, + + {-0.5, 0.5, 0.1875, 0.5, 0.375, 0.0625}, + {-0.5, -0.5, 0.125, 0.5, 0.5, 0.145}, + + {-0.625, -0.5, -0.0625, -0.5, 0.5, 0.0625}, + {-1.5, -0.5, -0.0625, -1.375, 0.5, 0.0625}, + + {-1.5, 0.5, -0.0625, -0.5, 0.375, 0.0625}, + {-1.5, -0.5, 0, -0.5, 0.5, 0.02}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {0, 0, 0, 0, 0, 0}, + } + }, + }) + minetest.register_node(doorc, { + tiles = { + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_bottom.png^[transformFX", + "myjdoors_door"..num.."a_bottom.png" + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + drop = doora, + groups = {cracky = 1}, + node_box = { + type = "fixed", + fixed = { + {-0.625, -0.5, 0.1875, -0.5, 0.5, 0.0625}, + {-1.5, -0.5, 0.1875, -1.375, 0.5, 0.0625}, + + {-1.5, -0.5, 0.1875, -0.5, -0.375, 0.0625}, + {-1.5, -0.5, 0.125, -0.5, 0.5, 0.145}, + + {-0.625, -0.5, -0.0625, -0.5, 0.5, 0.0625}, + {-1.5, -0.5, -0.0625, -1.375, 0.5, 0.0625}, + + {-1.5, -0.5, -0.0625, -0.5, -0.375, 0.0625}, + {-1.5, -0.5, 0, -0.5, 0.5, 0.02}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-1.5, -0.5, -0.0625, -0.5, 1.5, 0.1875} + } + }, + after_place_node = afterplace, + after_destruct = afterdestruct, + on_rightclick = rightclick, + }) + minetest.register_node(doord, { + tiles = { + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_top.png^[transformFX", + "myjdoors_door"..num.."a_top.png" + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + groups = {cracky = 1}, + node_box = { + type = "fixed", + fixed = { + {-0.625, -0.5, 0.1875, -0.5, 0.5, 0.0625}, + {-1.5, -0.5, 0.1875, -1.375, 0.5, 0.0625}, + + {-1.5, 0.5, 0.1875, -0.5, 0.375, 0.0625}, + {-1.5, -0.5, 0.125, -0.5, 0.5, 0.145}, + + {-0.625, -0.5, -0.0625, -0.5, 0.5, 0.0625}, + {-1.5, -0.5, -0.0625, -1.375, 0.5, 0.0625}, + + {-1.5, 0.5, -0.0625, -0.5, 0.375, 0.0625}, + {-1.5, -0.5, 0, -0.5, 0.5, 0.02}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {0, 0, 0, 0, 0, 0}, + } + }, + }) + minetest.register_node("my_sliding_doors:jpanel"..num, { + description = des.." Panel", + inventory_image = "myjdoors_panel"..num.."_inv.png", + wield_image = "myjdoors_panel"..num.."_inv.png", + tiles = { + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_bottom.png", + "myjdoors_door"..num.."a_bottom.png" + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + groups = {cracky = 3}, + node_box = { + type = "fixed", + fixed = { + { 0.375, -0.5, -0.0625, 0.5, 0.5, 0.0625}, + {-0.5, -0.5, -0.0625, -0.375, 0.5, 0.0625}, + {-0.5, -0.5, -0.0625, 0.5, -0.375, 0.0625}, + {-0.4375, -0.5, 0, 0.4375, 0.5, 0.02}, + } + }, + selection_box = {type = "fixed", fixed = {{-0.5, -0.5, -0.0625, 0.5, 1.5, 0.0625}}}, + collision_box = {type = "fixed", fixed = {{-0.5, -0.5, -0.0625, 0.5, 1.5, 0.0625}}}, + + on_place = function(itemstack, placer, pointed_thing) + local p2 = minetest.dir_to_facedir(placer:get_look_dir()) + local pos = pointed_thing.above + local pos2 = vector.add(pos, {x=0,y=1,z=0}) + local na = minetest.get_node(pos2) + + if not placer or not placer:is_player() then + return + end + + if not minetest.registered_nodes[minetest.get_node(pos).name].buildable_to or + not minetest.registered_nodes[na.name].buildable_to then + minetest.chat_send_player(placer:get_player_name(), "Not enough room") + return + end + + local player_name = placer:get_player_name() + if minetest.is_protected(pos, player_name) then + minetest.record_protection_violation(pos, player_name) + return + end + if minetest.is_protected(pos2, player_name) then + minetest.record_protection_violation(pos2, player_name) + return + end + + if na.name == "air" then + minetest.set_node(pos, {name = "my_sliding_doors:jpanel"..num, param2 = p2}) + minetest.set_node(pos2, {name = "my_sliding_doors:jpanel_top"..num, param2 = p2}) + else + return + end + + if not (minetest.settings:get_bool("creative_mode") or minetest.check_player_privs(placer:get_player_name(), {creative = true})) then + itemstack:take_item() + end + return itemstack + end, + on_destruct = function(pos) + minetest.set_node(vector.add(pos, {x=0,y=1,z=0}), {name="air"}) + end, + }) + minetest.register_node("my_sliding_doors:jpanel_top"..num, { + tiles = { + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_top.png", + "myjdoors_door"..num.."a_top.png" + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + drop = "", + groups = {cracky = 3}, + node_box = { + type = "fixed", + fixed = { + { 0.375, -0.5, -0.0625, 0.5, 0.5, 0.0625}, + {-0.5, -0.5, -0.0625, -0.375, 0.5, 0.0625}, + {-0.5, 0.5, -0.0625, 0.5, 0.375, 0.0625}, + {-0.4375, -0.5, 0, 0.4375, 0.5, 0.02}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {0, 0, 0, 0, 0, 0} + } + }, + }) + minetest.register_node("my_sliding_doors:jpanel_corner_"..num, { + description = des.." Panel Corner", + inventory_image = "myjdoors_panel"..num.."_corner_inv.png", + wield_image = "myjdoors_panel"..num.."_corner_inv.png", + tiles = { + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_bottom.png", + "myjdoors_door"..num.."a_bottom.png", + "myjdoors_door"..num.."a_bottom.png", + "myjdoors_door"..num.."a_bottom.png" + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + groups = {cracky = 3}, + node_box = { + type = "fixed", + fixed = { + {-0.0625, -0.5, -0.5, 0.0625001, 0.5, -0.375}, + {-0.5, -0.5, -0.0625, -0.375, 0.5, 0.0625}, + {-0.5, -0.5, -0.0625, 0.0624999, -0.375, 0.0625}, + {-0.5, -0.5, 0, 0, 0.5, 0.02}, + {-0.0625, -0.5, -0.5, 0.0625, -0.375, 0.0625}, + { 0.02, -0.5, -0.5, 0, 0.5, 0}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.0625, -0.5, -0.5, 0.0625, 1.5, 0}, + {-0.5, -0.5, -0.0625, 0, 1.5, 0.0625}, + } + }, + on_place = function(itemstack, placer, pointed_thing) + local p2 = minetest.dir_to_facedir(placer:get_look_dir()) + local pos = pointed_thing.above + local pos2 = vector.add(pos, {x=0,y=1,z=0}) + local na = minetest.get_node(pos2) + + if not placer or not placer:is_player() then + return + end + + if not minetest.registered_nodes[minetest.get_node(pos).name].buildable_to or + not minetest.registered_nodes[na.name].buildable_to then + minetest.chat_send_player(placer:get_player_name(), "Not enough room") + return + end + + local player_name = placer:get_player_name() + if minetest.is_protected(pos, player_name) then + minetest.record_protection_violation(pos, player_name) + return + end + if minetest.is_protected(pos2, player_name) then + minetest.record_protection_violation(pos2, player_name) + return + end + + if na.name == "air" then + minetest.set_node(pos, {name = "my_sliding_doors:jpanel_corner_"..num, param2 = p2}) + minetest.set_node(pos2, {name = "my_sliding_doors:jpanel_corner_top"..num, param2 = p2}) + else + return + end + + if not (minetest.settings:get_bool("creative_mode") or minetest.check_player_privs(placer:get_player_name(), {creative = true})) then + itemstack:take_item() + end + return itemstack + end, + on_destruct = function(pos) + minetest.set_node(vector.add(pos, {x=0,y=1,z=0}), {name="air"}) + end, + }) + minetest.register_node("my_sliding_doors:jpanel_corner_top"..num, { + tiles = { + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_top.png", + "myjdoors_door"..num.."a_top.png", + "myjdoors_door"..num.."a_top.png", + "myjdoors_door"..num.."a_top.png" + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + drop = "", + groups = {cracky = 3}, + node_box = { + type = "fixed", + fixed = { + {-0.0625, -0.5, -0.5, 0.0625001, 0.5, -0.375}, + {-0.5, -0.5, -0.0625, -0.375, 0.5, 0.0625}, + {-0.5, 0.375, -0.0625, 0.0625, 0.5, 0.0625}, + {-0.5, -0.5, 0, 0, 0.5, 0.02}, + {-0.0625, 0.375, -0.5, 0.0625, 0.5, 0.0625}, + { 0.02, -0.5, -0.5, 0, 0.5, 0}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {0, 0, 0, 0, 0, 0} + } + }, + }) +end + +for _,door in ipairs(doors) do + add_door(unpack(door)) end diff --git a/mods/mydoors/my_sliding_doors/jdoors2.lua b/mods/mydoors/my_sliding_doors/jdoors2.lua index 88f64c14..3680b66f 100644 --- a/mods/mydoors/my_sliding_doors/jdoors2.lua +++ b/mods/mydoors/my_sliding_doors/jdoors2.lua @@ -2,295 +2,262 @@ local doors = { {"my_sliding_doors:door1a","my_sliding_doors:door1b","my_sliding_doors:door1c","my_sliding_doors:door1d","1","White Right"}, {"my_sliding_doors:door2a","my_sliding_doors:door2b","my_sliding_doors:door2c","my_sliding_doors:door2d","2","Flower Right"}, {"my_sliding_doors:door3a","my_sliding_doors:door3b","my_sliding_doors:door3c","my_sliding_doors:door3d","3","Framed Right"}, - } -for i in ipairs (doors) do -local doora = doors[i][1] -local doorb = doors[i][2] -local doorc = doors[i][3] -local doord = doors[i][4] -local num = doors[i][5] ---local des = doors[i][6] +} -function onplace(itemstack, placer, pointed_thing) - local pos1 = pointed_thing.above - local pos2 = {x=pos1.x, y=pos1.y + 1, z=pos1.z} - if - not minetest.registered_nodes[minetest.get_node(pos1).name].buildable_to or - not minetest.registered_nodes[minetest.get_node(pos2).name].buildable_to or - not placer or not placer:is_player() then - return +local function add_door(doora, doorb, doorc, doord, num) + local function onplace(itemstack, placer, pointed_thing) + local pos1 = pointed_thing.above + local pos2 = vector.add(pos, {x=0,y=1,z=0}) + + if not placer or not placer:is_player() then + return + end + + if not minetest.registered_nodes[minetest.get_node(pos1).name].buildable_to or + not minetest.registered_nodes[minetest.get_node(pos2).name].buildable_to then + minetest.chat_send_player(placer:get_player_name(), "Not enough room") + return + end + + local p2 = minetest.dir_to_facedir(placer:get_look_dir()) + local p4 = (p2+2)%4 + local pos3 = vector.add(pos1, minetest.facedir_to_dir((p2-1)%4)) + + local player_name = placer:get_player_name() + if minetest.is_protected(pos1, player_name) then + minetest.record_protection_violation(pos1, player_name) + return + end + if minetest.is_protected(pos2, player_name) then + minetest.record_protection_violation(pos2, player_name) + return + end + if minetest.is_protected(pos3, player_name) then + minetest.record_protection_violation(pos3, player_name) + return + end + + if minetest.get_node(pos3).name ~= "air" then + minetest.chat_send_player(placer:get_player_name(), "Not enough room") + return + end + if minetest.get_node(pos3).name == doora then + minetest.set_node(pos1, {name=doora.."2", param2=p2}) + minetest.set_node(pos2, {name=doorb.."2", param2=p2}) + else + minetest.set_node(pos1, {name=doora.."2", param2=p2}) + minetest.set_node(pos2, {name=doorb.."2", param2=p2}) + end + + if not (minetest.settings:get_bool("creative_mode") or minetest.check_player_privs(placer:get_player_name(), {creative = true})) then + itemstack:take_item() + end + return itemstack end - local pt = pointed_thing.above - local pt2 = {x=pt.x, y=pt.y, z=pt.z} - pt2.y = pt2.y+1 - local p2 = minetest.dir_to_facedir(placer:get_look_dir()) - local pt3 = {x=pt.x, y=pt.y, z=pt.z} - if p2 == 0 then - pt3.x = pt3.x-1 - elseif p2 == 1 then - pt3.z = pt3.z+1 - elseif p2 == 2 then - pt3.x = pt3.x+1 - elseif p2 == 3 then - pt3.z = pt3.z-1 + local function afterdestruct(pos, oldnode) + minetest.set_node(vector.add(pos, {x=0,y=1,z=0}), {name="air"}) end - if minetest.get_node(pt3).name ~= "air" then - minetest.chat_send_player(placer:get_player_name(),"Not enough room") - return + + local function rightclick(pos, node, player, itemstack, pointed_thing) + if node.name == doora.."2" then + minetest.set_node(pos, {name=doorc.."2", param2=node.param2}) + minetest.set_node(vector.add(pos, {x=0,y=1,z=0}), {name=doord.."2", param2=node.param2}) + elseif node.name == doorc.."2" then + minetest.set_node(pos, {name=doora.."2", param2=node.param2}) + minetest.set_node(vector.add(pos, {x=0,y=1,z=0}), {name=doorb.."2", param2=node.param2}) + end + + -- Open neighbouring doors + for i=0,3 do + local dir = minetest.facedir_to_dir(i) + local neighbour_pos = vector.add(pos, dir) + local neighbour_above = vector.add(neighbour_pos, {x=0,y=1,z=0}) + local neighbour = minetest.get_node(neighbour_pos) + if neighbour.name == doora then + minetest.set_node(neighbour_pos, {name=doorc, param2=neighbour.param2}) + minetest.set_node(neighbour_above, {name=doord, param2=neighbour.param2}) + elseif neighbour.name == doora.."2" then + minetest.set_node(neighbour_pos, {name=doorc.."2", param2=neighbour.param2}) + minetest.set_node(neighbour_above, {name=doord.."2", param2=neighbour.param2}) + elseif neighbour.name == doorc then + minetest.set_node(neighbour_pos, {name=doora, param2=neighbour.param2}) + minetest.set_node(neighbour_above, {name=doorb, param2=neighbour.param2}) + elseif neighbour.name == doorc.."2" then + minetest.set_node(neighbour_pos, {name=doora.."2", param2=neighbour.param2}) + minetest.set_node(neighbour_above, {name=doorb.."2", param2=neighbour.param2}) + end + end end - if minetest.get_node(pt3).name == doora then - minetest.set_node(pt, {name=doora.."2", param2=p2}) - minetest.set_node(pt2, {name=doorb.."2", param2=p2}) - else - minetest.set_node(pt, {name=doora.."2", param2=p2}) - minetest.set_node(pt2, {name=doorb.."2", param2=p2}) + + local function afterplace(pos, placer, itemstack, pointed_thing) + local node = minetest.get_node(pos) + minetest.set_node(vector.add(pos, {x=0,y=1,z=0}), {name=doord,param2=node.param2}) end + + + minetest.register_node(doora.."2", { + tiles = { + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_bottom.png^[transformFX", + "myjdoors_door"..num.."a_bottom.png" + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + drop = doora, + sunlight_propagates = true, + groups = {cracky = 3}, + node_box = { + type = "fixed", + fixed = { + { 0.375, -0.5, -0.1875, 0.5, 0.5, -0.0625}, + {-0.5, -0.5, -0.1875, -0.375, 0.5, -0.0625}, + + {-0.5, -0.5, -0.1875, 0.5, -0.375, -0.0625}, + {-0.5, -0.5, -0.125, 0.5, 0.5, -0.145}, + + {-0.625, -0.5, -0.0625, -0.5, 0.5, 0.0625}, + {-1.5, -0.5, -0.0625, -1.375, 0.5, 0.0625}, + + {-1.5, -0.5, -0.0625, -0.5, -0.375, 0.0625}, + {-1.5, -0.5, 0, -0.5, 0.5, 0.02}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-1.5, -0.5, -0.0625, -0.5, 1.5, 0.0625}, + {-0.5, -0.5, -0.0625, 0.5, 1.5, -0.1875} + } + }, + + on_place = onplace, + + after_destruct = afterdestruct, + + on_rightclick = rightclick, + }) + minetest.register_node(doorb.."2", { + tiles = { + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_top.png^[transformFX", + "myjdoors_door"..num.."a_top.png" + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + groups = {cracky = 1}, + node_box = { + type = "fixed", + fixed = { + { 0.375, -0.5, -0.1875, 0.5, 0.5, -0.0625}, + {-0.5, -0.5, -0.1875, -0.375, 0.5, -0.0625}, + + {-0.5, 0.5, -0.1875, 0.5, 0.375, -0.0625}, + {-0.5, -0.5, -0.125, 0.5, 0.5, -0.145}, + + {-0.625, -0.5, -0.0625, -0.5, 0.5, 0.0625}, + {-1.5, -0.5, -0.0625, -1.375, 0.5, 0.0625}, + + {-1.5, 0.5, -0.0625, -0.5, 0.375, 0.0625}, + {-1.5, -0.5, 0, -0.5, 0.5, 0.02}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {0, 0, 0, 0, 0, 0}, + } + }, + }) + minetest.register_node(doorc.."2", { + tiles = { + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_bottom.png^[transformFX", + "myjdoors_door"..num.."a_bottom.png" + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + drop = doora, + groups = {cracky = 1}, + node_box = { + type = "fixed", + fixed = { + {-0.625, -0.5, -0.1875, -0.5, 0.5, -0.0625}, + {-1.5, -0.5, -0.1875, -1.375, 0.5, -0.0625}, + + {-1.5, -0.5, -0.1875, -0.5, -0.375, -0.0625}, + {-1.5, -0.5, -0.125, -0.5, 0.5, -0.145}, + + {-0.625, -0.5, -0.0625, -0.5, 0.5, 0.0625}, + {-1.5, -0.5, -0.0625, -1.375, 0.5, 0.0625}, + + {-1.5, -0.5, -0.0625, -0.5, -0.375, 0.0625}, + {-1.5, -0.5, 0, -0.5, 0.5, 0.02}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-1.5, -0.5, 0.0625, -0.5, 1.5, -0.1875} + } + }, + after_place_node = afterplace, + after_destruct = afterdestruct, + on_rightclick = rightclick, + }) + minetest.register_node(doord.."2", { + tiles = { + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_edge.png", + "myjdoors_door"..num.."a_top.png^[transformFX", + "myjdoors_door"..num.."a_top.png" + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + groups = {cracky = 1}, + node_box = { + type = "fixed", + fixed = { + {-0.625, -0.5, -0.1875, -0.5, 0.5, -0.0625}, + {-1.5, -0.5, -0.1875, -1.375, 0.5, -0.0625}, + + {-1.5, 0.5, -0.1875, -0.5, 0.375, -0.0625}, + {-1.5, -0.5, -0.125, -0.5, 0.5, -0.145}, + + {-0.625, -0.5, -0.0625, -0.5, 0.5, 0.0625}, + {-1.5, -0.5, -0.0625, -1.375, 0.5, 0.0625}, + + {-1.5, 0.5, -0.0625, -0.5, 0.375, 0.0625}, + {-1.5, -0.5, 0, -0.5, 0.5, 0.02}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {0, 0, 0, 0, 0, 0}, + } + }, + }) end -function afterdestruct(pos, oldnode) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name="air"}) -end - -function rightclick(pos, node, player, itemstack, pointed_thing) - local a = minetest.get_node({x=pos.x, y=pos.y, z=pos.z-1}) - local b = minetest.get_node({x=pos.x, y=pos.y, z=pos.z+1}) - local c = minetest.get_node({x=pos.x+1, y=pos.y, z=pos.z}) - local d = minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z}) - - if node.name == doora.."2" then - minetest.set_node(pos, {name=doorc.."2", param2=node.param2}) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z}, {name=doord.."2", param2=node.param2}) - elseif node.name == doorc.."2" then - minetest.set_node(pos, {name=doora.."2", param2=node.param2}) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z}, {name=doorb.."2", param2=node.param2}) - end - - if a.name == doora then - minetest.set_node({x=pos.x, y=pos.y, z=pos.z-1}, {name=doorc, param2=a.param2}) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z-1}, {name=doord, param2=a.param2}) - end - if b.name == doora then - minetest.set_node({x=pos.x, y=pos.y, z=pos.z+1}, {name=doorc, param2=b.param2}) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z+1}, {name=doord, param2=b.param2}) - end - if c.name == doora then - minetest.set_node({x=pos.x+1, y=pos.y, z=pos.z}, {name=doorc, param2=c.param2}) - minetest.set_node({x=pos.x+1,y=pos.y+1,z=pos.z}, {name=doord, param2=c.param2}) - end - if d.name == doora then - minetest.set_node({x=pos.x-1, y=pos.y, z=pos.z}, {name=doorc, param2=d.param2}) - minetest.set_node({x=pos.x-1,y=pos.y+1,z=pos.z}, {name=doord, param2=d.param2}) - end - - if a.name == doora.."2" then - minetest.set_node({x=pos.x, y=pos.y, z=pos.z-1}, {name=doorc.."2", param2=a.param2}) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z-1}, {name=doord.."2", param2=a.param2}) - end - if b.name == doora.."2" then - minetest.set_node({x=pos.x, y=pos.y, z=pos.z+1}, {name=doorc.."2", param2=b.param2}) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z+1}, {name=doord.."2", param2=b.param2}) - end - if c.name == doora.."2" then - minetest.set_node({x=pos.x+1, y=pos.y, z=pos.z}, {name=doorc.."2", param2=c.param2}) - minetest.set_node({x=pos.x+1,y=pos.y+1,z=pos.z}, {name=doord.."2", param2=c.param2}) - end - if d.name == doora.."2" then - minetest.set_node({x=pos.x-1, y=pos.y, z=pos.z}, {name=doorc.."2", param2=d.param2}) - minetest.set_node({x=pos.x-1,y=pos.y+1,z=pos.z}, {name=doord.."2", param2=d.param2}) - end - if a.name == doorc then - minetest.set_node({x=pos.x, y=pos.y, z=pos.z-1}, {name=doora, param2=a.param2}) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z-1}, {name=doorb, param2=a.param2}) - end - if b.name == doorc then - minetest.set_node({x=pos.x, y=pos.y, z=pos.z+1}, {name=doora, param2=b.param2}) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z+1}, {name=doorb, param2=b.param2}) - end - if c.name == doorc then - minetest.set_node({x=pos.x+1, y=pos.y, z=pos.z}, {name=doora, param2=c.param2}) - minetest.set_node({x=pos.x+1,y=pos.y+1,z=pos.z}, {name=doorb, param2=c.param2}) - end - if d.name == doorc then - minetest.set_node({x=pos.x-1, y=pos.y, z=pos.z}, {name=doora, param2=d.param2}) - minetest.set_node({x=pos.x-1,y=pos.y+1,z=pos.z}, {name=doorb, param2=d.param2}) - end - - if a.name == doorc.."2" then - minetest.set_node({x=pos.x, y=pos.y, z=pos.z-1}, {name=doora.."2", param2=a.param2}) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z-1}, {name=doorb.."2", param2=a.param2}) - end - if b.name == doorc.."2" then - minetest.set_node({x=pos.x, y=pos.y, z=pos.z+1}, {name=doora.."2", param2=b.param2}) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z+1}, {name=doorb.."2", param2=b.param2}) - end - if c.name == doorc.."2" then - minetest.set_node({x=pos.x+1, y=pos.y, z=pos.z}, {name=doora.."2", param2=c.param2}) - minetest.set_node({x=pos.x+1,y=pos.y+1,z=pos.z}, {name=doorb.."2", param2=c.param2}) - end - if d.name == doorc.."2" then - minetest.set_node({x=pos.x-1, y=pos.y, z=pos.z}, {name=doora.."2", param2=d.param2}) - minetest.set_node({x=pos.x-1,y=pos.y+1,z=pos.z}, {name=doorb.."2", param2=d.param2}) - end - -end - -function afterplace(pos, placer, itemstack, pointed_thing) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name=doord,param2=nodeu.param2}) -end - - -minetest.register_node(doora.."2", { - tiles = { - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_bottom.png^[transformFX", - "myjdoors_door"..num.."a_bottom.png" - }, - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - drop = doora, - sunlight_propagates = true, - groups = {cracky = 3}, - node_box = { - type = "fixed", - fixed = { - {0.375, -0.5, -0.1875, 0.5, 0.5, -0.0625}, - {-0.5, -0.5, -0.1875, -0.375, 0.5, -0.0625}, - - {-0.5, -0.5, -0.1875, 0.5, -0.375, -0.0625}, - {-0.5, -0.5, -0.125, 0.5, 0.5, -0.145}, - - {-0.625, -0.5, -0.0625, -0.5, 0.5, 0.0625}, - {-1.5, -0.5, -0.0625, -1.375, 0.5, 0.0625}, - - {-1.5, -0.5, -0.0625, -0.5, -0.375, 0.0625}, - {-1.5, -0.5, 0, -0.5, 0.5, 0.02}, - } - }, - selection_box = {type = "fixed",fixed = {{-1.5, -0.5, -0.0625, -0.5, 1.5, 0.0625},{-0.5, -0.5, -0.0625, 0.5, 1.5, -0.1875}}}, - -on_place = onplace, - -after_destruct = afterdestruct, - -on_rightclick = rightclick, -}) -minetest.register_node(doorb.."2", { - tiles = { - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_top.png^[transformFX", - "myjdoors_door"..num.."a_top.png" - }, - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = true, - groups = {cracky = 1}, - node_box = { - type = "fixed", - fixed = { - {0.375, -0.5, -0.1875, 0.5, 0.5, -0.0625}, - {-0.5, -0.5, -0.1875, -0.375, 0.5, -0.0625}, - - {-0.5, 0.5, -0.1875, 0.5, 0.375, -0.0625}, - {-0.5, -0.5, -0.125, 0.5, 0.5, -0.145}, - - {-0.625, -0.5, -0.0625, -0.5, 0.5, 0.0625}, - {-1.5, -0.5, -0.0625, -1.375, 0.5, 0.0625}, - - {-1.5, 0.5, -0.0625, -0.5, 0.375, 0.0625}, - {-1.5, -0.5, 0, -0.5, 0.5, 0.02}, - } - }, - selection_box = { - type = "fixed", - fixed = { - {0, 0, 0, 0, 0, 0}, - } - }, -})minetest.register_node(doorc.."2", { - tiles = { - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_bottom.png^[transformFX", - "myjdoors_door"..num.."a_bottom.png" - }, - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = true, - drop = doora, - groups = {cracky = 1}, - node_box = { - type = "fixed", - fixed = { - {-0.625, -0.5, -0.1875, -0.5, 0.5, -0.0625}, - {-1.5, -0.5, -0.1875, -1.375, 0.5, -0.0625}, - - {-1.5, -0.5, -0.1875, -0.5, -0.375, -0.0625}, - {-1.5, -0.5, -0.125, -0.5, 0.5, -0.145}, - - {-0.625, -0.5, -0.0625, -0.5, 0.5, 0.0625}, - {-1.5, -0.5, -0.0625, -1.375, 0.5, 0.0625}, - - {-1.5, -0.5, -0.0625, -0.5, -0.375, 0.0625}, - {-1.5, -0.5, 0, -0.5, 0.5, 0.02}, - } - }, - selection_box = { - type = "fixed", - fixed = { - {-1.5, -0.5, 0.0625, -0.5, 1.5, -0.1875} - } - }, -after_place_node = afterplace, -after_destruct = afterdestruct, -on_rightclick = rightclick, -}) -minetest.register_node(doord.."2", { - tiles = { - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_edge.png", - "myjdoors_door"..num.."a_top.png^[transformFX", - "myjdoors_door"..num.."a_top.png" - }, - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = true, - groups = {cracky = 1}, - node_box = { - type = "fixed", - fixed = { - {-0.625, -0.5, -0.1875, -0.5, 0.5, -0.0625}, - {-1.5, -0.5, -0.1875, -1.375, 0.5, -0.0625}, - - {-1.5, 0.5, -0.1875, -0.5, 0.375, -0.0625}, - {-1.5, -0.5, -0.125, -0.5, 0.5, -0.145}, - - {-0.625, -0.5, -0.0625, -0.5, 0.5, 0.0625}, - {-1.5, -0.5, -0.0625, -1.375, 0.5, 0.0625}, - - {-1.5, 0.5, -0.0625, -0.5, 0.375, 0.0625}, - {-1.5, -0.5, 0, -0.5, 0.5, 0.02}, - } - }, - selection_box = { - type = "fixed", - fixed = { - {0, 0, 0, 0, 0, 0}, - } - }, -}) +for _,door in ipairs(doors) do + add_door(unpack(door)) end diff --git a/mods/protector/README.md b/mods/protector/README.md index 2aac3d51..077a3bdf 100644 --- a/mods/protector/README.md +++ b/mods/protector/README.md @@ -61,7 +61,7 @@ Change log: - 3.1 - Ability to hide protection blocks using /protector_hide and /protector_show , italian local added (thanks Hamlet) - 3.2 - Defaults to Minetest translation if found, otherwise intllib fallback if loaded, locale files updated for both. Added 'protector_msg' setting for player text. - 3.3 - Added support for playerfactions new api (thanks louisroyer), added limiter to protection radius of 22. -- 3.4 - Player flip and hurt functions moved to minetest.register_protection_violation function (thanks hlqkj) +- 3.4 - Player flip and hurt functions moved to minetest.register_protection_violation function (thanks hlqkj), added 'protector_crafts' setting, changed wood doors n chests to immediate_dig for mineclone2 fix. Lucky Blocks: 10 diff --git a/mods/protector/doors_chest.lua b/mods/protector/doors_chest.lua index 1d7819e2..d5b0cdec 100644 --- a/mods/protector/doors_chest.lua +++ b/mods/protector/doors_chest.lua @@ -9,6 +9,9 @@ local F = minetest.formspec_escape -- MineClone2 support local mcl = not minetest.registered_items["default:steel_ingot"] +-- Are crafts enabled? +local protector_crafts = minetest.settings:get_bool("protector_crafts") ~= false + -- Registers a door function register_door(name, def) def.groups.not_in_creative_inventory = 1 @@ -308,7 +311,7 @@ register_door(name, { description = S("Protected Wooden Door"), inventory_image = "doors_wood.png^protector_logo.png", groups = { - snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, + snappy = 1, choppy = 2, dig_immediate = 2, unbreakable = 1, --door = 1 }, tiles_bottom = {"doors_wood_b.png^protector_logo.png", "doors_brown.png"}, @@ -317,29 +320,31 @@ register_door(name, { sunlight = false, }) -if mcl then -minetest.register_craft({ - output = name, - recipe = { - {"mcl_doors:wooden_door", "mcl_core:gold_ingot"} - } -}) -else -minetest.register_craft({ - output = name, - recipe = { - {"group:wood", "group:wood"}, - {"group:wood", "default:copper_ingot"}, - {"group:wood", "group:wood"} - } -}) +if protector_crafts then + if mcl then + minetest.register_craft({ + output = name, + recipe = { + {"mcl_doors:wooden_door", "mcl_core:gold_ingot"} + } + }) + else + minetest.register_craft({ + output = name, + recipe = { + {"group:wood", "group:wood"}, + {"group:wood", "default:copper_ingot"}, + {"group:wood", "group:wood"} + } + }) -minetest.register_craft({ - output = name, - recipe = { - {"doors:door_wood", "default:copper_ingot"} - } -}) + minetest.register_craft({ + output = name, + recipe = { + {"doors:door_wood", "default:copper_ingot"} + } + }) + end end -- Protected Steel Door @@ -359,29 +364,31 @@ register_door(name, { sunlight = false, }) -if mcl then -minetest.register_craft({ - output = name, - recipe = { - {"mcl_doors:iron_door", "mcl_core:gold_ingot"} - } -}) -else -minetest.register_craft({ - output = name, - recipe = { - {"default:steel_ingot", "default:steel_ingot"}, - {"default:steel_ingot", "default:copper_ingot"}, - {"default:steel_ingot", "default:steel_ingot"} - } -}) +if protector_crafts then + if mcl then + minetest.register_craft({ + output = name, + recipe = { + {"mcl_doors:iron_door", "mcl_core:gold_ingot"} + } + }) + else + minetest.register_craft({ + output = name, + recipe = { + {"default:steel_ingot", "default:steel_ingot"}, + {"default:steel_ingot", "default:copper_ingot"}, + {"default:steel_ingot", "default:steel_ingot"} + } + }) -minetest.register_craft({ - output = name, - recipe = { - {"doors:door_steel", "default:copper_ingot"} - } -}) + minetest.register_craft({ + output = name, + recipe = { + {"doors:door_steel", "default:copper_ingot"} + } + }) + end end ----trapdoor---- @@ -454,34 +461,36 @@ register_trapdoor("protector:trapdoor", { tile_front = "doors_trapdoor.png^protector_logo.png", tile_side = "doors_trapdoor_side.png", groups = { - snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, + snappy = 1, choppy = 2, dig_immediate = 2, unbreakable = 1, --door = 1 }, sounds = default.node_sound_wood_defaults(), }) -if mcl then -minetest.register_craft({ - output = "protector:trapdoor", - recipe = { - {"mcl_doors:trapdoor", "mcl_core:gold_ingot"} - } -}) -else -minetest.register_craft({ - output = "protector:trapdoor 2", - recipe = { - {"group:wood", "default:copper_ingot", "group:wood"}, - {"group:wood", "group:wood", "group:wood"}, - } -}) +if protector_crafts then + if mcl then + minetest.register_craft({ + output = "protector:trapdoor", + recipe = { + {"mcl_doors:trapdoor", "mcl_core:gold_ingot"} + } + }) + else + minetest.register_craft({ + output = "protector:trapdoor 2", + recipe = { + {"group:wood", "default:copper_ingot", "group:wood"}, + {"group:wood", "group:wood", "group:wood"}, + } + }) -minetest.register_craft({ - output = "protector:trapdoor", - recipe = { - {"doors:trapdoor", "default:copper_ingot"} - } -}) + minetest.register_craft({ + output = "protector:trapdoor", + recipe = { + {"doors:trapdoor", "default:copper_ingot"} + } + }) + end end -- Protected Steel Trapdoor @@ -499,28 +508,30 @@ register_trapdoor("protector:trapdoor_steel", { sounds = default.node_sound_wood_defaults(), }) -if mcl then -minetest.register_craft({ - output = "protector:trapdoor_steel", - recipe = { - {"mcl_doors:iron_trapdoor", "mcl_core:gold_ingot"} - } -}) -else -minetest.register_craft({ - output = "protector:trapdoor_steel", - recipe = { - {"default:copper_ingot", "default:steel_ingot"}, - {"default:steel_ingot", "default:steel_ingot"}, - } -}) +if protector_crafts then + if mcl then + minetest.register_craft({ + output = "protector:trapdoor_steel", + recipe = { + {"mcl_doors:iron_trapdoor", "mcl_core:gold_ingot"} + } + }) + else + minetest.register_craft({ + output = "protector:trapdoor_steel", + recipe = { + {"default:copper_ingot", "default:steel_ingot"}, + {"default:steel_ingot", "default:steel_ingot"}, + } + }) -minetest.register_craft({ - output = "protector:trapdoor_steel", - recipe = { - {"doors:trapdoor_steel", "default:copper_ingot"} - } -}) + minetest.register_craft({ + output = "protector:trapdoor_steel", + recipe = { + {"doors:trapdoor_steel", "default:copper_ingot"} + } + }) + end end -- Protected Chest @@ -533,7 +544,7 @@ minetest.register_node("protector:chest", { "default_chest_side.png", "default_chest_front.png^protector_logo.png" }, paramtype2 = "facedir", - groups = {choppy = 2, oddly_breakable_by_hand = 2, unbreakable = 1}, + groups = {dig_immediate = 2, unbreakable = 1}, legacy_facedir_simple = true, is_ground_content = false, sounds = default.node_sound_wood_defaults(), @@ -720,27 +731,29 @@ end) -- Protected Chest recipes -if mcl then -minetest.register_craft({ - output = "protector:chest", - recipe = { - {"mcl_chests:chest", "mcl_core:gold_ingot"}, - } -}) -else -minetest.register_craft({ - output = "protector:chest", - recipe = { - {"group:wood", "group:wood", "group:wood"}, - {"group:wood", "default:copper_ingot", "group:wood"}, - {"group:wood", "group:wood", "group:wood"}, - } -}) +if protector_crafts then + if mcl then + minetest.register_craft({ + output = "protector:chest", + recipe = { + {"mcl_chests:chest", "mcl_core:gold_ingot"}, + } + }) + else + minetest.register_craft({ + output = "protector:chest", + recipe = { + {"group:wood", "group:wood", "group:wood"}, + {"group:wood", "default:copper_ingot", "group:wood"}, + {"group:wood", "group:wood", "group:wood"}, + } + }) -minetest.register_craft({ - output = "protector:chest", - recipe = { - {"default:chest", "default:copper_ingot"}, - } -}) + minetest.register_craft({ + output = "protector:chest", + recipe = { + {"default:chest", "default:copper_ingot"}, + } + }) + end end diff --git a/mods/protector/settingtypes.txt b/mods/protector/settingtypes.txt index 7fe84468..723efd4d 100644 --- a/mods/protector/settingtypes.txt +++ b/mods/protector/settingtypes.txt @@ -28,5 +28,8 @@ protector_hud_interval (Protector HUD Interval) int 5 # Enables craft recipe for protection block protector_recipe (Enable Protector recipe) bool true +# Enables craft recipes for protected doors and chest +protector_crafts (Enable Protector door/chest recipes) bool true + # Enables protection messages in player chat protector_msg (Enable Protector Messages) bool true diff --git a/mods/skinsdb/meta/character_2129.txt b/mods/skinsdb/meta/character_2129.txt new file mode 100644 index 00000000..2022548c --- /dev/null +++ b/mods/skinsdb/meta/character_2129.txt @@ -0,0 +1,3 @@ +SPECOPSOUTFIT3 +SPECOPSOUTFIT3 +CC BY-NC-SA 4.0 diff --git a/mods/skinsdb/meta/character_2130.txt b/mods/skinsdb/meta/character_2130.txt new file mode 100644 index 00000000..659576bb --- /dev/null +++ b/mods/skinsdb/meta/character_2130.txt @@ -0,0 +1,3 @@ +THE TRUE AESTHER +THE TRUE AESTHER gaming +CC 0 (1.0) diff --git a/mods/skinsdb/textures/character_2129.png b/mods/skinsdb/textures/character_2129.png new file mode 100644 index 0000000000000000000000000000000000000000..e48e9357b6046bc119e3c7caf843605563898e32 GIT binary patch literal 1971 zcmV;k2Tb^hP)Px#1am@3R0s$N2z&@+hyVZwT}ebiRA_lUTJ8imn{)v|rJ-+$Y%vm8Pc28khvpp+sCh=9>>W>VvgLMwRo{_hiF z#2SrKim%@L0M5(|zvGxm&yVcxNf1Ere#H4HSa|Z+k(1j??58L%Cu$AoM(Bprk5C;QB2CfTxPLa zQMHlGX{t7&lv>;W!5Kx_M24whrDz!qJXI4(oW^KH(?+5QD@9A+8^%@3-uaZ})e3;6 zm1;+eq@C0)Z4eTt8L#czAqX1Ks@n$hs>K=2(rSeQ7J8mG3Q+`S41?6r1i=}_`AJRY z4OJ5e5$X_`OKn#ln#kU{l%P*~FyL}xl?Ov->a8WHFxhMqSVtx255n~pVu)N)PVu{^HWHE=9smcBPToj=+c zwVtR_AVAL>&a77S6N6TY#A=*TtdcKF_Kt~ zAk=MSQUyeWo;Nt7iPG&bI}Npa=ta><-lB=iuo^B*TfFUb#E#d1T?0?qM6A{f z5=CAG28rQ!zxo+Q8`=<9{Olpr{*t99k1;JPKKk`LkW(qoJ|6h|?e`F3H?tz}X5KIw zIOcnfGpiLrgt^pGwh?O-y9X(G9l5se$g7<{E2#YosSMJN>fR_ORp9yGK1z&2S=FSe zr>YyQ)+nv0s)ocn>b6Cp5QKwYyPMQ$`rdLruL%N+a~`d_0nMv!#-Y;>c@ z0DVp0pn0Zg&!af9yrYB_IUuDHG~-XmJ_EVx9roL zI2}2@`!O#3^Eh)KJIMHz=lRrk9=<9@ZKwp#ojV7>Xf#6W?s#jAp)AWS2Nr~Wnh@61 zAyilMURT6hlfPx3W|(AD-r|fQz71V5Q>?dbSE!n%p(u(i2X5QIw5(~`7Lj*O@Vqto z6Q?8RUivfX4WH)B%YWgz1GipvybT9nG#W7)jR459j6BcLT4U|jFF57~Jwya!x;uh* z3YRjV4S_)~BSs;Ft3Q3J2Oqj`ThsHy`d-W;gg02X_wPB(mu?u47bV_WQ1FLWOTM>! z*JZwD5$==2+^g;)ywSzHv~8n4TeZt~Y<}sp?K`W_9MBX?kR4#%atgk3{18Vz`4~l2 z^P_`zaoej8Z|GYr0RlHG-Sy@2wvGC1)h@F+D`pnKS^vLqGIk?=l68A%54@s<4}IZI z0G@u}o7}dC4SmgG7xP7lgp=LxOWQW;vsF6_8!myX8Gwa_`Pom|29E5%yPMIyye<3O zq0P6|Z7+fS*X_Hk?bPe1FKgeZZ7cpS{C#8Ayi*K#-``tbscyWhHQ@b(E7gtvGvI%P z0Y43oGPpivGA+qI=m{ZG?W&6hUj0F-%^2nRMTcOs6INq^6&xv|+XcxBY&fJkRmoQxwJev3EQkqg1zr zwr$H`Fu;3Hp63{22qEB{nD-4_lE<@;+-c zW5<1eefCzZ{w_gW&TrhYCO7tG{h=Sb?HzzW=JHsx0sw|^1z?jBkXZl#(~>NJ768i- zSeoGU0cg`;u9^a%8T|b@1myza^34FSlsEv8^4j%Wz6k)9CWiq?O;Br+T)ue#*a#g0 z^qkoNz$X0X0Dzt|8vxooE;T{z`dGfnX)xDNY#kuwCjr36^l_IvXOimxyq(`Ry{3|d zR1HAkW;hpwk3m%cK$${(-MgR`0Dy4{0^%xF@bmzlY6!sH&DGEVxHSpafTg?&fUeO~ z<3|C|4C7U45`bLe5D!rDK{3P9vkDiF3Ly36hy*}09IJxShJdzmOfhc-kTnE`Xo9)# z2xE8OTJrRJQ~)pQV_%{aqooiAX@afI0u}&T+)NX!1tDb!OdbH3rvOqa;-N!;E=5ZP z<{`%aHsd{hM32QW?_Jkjif4h^0H`DYbPt;qfH(j8e)_)wmps%s{wTsD00000NkvXX Hu0mjfjyJ)L literal 0 HcmV?d00001 diff --git a/mods/unified_inventory/api.lua b/mods/unified_inventory/api.lua index 22788aed..8cc55328 100644 --- a/mods/unified_inventory/api.lua +++ b/mods/unified_inventory/api.lua @@ -152,6 +152,10 @@ minetest.after(0.01, function() end end end + + for _, callback in ipairs(ui.initialized_callbacks) do + callback() + end end) @@ -212,10 +216,15 @@ function ui.register_craft(options) if options.type == "normal" and options.width == 0 then options = { type = "shapeless", items = options.items, output = options.output, width = 0 } end - if not ui.crafts_for.recipe[itemstack:get_name()] then - ui.crafts_for.recipe[itemstack:get_name()] = {} + local item_name = itemstack:get_name() + if not ui.crafts_for.recipe[item_name] then + ui.crafts_for.recipe[item_name] = {} + end + table.insert(ui.crafts_for.recipe[item_name],options) + + for _, callback in ipairs(ui.craft_registered_callbacks) do + callback(item_name, options) end - table.insert(ui.crafts_for.recipe[itemstack:get_name()],options) end @@ -309,6 +318,32 @@ function ui.register_button(name, def) table.insert(ui.buttons, def) end +function ui.register_on_initialized(callback) + if type(callback) ~= "function" then + error(("Initialized callback must be a function, %s given."):format(type(callback))) + end + table.insert(ui.initialized_callbacks, callback) +end + +function ui.register_on_craft_registered(callback) + if type(callback) ~= "function" then + error(("Craft registered callback must be a function, %s given."):format(type(callback))) + end + table.insert(ui.craft_registered_callbacks, callback) +end + +function ui.get_recipe_list(output) + return ui.crafts_for.recipe[output] +end + +function ui.get_registered_outputs() + local outputs = {} + for item_name, _ in pairs(ui.crafts_for.recipe) do + table.insert(outputs, item_name) + end + return outputs +end + function ui.is_creative(playername) return minetest.check_player_privs(playername, {creative=true}) or minetest.settings:get_bool("creative_mode") diff --git a/mods/unified_inventory/callbacks.lua b/mods/unified_inventory/callbacks.lua index 1f43e398..317c3c81 100644 --- a/mods/unified_inventory/callbacks.lua +++ b/mods/unified_inventory/callbacks.lua @@ -24,8 +24,7 @@ minetest.register_on_joinplayer(function(player) unified_inventory.alternate[player_name] = 1 unified_inventory.current_item[player_name] = nil unified_inventory.current_craft_direction[player_name] = "recipe" - unified_inventory.set_inventory_formspec(player, - unified_inventory.default) + unified_inventory.set_inventory_formspec(player, unified_inventory.default) -- Refill slot local refill = minetest.create_detached_inventory(player_name.."refill", { diff --git a/mods/unified_inventory/doc/mod_api.txt b/mods/unified_inventory/doc/mod_api.txt index ff527920..ef876971 100644 --- a/mods/unified_inventory/doc/mod_api.txt +++ b/mods/unified_inventory/doc/mod_api.txt @@ -20,6 +20,64 @@ Grouped by use-case, afterwards sorted alphabetically. * Checks whether creative is enabled or the player has `creative` +Callbacks +--------- + +Register a callback that will be run whenever a craft is registered via unified_inventory.register_craft: + + unified_inventory.register_on_craft_registered( + function (item_name, options) + -- item_name (string): name of the output item, equivalent to `ItemStack:get_name()` + -- options (table): definition table of crafts registered by `unified_inventory.register_craft` + end + ) + +Register a callback that will be run after all mods have loaded and after the unified_inventory mod has initialised all its internal structures: + + unified_inventory.register_on_initialized(callback) + -- The callback is passed no arguments + + +Accessing Data +-------------- + +These methods should be used instead of accessing the unified_inventory data structures directly - this will ensure your code survives any potential restructuring of the mod. + +Get a list of recipes for a particular output item: + + unified_inventory.get_recipe_list(output_item) + + Returns a list of tables, each holding a recipe definition, like: + { + { + type = "normal", + items = { "default:stick", "default:stick", "default:stick", "default:stick" }, + output = "default:wood", + width = 2 + }, + { + type = "shapeless", + items = { "default:tree" }, + output = "default:wood 4", + width = 0 + }, + ... + } + +Get a list of all the output items crafts have been registered for: + + unified_inventory.get_registered_outputs() + + Returns a list of item names, like: + { + "default:stone", + "default:chest", + "default:brick", + "doors:door_wood", + ... + } + + Pages ----- diff --git a/mods/unified_inventory/init.lua b/mods/unified_inventory/init.lua index 53759038..98ee2e5f 100644 --- a/mods/unified_inventory/init.lua +++ b/mods/unified_inventory/init.lua @@ -24,6 +24,8 @@ unified_inventory = { filtered_items_list = {}, pages = {}, buttons = {}, + initialized_callbacks = {}, + craft_registered_callbacks = {}, -- Homepos stuff home_pos = {}, diff --git a/mods/unified_inventory/internal.lua b/mods/unified_inventory/internal.lua index f83f96be..76a277db 100644 --- a/mods/unified_inventory/internal.lua +++ b/mods/unified_inventory/internal.lua @@ -375,6 +375,5 @@ function ui.apply_filter(player, filter, search_dir) ui.current_index[player_name] = 1 ui.activefilter[player_name] = filter ui.active_search_direction[player_name] = search_dir - ui.set_inventory_formspec(player, - ui.current_page[player_name]) + ui.set_inventory_formspec(player, ui.current_page[player_name]) end diff --git a/mods/unified_inventory/waypoints.lua b/mods/unified_inventory/waypoints.lua index 08fce388..1496cdd5 100644 --- a/mods/unified_inventory/waypoints.lua +++ b/mods/unified_inventory/waypoints.lua @@ -330,8 +330,9 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end end) - -minetest.register_on_joinplayer(function(player) +-- waypoints_temp must be initialized before the general unified_inventory +-- joinplayer callback is run for updating the inventory +table.insert(minetest.registered_on_joinplayers, 1, function(player) local player_name = player:get_player_name() local waypoints = get_waypoint_data(player)