From e1e32b55df491ee88b04351362a5ea86f87ec3a1 Mon Sep 17 00:00:00 2001 From: Vanessa Dannenberg Date: Thu, 20 Sep 2018 13:44:42 -0400 Subject: [PATCH] Initial commit --- depends.txt | 5 + init.lua | 107 ++++++++++++++++++ ...imple_streetlights_spawner_brass_white.png | Bin 0 -> 1466 bytes ...imple_streetlights_spawner_steel_white.png | Bin 0 -> 1013 bytes ...simple_streetlights_spawner_wood_white.png | Bin 0 -> 1470 bytes ...treetlights_spawner_wrought_iron_white.png | Bin 0 -> 1315 bytes 6 files changed, 112 insertions(+) create mode 100644 depends.txt create mode 100644 init.lua create mode 100644 textures/simple_streetlights_spawner_brass_white.png create mode 100644 textures/simple_streetlights_spawner_steel_white.png create mode 100644 textures/simple_streetlights_spawner_wood_white.png create mode 100644 textures/simple_streetlights_spawner_wrought_iron_white.png diff --git a/depends.txt b/depends.txt new file mode 100644 index 0000000..a23c623 --- /dev/null +++ b/depends.txt @@ -0,0 +1,5 @@ +default +creative? +ilights +gloopblocks? +homedecor? diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..08fe30c --- /dev/null +++ b/init.lua @@ -0,0 +1,107 @@ +local fdir_to_right = { + { 1, 0 }, + { 0, -1 }, + { -1, 0 }, + { 0, 1 } +} + +local function check_and_place(itemstack, placer, pointed_thing, pole, light) + if not placer then return end + local player_name = placer:get_player_name() + local fdir = minetest.dir_to_facedir(placer:get_look_dir()) + + local pos1 = minetest.get_pointed_thing_position(pointed_thing) + local node1 = minetest.get_node(pos1) + if not node1 or node1.name == "ignore" then return end + local def1 = minetest.registered_items[node1.name] + + print(dump(pos1)) + print(node1.name) + print(dump(def1)) + + + if (def1 and def1.buildable_to) then + pos1.y = pos1.y-1 + end + local node1 = minetest.get_node(pos1) + + local node2, node3, node4 + local def1 = minetest.registered_items[node1.name] + local def2, def3, def4 + + local pos2, pos3, pos4 + for i = 1, 5 do + pos2 = { x=pos1.x, y = pos1.y+i, z=pos1.z } + node2 = minetest.get_node(pos2) + def2 = minetest.registered_items[node2.name] + if minetest.is_protected(pos2, player_name) or not (def2 and def2.buildable_to) then return end + end + + pos3 = { x = pos1.x+fdir_to_right[fdir+1][1], y = pos1.y+5, z = pos1.z+fdir_to_right[fdir+1][2] } + node3 = minetest.get_node(pos3) + def3 = minetest.registered_items[node3.name] + if minetest.is_protected(pos3, player_name) or not (def3 and def3.buildable_to) then return end + + pos4 = { x = pos1.x+fdir_to_right[fdir+1][1], y = pos1.y+4, z = pos1.z+fdir_to_right[fdir+1][2] } + node4 = minetest.get_node(pos4) + def4 = minetest.registered_items[node4.name] + if minetest.is_protected(pos4, player_name) or not (def3 and def4.buildable_to) then return end + + if not creative or not creative.is_enabled_for(player_name) then + local inv = placer:get_inventory() + if not inv:contains_item("main", pole.." 5") or not inv:contains_item("main", light) then return end + inv:remove_item("main", pole.." 5") + inv:remove_item("main", light) + end + + for i = 1, 5 do + pos2 = {x=pos1.x, y = pos1.y+i, z=pos1.z} + minetest.set_node(pos2, {name = pole }) + end + minetest.set_node(pos3, { name = pole }) + minetest.set_node(pos4, { name = light, param2 = 0 }) +end + +minetest.register_tool("simple_streetlights:spawner_wood_white", { + description = "Streetlight spawner (wooden pole, white light)", + inventory_image = "simple_streetlights_spawner_wood_white.png", + use_texture_alpha = true, + tool_capabilities = { full_punch_interval=0.1 }, + on_place = function(itemstack, placer, pointed_thing) + check_and_place(itemstack, placer, pointed_thing, "default:fence_wood", "ilights:light") + end +}) + +if minetest.get_modpath("gloopblocks") then + minetest.register_tool("simple_streetlights:spawner_steel_white", { + description = "Streetlight spawner (steel pole, white light)", + inventory_image = "simple_streetlights_spawner_steel_white.png", + use_texture_alpha = true, + tool_capabilities = { full_punch_interval=0.1 }, + on_place = function(itemstack, placer, pointed_thing) + check_and_place(itemstack, placer, pointed_thing, "gloopblocks:fence_steel", "ilights:light") + end + }) +end + +if minetest.get_modpath("homedecor") then + minetest.register_tool("simple_streetlights:spawner_wrought_iron_white", { + description = "Streetlight spawner (wrought iron pole, white light)", + inventory_image = "simple_streetlights_spawner_wrought_iron_white.png", + use_texture_alpha = true, + tool_capabilities = { full_punch_interval=0.1 }, + on_place = function(itemstack, placer, pointed_thing) + check_and_place(itemstack, placer, pointed_thing, "homedecor:fence_wrought_iron", "ilights:light") + end + }) + + minetest.register_tool("simple_streetlights:spawner_brass_white", { + description = "Streetlight spawner (brass pole, white light)", + inventory_image = "simple_streetlights_spawner_brass_white.png", + use_texture_alpha = true, + tool_capabilities = { full_punch_interval=0.1 }, + on_place = function(itemstack, placer, pointed_thing) + check_and_place(itemstack, placer, pointed_thing, "homedecor:fence_brass", "ilights:light") + end + }) +end diff --git a/textures/simple_streetlights_spawner_brass_white.png b/textures/simple_streetlights_spawner_brass_white.png new file mode 100644 index 0000000000000000000000000000000000000000..e410e19d309c893b6d4f90b3b7fcae3c614fa590 GIT binary patch literal 1466 zcmV;r1x5OaP)Hq z7$YGuaSR!J#CLSSj5zc#uYOc@)xFn6kF7=+5Yv@z>TddxN>$yjzH{&QopTBXJmx=m z#WTc14D#e(UwGY@CwG%3O**STu=nNDV%PxCgFJb0{84l`i7C`cI*p-Zz(4_zD*TIT z^3Ip~_`L&uX6N%LQzqJ2$b>Ni1t9IN6P9O@x&Yqu%jfU-;`n1IT|%gU`a>`MV}i8@ z9;RG-0-=KYg8|x9`jfXwi`B(TwAX$@n<}PIXW{Zmul_s+Xg0nCA$yF;2n0RY(+iX; z;#`W<1-||M7o7VUfJ#Xb29mLgCM-;%f(k+!3Y7;5iqk|JS4STJ?^3MofcHol@Y=C2 zZyD3?zPZ~^R5edO^$0o`10nD(y$=BJ7Mw$<5M|1@J?@PY-wA+kK6=p$6(VJTl-Y!U z9B2Rtg>wnu?&^5wy4bXZvvFpNpd2&|5z-)4074*TfRLIrUSs|DIeZ#plQ!OV?}uFg(r5)C4FIdZUS$3HX9%HCK^3J- zJ&-oPJJ&_(0?L#?s?i5vW9c%*iN}#Lpxe2@bFY5V=k@z1B6WfG+E46y;lyZ4;iE^7 z`swLu>h(JHdYveWSY2IZadDBUsVRT{{P|l>?E2Mt(r5)~O4#oDXokR*D_4BIUT0=z zhJ}R%oO9G_HNr6D+O=z>Y09x<$NZr~hyDdZwGvX9dKzWQv{$|#O#t@o+b1qwyy&~# zE|)G{VrglKv9U2GCMIysaq!?l_UzenO9oV@pCPP1h(HjO9vIz4@Z`yp9654?+1XhR zA3jVNhIBd|PM4SS&I#GlSNeFbwC$6Fg6mv-a~c+^FtF5taIs>1!@2LDt3z;=7d5NAg}1ny<5FU=vO zMyimw^;`Y`Xm?`D@ft!I((YRR0GOWLPj%Y?q%>^Ym>*poaL-SpFo~1~?_Fj(V5k6a zHp1gE;UwNA`2#>8QM#O2MtJA|@HnLEWr;`H4&O5XF2$y8yiNM4^n8VY)Zje`fe_i; z+E8tSc#lon2&p$qYB^(o)J2poG2qsv;bnlcQO^t57=g$i0L>d;U&YfRw@L7DoQhsBM3S%G6$@F0#J#dHxnbQ>-I(v3FyCYq84>18mv`AyB%Ew|Vvg zS#G_fINOde~icZ88xf@Ogf-kK)D8qO49zjz}Q`B?LuiAE5h%HSAT@sK9^#UYvG5w|`4Ks3}dKvAy+MhYW^!ag5K#|tLDkRlbvVOnbxv?MqlS7b6lCUwY< z2Kt7NC8)~t02@-A^@BuPuB9zE)Rar=je<2_Td^W@*Eiv=;E5RIG7V2U?4C?sAHY*a z&c@3!iII)?ASB)oykO*6vvH_dA_yk{ShN=RTC$|)j&(oBO94*dsPi`DI(qd1yd9UU zxU8@!ch%5u@#Of(yJj8Ha;;7u7>0{+(`T-mx1jL6_SR|#9knc2FsKjUb$h((fS2UD z-t~s%t+^l-B|JaU!^B!xhkzZcDpSVpfor$b|nJ zAh_*@rUv@fw=LB*G*B?siJAaw!$C?vm`^#;P^PWG)3aCaqVD{;Ol?8%j!it`dMC6@|LX@||`O^`)g6lS(X*Y03pk$Z;hW z=olCn2-DJnpDfsA;I_@_0PNPWF4LKo5A1Qwn&TFy1<*FHiAD*7RuqPPLCdg&4^(1- zp)fASrj!W>im@rDlnFER1g0fMQ81$JvV5n@D~2eh1yGEevb;olUda($vtd)O)P5?l zzfj)Gi66zaSq+BpjPf}o=_EiFjR zNVLpMt12$Wzy5Rp9tu(_^VYP)C@~O91Yt!0L6DScODY1mVQ46p`dB3ZzqoIpTOtT6 j0@(0X2=Po9l=$x-6{H^Gouj)|00000NkvXXu0mjfsFc_U literal 0 HcmV?d00001 diff --git a/textures/simple_streetlights_spawner_wood_white.png b/textures/simple_streetlights_spawner_wood_white.png new file mode 100644 index 0000000000000000000000000000000000000000..33191fa194b2a2be5de99765cab201078eee95c1 GIT binary patch literal 1470 zcmV;v1ws0WP)A=I8ODF}wX-B8(I%{onfSLV)FvTIx^5TD3Ukl5NZIWb6_satwJ>3!027o@xi!aQdr%|slJJaCn{%9&0 zaHaql{mtd2diUc0@}p+>#m^RqBg0V=N)SU;p&$FyC1~M-fUX zKKc7UzBR$6g*vOt^Jw*ESUcrrKpaOHVeX<>EQ5WGloIEgeEe}IJbU&`0CW#W-&x|H|Fj*Pb4V!}k4u~a zH*eky^Yinx+ilwIHc683`t@tN-7cL@Cp>!e=&k(zeB*%rV1$hf!_l~$0K9ndBDC9W zmX?;-+}y-_Ppj3!TFdtKHhG?N>(;HXzP|n)5NfgF;)e@ZYuJ6&D<=R~u3QmMo;(TT z@tCJipR%{N$K2c;=gytOd(X9N*SLK7@>?0Ow%VrCItK!V&9uBJaOch)Zrr%R^71m* zuV2Sn%V;#>-o1O=zJ2?29iRjVFvg-}iIrfjR%2;t39U8O+LP}(oesU;>C_GZ2w);h zl8(y@fDnRSuSdV%XKQQg8%>ZTD5btfI!kP=0Ya3U0f&c&?C;OG0co1PYBtzBTZoI2o#Mx#+fD~ssPCH90Jtp zv*gZI4*-G0L>57Dr|44!K)|DvK`Mz>6-)u|0$G;goI@1U6`m>pq!Rex5r`j0Tl~FK zAV8L-$6aJ!JqEn-0#Xz=tf^u^mgl%U!{u2u0odB^F*nm7%W_^HRnQBJ5=ZydK3eJW z9*q1yv3B7+7grZCM)U8NUEs@VZGy8i^^-=3F{*kDNV5znCUV&26)b~qyg;GiYpSGh zn0SFAW2#aBARUhi6++XM0s_ME$&e4BnheO@lOh@4+aAG10^qSW`U!2E&9b z8xwqS51C9A06X0y8uggrFyZLyVji%VGCM3u(+q2EVO`;=V!-N$Emjsg2q{R?w0aD% z#$dET3RzfRcb%7 literal 0 HcmV?d00001 diff --git a/textures/simple_streetlights_spawner_wrought_iron_white.png b/textures/simple_streetlights_spawner_wrought_iron_white.png new file mode 100644 index 0000000000000000000000000000000000000000..c5a83094fa926f9be1225a758b9926ea3748b829 GIT binary patch literal 1315 zcmV+;1>E|HP)xd=e;-I@B7Zeh{uRpYY`EWB&HNcbh;A|0ji1*3aS_}JbLo?fy?^g`|oNLS>Bne5?Ko(sAjW!8b*r% zs)`tcwTJ)J?|=OxkN;SgQW9f~U_=lx6OaP?EBS`2sUfWuCc`3_K?HyTioO9}GJMYp zgOTq7)|w&R{Px_cR!Rvn2yjBUoc5BLZGFT2#sjB0|6C_~o}J!)Yyl@SY;1lQn`7Lv^Oi%ygN4-;F;H zID7W2x~NJ^Ba9gQRE5>mRlR@zz5qP_b6pM+Phk)RK7{cF;L@c_dg8h(JHdYw+E z!_LkQ8yg!eEG+2l+qVx~-krTBedn>(;G7>%03JSksP%fC#l=O|*VhRlP^;BQl7wf^ zp5dJ1^5x5V{`~p>fe=~C%yb!R4Xt)(JONl)S&_SU?`p5tCqtW2$)2GAh zolXa9?GgPsA&OElG}aNYy}ixm<|b29Q^bQ@?smIuY-|j_A2fmn_8Ie7t3l@+Aq38x zIm5}5Cjm&3gl4lzw|lhE_aUIF<4uI_+_@vCPMy+Ptwz7!XK87Pn>TOr;K2iK-MS@5 z6+txHF8aur;I(VlWOH*<=jP@pl}fyL@q!ySZXCI+`$bUoO|;_}Xo15R-{I}EL4Q!e zOhiNEm?H!wgn&*;SNQnqv5A;;^}D@(@c?i>;G9P!;Jhy$0CUv}vojTp2rpmr2*!>F zyzPji2qS`$oiUOt073{T5Jh%Ee1YSui2pQE3kZM?yTnq+6c|`(LA96w>}vr@v!QqZ z=s*nyRWuZ^2wIaGBomPDKvvE`u6TeL8J-)?N)zOZ3HE*37R#^(*+C;I%IiJ}B7P+bck+FCm zu*MeC8k?CeQ7M-Y0bfL8#8~r60~E0z5PTTU+qqD@8XzLr!5N{fG(o