From c3c91d0e8b5d493194184a53033ca1830adb32ee Mon Sep 17 00:00:00 2001 From: D00Med Date: Sun, 25 Feb 2018 12:22:42 +1000 Subject: [PATCH] Quartz Tower >Added randomly generating tower-dungeon >Added new, tougher mob variants >Added new decorations for dungeons >Improved some textures --- minetest.conf | 3 +- mods/default/textures/default_bookshelf.png | Bin 722 -> 747 bytes mods/default/textures/default_steel_block.png | Bin 609 -> 718 bytes mods/doors/init.lua | 19 +- mods/doors/textures/doors_door_quartz.png | Bin 0 -> 1252 bytes mods/doors/textures/doors_door_wood.png | Bin 624 -> 848 bytes mods/doors/textures/doors_item_quartz.png | Bin 0 -> 515 bytes mods/experience/init.lua | 1 + mods/fire/init.lua | 28 + mods/hyrule_mapgen/crafts.lua | 139 + mods/hyrule_mapgen/init.lua | 3077 +-------------- mods/hyrule_mapgen/license.txt | 6 +- mods/hyrule_mapgen/mapgen.lua | 16 +- mods/hyrule_mapgen/models/candles.obj | 150 + mods/hyrule_mapgen/models/goddess_statue.obj | 222 ++ mods/hyrule_mapgen/models/lightshaft.obj | 28 + mods/hyrule_mapgen/models/lightshaft2.obj | 28 + mods/hyrule_mapgen/nodes.lua | 3333 +++++++++++++++++ mods/hyrule_mapgen/schematics/tower_1.mts | Bin 0 -> 2096 bytes mods/hyrule_mapgen/schematics/tower_2.mts | Bin 0 -> 1335 bytes mods/hyrule_mapgen/schematics/tower_3.mts | Bin 0 -> 2894 bytes mods/hyrule_mapgen/schematics/tower_4.mts | Bin 0 -> 1792 bytes mods/hyrule_mapgen/schematics/tower_5.mts | Bin 0 -> 1784 bytes mods/hyrule_mapgen/schematics/tower_6.mts | Bin 0 -> 2087 bytes mods/hyrule_mapgen/schematics/tower_7.mts | Bin 0 -> 1654 bytes mods/hyrule_mapgen/schematics/tower_8.mts | Bin 0 -> 1972 bytes mods/hyrule_mapgen/schematics/tower_9.mts | Bin 0 -> 1665 bytes .../hyrule_mapgen/schematics/tower_ground.mts | Bin 0 -> 3618 bytes .../schematics/tower_ground_withdirt.mts | Bin 0 -> 3707 bytes .../schematics/tower_template.mts | Bin 0 -> 809 bytes .../textures/hyrule_mapgen_barrel.png | Bin 0 -> 439 bytes .../textures/hyrule_mapgen_barrel_top.png | Bin 0 -> 526 bytes .../textures/hyrule_mapgen_bones.png | Bin 0 -> 412 bytes .../textures/hyrule_mapgen_bridge.png | Bin 153 -> 153 bytes .../textures/hyrule_mapgen_bridge_side.png | Bin 361 -> 370 bytes .../textures/hyrule_mapgen_candle.png | Bin 0 -> 175 bytes .../textures/hyrule_mapgen_chain1.png | Bin 0 -> 232 bytes .../textures/hyrule_mapgen_chain2.png | Bin 0 -> 246 bytes .../textures/hyrule_mapgen_cracks.png | Bin 0 -> 230 bytes .../textures/hyrule_mapgen_dev.png | Bin 0 -> 335 bytes .../textures/hyrule_mapgen_drain.png | Bin 0 -> 512 bytes .../textures/hyrule_mapgen_floorlight.png | Bin 0 -> 404 bytes .../textures/hyrule_mapgen_floorlight2.png | Bin 0 -> 384 bytes .../textures/hyrule_mapgen_fog.png | Bin 0 -> 2430 bytes .../textures/hyrule_mapgen_goddess_statue.png | Bin 0 -> 3296 bytes .../textures/hyrule_mapgen_lightshaft.png | Bin 0 -> 150 bytes .../textures/hyrule_mapgen_painting.png | Bin 0 -> 3611 bytes .../textures/hyrule_mapgen_painting2.png | Bin 0 -> 3348 bytes .../textures/hyrule_mapgen_skull_back.png | Bin 0 -> 275 bytes .../textures/hyrule_mapgen_skull_front.png | Bin 0 -> 385 bytes .../textures/hyrule_mapgen_skull_side.png | Bin 0 -> 323 bytes .../textures/hyrule_mapgen_skull_top.png | Bin 0 -> 227 bytes .../textures/hyrule_mapgen_spawner.png | Bin 240 -> 408 bytes .../textures/hyrule_mapgen_trapdoor.png | Bin 0 -> 470 bytes mods/hyruletools/init.lua | 2 +- mods/hyruletools/models/hyruletools_bomb.png | Bin 548 -> 783 bytes mods/loot/init.lua | 64 +- mods/loot/textures/loot_pc_front.png | Bin 0 -> 273 bytes mods/loot/textures/loot_pc_side.png | Bin 0 -> 235 bytes mods/loot/textures/loot_pc_top.png | Bin 0 -> 108 bytes mods/loot/textures/loot_vegemite_top.png | Bin 0 -> 116 bytes mods/mobs_fairy/init.lua | 1 + mods/mobs_loz/armos.lua | 26 +- mods/mobs_loz/darknut.lua | 58 +- mods/mobs_loz/deku_baba.lua | 57 +- mods/mobs_loz/gibido.lua | 46 + mods/mobs_loz/init.lua | 1 + mods/mobs_loz/leever.lua | 88 +- mods/mobs_loz/models/armos.b3d | Bin 16372 -> 16372 bytes mods/mobs_loz/moldorm.lua | 56 +- mods/mobs_loz/textures/mobs_darkernut.png | Bin 0 -> 2758 bytes mods/mobs_loz/textures/mobs_dekubaba_dry.png | Bin 0 -> 2221 bytes mods/mobs_loz/textures/mobs_gibido.png | Bin 3461 -> 3418 bytes mods/mobs_loz/textures/mobs_leever_poison.png | Bin 0 -> 2388 bytes mods/mobs_loz/textures/mobs_moldorm_leech.png | Bin 0 -> 967 bytes mods/mobs_loz/textures/mobs_wolfos_tower.png | Bin 0 -> 6481 bytes mods/mobs_loz/volvagia.lua | 4 +- mods/mobs_loz/wolfos.lua | 57 +- mods/quartz/init.lua | 4 + mods/tnt/init.lua | 67 +- 80 files changed, 4670 insertions(+), 2911 deletions(-) create mode 100644 mods/doors/textures/doors_door_quartz.png create mode 100644 mods/doors/textures/doors_item_quartz.png create mode 100644 mods/hyrule_mapgen/crafts.lua create mode 100644 mods/hyrule_mapgen/models/candles.obj create mode 100644 mods/hyrule_mapgen/models/goddess_statue.obj create mode 100644 mods/hyrule_mapgen/models/lightshaft.obj create mode 100644 mods/hyrule_mapgen/models/lightshaft2.obj create mode 100644 mods/hyrule_mapgen/nodes.lua create mode 100644 mods/hyrule_mapgen/schematics/tower_1.mts create mode 100644 mods/hyrule_mapgen/schematics/tower_2.mts create mode 100644 mods/hyrule_mapgen/schematics/tower_3.mts create mode 100644 mods/hyrule_mapgen/schematics/tower_4.mts create mode 100644 mods/hyrule_mapgen/schematics/tower_5.mts create mode 100644 mods/hyrule_mapgen/schematics/tower_6.mts create mode 100644 mods/hyrule_mapgen/schematics/tower_7.mts create mode 100644 mods/hyrule_mapgen/schematics/tower_8.mts create mode 100644 mods/hyrule_mapgen/schematics/tower_9.mts create mode 100644 mods/hyrule_mapgen/schematics/tower_ground.mts create mode 100644 mods/hyrule_mapgen/schematics/tower_ground_withdirt.mts create mode 100644 mods/hyrule_mapgen/schematics/tower_template.mts create mode 100644 mods/hyrule_mapgen/textures/hyrule_mapgen_barrel.png create mode 100644 mods/hyrule_mapgen/textures/hyrule_mapgen_barrel_top.png create mode 100644 mods/hyrule_mapgen/textures/hyrule_mapgen_bones.png create mode 100644 mods/hyrule_mapgen/textures/hyrule_mapgen_candle.png create mode 100644 mods/hyrule_mapgen/textures/hyrule_mapgen_chain1.png create mode 100644 mods/hyrule_mapgen/textures/hyrule_mapgen_chain2.png create mode 100644 mods/hyrule_mapgen/textures/hyrule_mapgen_cracks.png create mode 100644 mods/hyrule_mapgen/textures/hyrule_mapgen_dev.png create mode 100644 mods/hyrule_mapgen/textures/hyrule_mapgen_drain.png create mode 100644 mods/hyrule_mapgen/textures/hyrule_mapgen_floorlight.png create mode 100644 mods/hyrule_mapgen/textures/hyrule_mapgen_floorlight2.png create mode 100644 mods/hyrule_mapgen/textures/hyrule_mapgen_fog.png create mode 100644 mods/hyrule_mapgen/textures/hyrule_mapgen_goddess_statue.png create mode 100644 mods/hyrule_mapgen/textures/hyrule_mapgen_lightshaft.png create mode 100644 mods/hyrule_mapgen/textures/hyrule_mapgen_painting.png create mode 100644 mods/hyrule_mapgen/textures/hyrule_mapgen_painting2.png create mode 100644 mods/hyrule_mapgen/textures/hyrule_mapgen_skull_back.png create mode 100644 mods/hyrule_mapgen/textures/hyrule_mapgen_skull_front.png create mode 100644 mods/hyrule_mapgen/textures/hyrule_mapgen_skull_side.png create mode 100644 mods/hyrule_mapgen/textures/hyrule_mapgen_skull_top.png create mode 100644 mods/hyrule_mapgen/textures/hyrule_mapgen_trapdoor.png create mode 100644 mods/loot/textures/loot_pc_front.png create mode 100644 mods/loot/textures/loot_pc_side.png create mode 100644 mods/loot/textures/loot_pc_top.png create mode 100644 mods/loot/textures/loot_vegemite_top.png create mode 100644 mods/mobs_loz/gibido.lua create mode 100644 mods/mobs_loz/textures/mobs_darkernut.png create mode 100644 mods/mobs_loz/textures/mobs_dekubaba_dry.png create mode 100644 mods/mobs_loz/textures/mobs_leever_poison.png create mode 100644 mods/mobs_loz/textures/mobs_moldorm_leech.png create mode 100644 mods/mobs_loz/textures/mobs_wolfos_tower.png diff --git a/minetest.conf b/minetest.conf index bae03f3..58a85d7 100644 --- a/minetest.conf +++ b/minetest.conf @@ -18,4 +18,5 @@ weather_allow_abm = true enable_moreplants = true twilight = false 3d_leaves = false -mob_show_health = false \ No newline at end of file +mob_show_health = false +lom_devmode = false \ No newline at end of file diff --git a/mods/default/textures/default_bookshelf.png b/mods/default/textures/default_bookshelf.png index 5296e097242bdf6613985834c8bc2a07d440a31a..7bffc624715664b750e27b0850f32e8edd550684 100644 GIT binary patch delta 724 zcmV;_0xSK}1?vTnBYyx1a7bBm000XU000XU0RWnu7ytkQok>JNR5;6pl1YwRRTMza zd;dMV>{Me{oNA&E>?un6L$d-A&aoy z1*#^pS_G<1>m4rekN*54saS|}5ht&p@CdU$`3Q~rF)$|7%Ens?m&G$c8f-AZA z(HggKJXjm0sF zF}$OP+<&w!zn-1}aME6&MRRt1OQ8eP63o?XjqQ(!v88|92S7~)%^!pLoav3mgzc7* zo#0Z#{lgwEz}0kz{^0Ei-mQsYi(5HD`FHp0wq@=dezPXjJ2rm7Hf&f{o~jN!J>SRF z8;|eiM8BcCZU5|EpmOA;B<{SYozDo>hPk_@3{5NS%2Cw`=N#&rFJFjO1w9?my#nzG zAyRix5D+XVMMw$&s}05~vLr+_=6d??5B7|ui{UT-AHM@TQ6FE}jQa~suX_vA@ zv}zY5HUum@1jNX~^I=6Dc?hs~V2Da2H*qd!=X^ffmz;g~`+gY^6)f;tJ`dpiG2eeZ zP!k-xogE0!@DbJr%C(}Z)LL?HGotMkwT8O37$X$77T7FGqbAWBnoel8g@?};q)Wro>InaKX871SW`N&6K-U#}JOscUcxVN- zrxEQIoIIG5E|mu#f{!2>R@it_(6^R-Yq6a!cB@Ut?6GA!*q+61TdXly1NYm8?t6y4 z1Etf0Y$Htgnx22A}Ru9UGZO9d4B|e|Ll`PZ~+q(X9M}FLe~*1 zt?<4M4of^Re}KmOE3s+2+hiij1yGTamRG+U8~@VeUqpf~=U zToVS5eTF-*=8u71z6uD}+b=EqpOsqxA^F4dJ3j7JqejCA_X{u0^QhOJtT3 z^9M7=3{z#ggu!Zs`RdLHDlHVJ{9Va9zbu;K z5P>v6fMSXS-jIbYE_^rLi$3?(t!nkp-+zTzYqZuR!weD4dtH+x3Fq?}fL^ahRaNwj zAeJ%{$PM}j{aak{`M~@g%%@qm)7^5P#7>c0jad{`B<2Ol#h@Ta;3WXeQGs#o@sF`x!|R!{u_J*XscwB8b+^ z77Mi2C=qs>4Wcz7!sBE@T~}N#7m~yvr>ds=69!PgbUsH!P)f0ReZ5ti&SvbkTL8Mf z9;d2C_(hZ13;^#vtK|}a5CYTroXvXu>p3z=4Cm8{5Pt%XlL^jyy!WhED?$i_5ST3% zye^k`?{9{ux~6XoQWYh4oeoKo;+(s|-Z{K;OlLDzFE50jp!bgR`skJRAq?^9%~&Y zP1zp~Nb4;7JSPM=7A1?PC-(cCvM6Y;4ehm|EDGY!pSbIGDfR~lf#5yPwnW?Y8Xd)G z5&r!8mECT~>3GCsDMe8L&^Lx+f5400000NkvXX Hu0mjf?v6}s delta 563 zcmV-30?hr+1>ppcIe!yLL_t(I%XO07ZmT*Fg+Ci2DA>@Zf%Kwk->%Qj4yB>kfYM<5 zTvV}?N@t{zyhdxypGSOre1s%PkWx}r6+#G>WkD&$x~>2`JUn2nr6>xt))-@O&M^!F zGD#BZx~8fs)^&}EwrxXejnSfs`_mopTgLaU)O^ z1$ABHy{9ZothG^--YRRYNs@%!Zif&8Ap|$u@Arfd@ZSHnEhW}k-rnAjLI{*nT(8$C zyj7M`(zY#0l8__`<2WLO;OFOu*Vk8!G01tIqwudEkH?tk>+37Vo2Fr!CYEJEDy6tw zF64Rszv9o&&wm&{91hI$%;j=HDfQbyp6791Ap~vPM#1THiu-7qhG7^0$n%_eo{{{q z!{Gox2!XEa;=65I`o8~5N0w#Dx~_x}cz%Aydyn^?fB*gwLLh{|@p!z$Aq19X`Tc5R z3|W?;l)`&Y2!Ye-6p2mK&~@FNcwJZWJZG9F(y}ahe1Cjo+cv!SciV2;_HK-uJLgE# zl(H<5bzL*hGijRA_kA4U>FJ5C>mv5v zPItn2p0U1rK2ZPw002ovPDHLkV1hm_ B9LE3v diff --git a/mods/doors/init.lua b/mods/doors/init.lua index 7b4da23..0afc6ea 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -540,10 +540,9 @@ doors.register("door_ice", { tiles = {{name = "doors_door_ice.png", backface_culling = true}}, description = "Ice Door", inventory_image = "doors_item_ice.png", - protected = true, use_texture_alpha = true, groups = {cracky = 1, level = 2}, - sounds = default.node_sound_metal_defaults(), + sounds = default.node_sound_glass_defaults(), sound_open = "doors_door_open", sound_close = "doors_door_close", recipe = { @@ -553,6 +552,22 @@ doors.register("door_ice", { } }) +doors.register("door_quartz", { + tiles = {{name = "doors_door_quartz.png", backface_culling = true}}, + description = "Quartz Door", + inventory_image = "doors_item_quartz.png", + use_texture_alpha = true, + groups = {cracky = 1, level = 2}, + sounds = default.node_sound_stone_defaults(), + sound_open = "doors_door_open", + sound_close = "doors_door_close", + recipe = { + {"quartz:quartz_crystal", "quartz:quartz_crystal"}, + {"quartz:quartz_crystal", "quartz:quartz_crystal"}, + {"quartz:quartz_crystal", "quartz:quartz_crystal"}, + } +}) + doors.register("door_steel", { tiles = {{name = "doors_door_steel.png", backface_culling = true}}, description = "Steel Door", diff --git a/mods/doors/textures/doors_door_quartz.png b/mods/doors/textures/doors_door_quartz.png new file mode 100644 index 0000000000000000000000000000000000000000..75bc69e25b6c8b77af3ba5181a61c6cf1fc83d58 GIT binary patch literal 1252 zcmV00009a7bBm000XU z000XU0RWnu7ytkSmPtfGR9M5Mmtk)cM-YaeX7`Ts<=mV&m!yiE4{>CZ5C~KRBxrwg z)&78rLR&~e3oVr5C{79qDp3>RbIj$q+g1C4?8=5*_^>C9WZ8aZXLsJ6nfvV9@4o-9 zUazCICd)G7IOeoRYmE>Btu+8b2>Sg#0IvLLj|4b6Is!l`#SeGxkYyPcI~^KH0>HuH zA-(Nw0B)|Xe&ocJKQ*v8ju{Sz0IY3n(3+p;+_`hSd-skwj?r4vPgAa3zRcUVZ~5t$ zU-tr-r7+_`&~*8Dt;Btc3!_NU`KM=3=kNx0bQ@Z00ZD5Y$Q zT=>esgb+kggy(rQl7xD_PAv#1l|l%?(a{luG^HLz)a!K`NkW!oD5b1!T=*)R&|35J z{rj}$=ecm<0zwF+lnm08q9_0e!w>-9_eqk3lZu94}XDoI)92_13*b^~@(uJ=K48Zd|@;nD%dwUzLHMLp| z&+~}mn9rxC&{{JX3~cH~9lP>pYRuH0udZEVZGD}ER*TK8Ew*|+mY0^e|KI_0&8F4J zsGwc=N{tC2Y&+TN^;l@NkW#X?zRt}XHvrgp_>ikBE1W-np5LE5p*cG{mP!}?lY#Zq zl!aD{zq;MAqxOBDEX(MpDX;hUS?qN9`^5{pV^{u6jon;b<$1SDp64ttEzz8vwYR1y z3c@fXnw+H5Zqx7g>27ZF&F$MZC>Or6z?uldFeJ}&wAQ@d-?xzqAt=j|e@?zLJx)q# z19Rc4Od9cy&P|OZ;qc^YYpp5Ek}s#H0c^oEr*Ycc<-(86V?hv*rm58gK$d0pv*~rF z!ha}SSH4nXKi<2?>hc9y6i$;Uv<6~PO4dcpx zvht5QxwN!oL9I1m7&6yvTFpo)Da+E1IWByaN#FO!I=v9W_C52IWr>uMqA2iv-|pD- zL>IpD#EPOAbG+5-S!ZT+HqY}D0h_VK_kCRXDw{B%DR^_urfn(aH?#1Si4T-{cAk^hGb~MIjXi)t}It-uGwpA}WIDbrc102Bk2QN#&bN zTiWL498+(%yE)ejy`_1x&0`?t7Y4uE-RF6}&+neQJ{u3!(*=?DN;c{4dS2fcL0&r&9fTM}t%ZeSsi0w}ICipoK^3*Jo= zmZ2-y13*{~am^c}y{$a{{Oygdmd$S6tBwx z{zL3Wb<<-2^!N{LE3C%ra%=-;qYBBSRy!)9h z&jE0|KTuXst9(ggeD zRer}F%dM^ztNc8js`yq|)l=e zZk-QQ?SD2Iv5j12^7uS>e4gLN9*@NUc<^SbYQ~J%MlLh8_2o(hj{nQbI0~<5bhg}&m`1HmH;G?l)@kpGm!5a)eeT28sS#&(V zq>|rw*BWa@$ugJLh$S`J25%6SL+d}h!KI8~^|S delta 600 zcmV-e0;m1Z2Ji%sBYy%nNklq4A)+86UOZG$d$C$~$?m${xN+M_CX>y2Xg6TV*3=l-Lf`3|4DWky zzIge3l3VSgecgUUh)AxsJY*Oq6n zM3JSXd3HR7C5oJzJB!o#2@uzw^qH|twzgV$(&xozhyTG(LII#F`zS)}j}0mdB{Z7N z=6BAQiU4sfWypt32Vq2bvL83e%1?s9m?F`b?MR$n5U-tHfbGcCO|$ajt2~Hj?`!~O ztiA0wpMC&vr+->b)if)Aq_Kkn|B5X9Tx38pnHVRq!BaLmlinVGbUawUvY`ZFT z)2#eMGp55RKIKNuJ@Qp#0KVIP+K4Y&o zx)jYxinSgW7iV)Z_I$mCAB6a-&)Ujtx{2MrJ`ceCn}5r>O>EeEsFljt)3+@E9>4sS zo3UZw50S(rU!vf3RAn*6Xu!VUAs$kEw^ZF7f_Lhw|x3 zzBYR4Cf0NVbU2{x2DweEy|2+sp>gu&KQVSqLkB0WvR m@tHCrq^~)3NaLgMlkgjAKbq^Y>F(A50000QOH=A|edmfsDq=oHV28JIWhG7It_3_hZ>$)yy=jXJx zwh+M2ZkP7X4wK1*5AWZJ|MSi=;QKyb4-ctTtE5@RbT(tPUgyif0o7`CIer%i!;tM} zlOPC4XEXi`hXg@Db90kl7Z=6AC=7YgY?7uaQ52CR3ECK5wpxs?uZw}nbc#}na5O?G z#beLo_h5hk@;omFymA?%HG|7bp4MtS-`HSub%n7O*LCjzCGM%ga7bf)oj8gxLJ$N2 z;mr;6`Mh|8SM4^vUXRAw8rm2fpzL}4I6dX{?rt$)fmxdJNGYr_Sm4RZ3PK2s*2TcL zqa)t#?{m`Wfa73{;iS{y&E6j0kB=X4M9)L#InNr6+koS+TCby&0wIclzgdQG9CEF( zi7Jb-rKIfp^!t6Jlw|ij(myZGw$Apog?s=2002ovPDHLk FV1j{n?DPNt literal 0 HcmV?d00001 diff --git a/mods/experience/init.lua b/mods/experience/init.lua index dbc77e2..5026336 100644 --- a/mods/experience/init.lua +++ b/mods/experience/init.lua @@ -216,6 +216,7 @@ minetest.register_entity("experience:orb", { physical = true, timer = 0, textures = {"orb.png"}, + glow = 12, visual_size = {x=0.3, y=0.3}, collisionbox = {-0.17,-0.17,-0.17,0.17,0.17,0.17}, on_activate = function(self, staticdata) diff --git a/mods/fire/init.lua b/mods/fire/init.lua index 0dbd7c3..5e254b7 100644 --- a/mods/fire/init.lua +++ b/mods/fire/init.lua @@ -80,6 +80,34 @@ minetest.register_node("fire:permanent_flame", { end, }) +minetest.register_node("fire:fake_flame", { + description = "Fake Flame", + drawtype = "firelike", + tiles = { + { + name = "fire_basic_flame_animated.png", + animation = { + type = "vertical_frames", + aspect_w = 16, + aspect_h = 16, + length = 1 + }, + }, + }, + inventory_image = "fire_basic_flame.png", + paramtype = "light", + light_source = 11, + walkable = false, + buildable_to = true, + sunlight_propagates = true, + damage_per_second = 4, + groups = {dig_immediate = 3}, + drop = "", + + on_blast = function() + end, +}) + -- Flint and steel diff --git a/mods/hyrule_mapgen/crafts.lua b/mods/hyrule_mapgen/crafts.lua new file mode 100644 index 0000000..b5410e9 --- /dev/null +++ b/mods/hyrule_mapgen/crafts.lua @@ -0,0 +1,139 @@ + +minetest.register_craft( { + output = "hyrule_mapgen:logpile 1", + recipe = { + { "", "default:tree", "" }, + { "default:tree", "", "default:tree" } + } +}) + +minetest.register_craft( { + output = "hyrule_mapgen:big_table 1", + recipe = { + { "default:wood", "default:wood", "default:wood" }, + { "default:wood", "", "" }, + { "default:wood", "", "" } + } +}) + +minetest.register_craft( { + output = "hyrule_mapgen:wood_fence 6", + recipe = { + {"default:stick", "default:stick", "default:stick"}, + {"default:stick", "default:stick", "default:stick"} + } +}) + +minetest.register_craft({ + output = 'hyrule_mapgen:ice_brick', + recipe = { + {'default:ice', 'default:ice', ''}, + {'default:ice', '', ''}, + {'default:ice', '', ''}, + } +}) + +minetest.register_craft({ + output = 'hyrule_mapgen:bridge', + recipe = { + {'', 'group:wood', ''}, + {'group:wood', 'group:wood', 'group:wood'}, + } +}) + +minetest.register_craft({ + output = 'hyrule_mapgen:grupee', + recipe = { + {'hyruletools:green_rupee', 'hyruletools:green_rupee', 'hyruletools:green_rupee'}, + {'hyruletools:green_rupee', 'hyruletools:green_rupee', 'hyruletools:green_rupee'}, + {'hyruletools:green_rupee', 'hyruletools:green_rupee', 'hyruletools:green_rupee'}, + } +}) + +minetest.register_craft({ + output = 'hyrule_mapgen:rrupee', + recipe = { + {'hyruletools:red_rupee', 'hyruletools:red_rupee', 'hyruletools:red_rupee'}, + {'hyruletools:red_rupee', 'hyruletools:red_rupee', 'hyruletools:red_rupee'}, + {'hyruletools:red_rupee', 'hyruletools:red_rupee', 'hyruletools:red_rupee'}, + } +}) + +minetest.register_craft({ + output = 'hyrule_mapgen:brupee', + recipe = { + {'hyruletools:blue_rupee', 'hyruletools:blue_rupee', 'hyruletools:blue_rupee'}, + {'hyruletools:blue_rupee', 'hyruletools:blue_rupee', 'hyruletools:blue_rupee'}, + {'hyruletools:blue_rupee', 'hyruletools:blue_rupee', 'hyruletools:blue_rupee'}, + } +}) + +minetest.register_craft({ + output = 'hyrule_mapgen:nrupee', + recipe = { + {'hyruletools:nyan_rupee', 'hyruletools:nyan_rupee', 'hyruletools:nyan_rupee'}, + {'hyruletools:nyan_rupee', 'hyruletools:nyan_rupee', 'hyruletools:nyan_rupee'}, + {'hyruletools:nyan_rupee', 'hyruletools:nyan_rupee', 'hyruletools:nyan_rupee'}, + } +}) + +minetest.register_craft({ + output = 'hyrule_mapgen:railblock', + recipe = { + {'', 'default:steel_ingot', ''}, + {'default:steel_ingot', 'default:steel_ingot', ''}, + {'', 'default:steel_ingot', ''}, + } +}) + +minetest.register_craft({ + output = 'hyrule_mapgen:wallring', + recipe = { + {'hyrule_mapgen:railblock', 'default:steel_ingot'}, + } +}) + +minetest.register_craft({ + output = 'hyrule_mapgen:volvagia_spawn', + recipe = { + {'', 'default:stone', ''}, + {'bucket:bucket_lava', 'hyruletools:pendant3', 'bucket:bucket_lava'}, + {'', 'default:stone', ''}, + } +}) + +minetest.register_craft({ + output = 'hyrule_mapgen:bongo_spawn', + recipe = { + {'', 'default:stone', ''}, + {'bucket:bucket_lava', 'hyruletools:pendant1', 'bucket:bucket_lava'}, + {'', 'default:stone', ''}, + } +}) + +minetest.register_craft({ + output = 'hyrule_mapgen:dodongo_spawn', + recipe = { + {'', 'default:tree', ''}, + {'moreplants:eye', 'hyruletools:pendant2', 'moreplants:eye'}, + {'', 'default:tree', ''}, + } +}) + +minetest.register_craft({ + output = "default:wood 4", + type = "shapeless", + recipe = {"hyrule_mapgen:palm_tree"} +}) + +minetest.register_craft({ + output = "default:junglewood 4", + type = "shapeless", + recipe = {"hyrule_mapgen:wild_tree"} +}) + +minetest.register_craft({ + output = "default:acacia_wood 4", + type = "shapeless", + recipe = {"hyrule_mapgen:magic_tree"} +}) diff --git a/mods/hyrule_mapgen/init.lua b/mods/hyrule_mapgen/init.lua index 5839046..19f21d6 100644 --- a/mods/hyrule_mapgen/init.lua +++ b/mods/hyrule_mapgen/init.lua @@ -5,8 +5,29 @@ if mg_name ~= "v6" then dofile(minetest.get_modpath("hyrule_mapgen").."/mapgen.lua") end +dofile(minetest.get_modpath("hyrule_mapgen").."/nodes.lua") +dofile(minetest.get_modpath("hyrule_mapgen").."/crafts.lua") + + --village spawner +if minetest.setting_getbool("lom_devmode") then +minetest.register_craftitem("hyrule_mapgen:tower_spawner", { + description = "Tower Floor Template Spawner", + inventory_image = "hyrule_mapgen_spawner.png", + on_place = function(itemstack, placer, pointed_thing) + if not minetest.setting_getbool("lom_devmode") then + minetest.chat_send_player(placer:get_player_name(), "Requires 'lom_devmode' to be 'true'") + return + end + local pos = pointed_thing.above + minetest.place_schematic({x=pos.x, y=pos.y, z=pos.z}, minetest.get_modpath("hyrule_mapgen").."/schematics/tower_template.mts", 0, {}, true) + itemstack:take_item() + return itemstack + end, +}) +end + minetest.register_craftitem("hyrule_mapgen:village_spawner", { description = "Village Spawner", inventory_image = "hyrule_mapgen_spawner.png", @@ -170,6 +191,79 @@ minetest.register_abm({ end }) +local function find_mob(pos, radius, mob_name) + local objs = minetest.get_objects_inside_radius(pos, radius) + for _, obj in ipairs(objs) do + if obj:get_luaentity() ~= nil then + if obj:get_luaentity().name == mob_name then + return true + end + end + end +end + +local function check_for_player(pos) + local objs = minetest.get_objects_inside_radius(pos, 10) + for _, obj in ipairs(objs) do + if obj:is_player() then + return true + end + end +end + +local monster_list = {"mobs_loz:stalchild", "mobs_loz:keese", "mobs_loz:darknut", "mobs_loz:wolfos", "mobs_loz:deku_baba", "mobs_loz:armos", "mobs_loz:redead", "mobs_loz:skulltula"} +local monster_list2 = {"mobs_loz:dark_stalchild", "mobs_loz:ice_volvagia", "mobs_loz:keese_fire", "mobs_loz:keese_ice", "mobs_loz:darkernut", "mobs_loz:wolfos_tower", "mobs_loz:deku_baba_dry", "mobs_loz:gibido"} + +minetest.register_lbm({ + name = "hyrule_mapgen:tower_spawns", + nodenames = {"hyrule_mapgen:tower_spawner",}, + run_at_every_load = true, + action = function(pos, node, active_object_count, active_object_count_wider) + if not check_for_player(pos) then return end + + if minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name == "quartz:chiseled_immortal" then + minetest.env:add_entity(pos, "mobs_loz:blade_x") + return + elseif minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name == "quartz:pillar_immortal" then + minetest.env:add_entity(pos, "mobs_loz:blade_z") + return + elseif minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name == "quartz:wall_immortal" then + minetest.env:add_entity(pos, "mobs_loz:armos") + else + local mob_number = math.random(1,8) + local mob = "" + if pos.y <= 800 then + mob = monster_list[mob_number] + else + mob = monster_list2[mob_number] + end + if not find_mob(pos, 5, mob) then + local obj = minetest.env:add_entity({x=pos.x+math.random(-4,4), y=pos.y+0.5, z=pos.z+math.random(-4,4)}, mob) + local monster = obj:get_luaentity() + local hp = monster.object:get_hp() + monster.object:set_hp(hp+pos.y*0.2) + monster.damage = monster.damage+pos.y*0.01 + end + end + end +}) + +minetest.register_lbm({ + name = "hyrule_mapgen:generate_tower", + nodenames = {"hyrule_mapgen:tower_generator",}, + run_at_every_load = true, + action = function(pos, node, active_object_count, active_object_count_wider) + if minetest.setting_getbool("lom_devmode") then + return + end + local num = math.random(1,8) + minetest.place_schematic({x=pos.x-15, y=pos.y+1,z=pos.z-15}, minetest.get_modpath("hyrule_mapgen").."/schematics/tower_"..num..".mts", 0, {["hyrule_mapgen:tower_dev"] = "hyrule_mapgen:tower_spawner",}, true) + if pos ~= nil and minetest.get_node(pos).name == "hyrule_mapgen:tower_generator" then + minetest.remove_node(pos) + end + end +}) + minetest.register_abm({ nodenames = {"hyrule_mapgen:crystal_2"}, interval = 5, @@ -478,6 +572,100 @@ minetest.register_abm({ end }) +minetest.register_abm({ + nodenames = {"hyrule_mapgen:beamos"}, + interval = 0.8, + chance = 1, + action = function(pos, node) + local x = 0 + local z = 0 + if node.param2 == 0 then + z = -1 + elseif node.param2 == 2 then + z = 1 + elseif node.param2 == 1 then + x = -1 + elseif node.param2 == 3 then + x = 1 + end + --minetest.chat_send_all(node.param2) + for num=1,5 do + local objs = minetest.get_objects_inside_radius({x=pos.x+x*num, y=pos.y-0.5, z=pos.z+z*num}, 1) + for _, obj in ipairs(objs) do + if obj:is_player() then + local name = obj:get_player_name() + minetest.sound_play("Laser", {pos=pos, max_hear_distance=10, gain=0.5}) + local ent = minetest.env:add_entity(pos, "hyrule_mapgen:laser") + ent:setvelocity({x=12*x, y=0, z=12*z}) + for i=1,5 do + minetest.after(i/10, function() + local ent = minetest.env:add_entity(pos, "hyrule_mapgen:laser") + ent:setvelocity({x=12*x, y=0, z=12*z}) + end) + end + end + end + end + end +}) + +minetest.register_abm({ + nodenames = {"hyrule_mapgen:geyser"}, + interval = 1, + chance = 2, + action = function(pos, node) + for i=1,30 do + minetest.after(i*0.13, function() + minetest.add_particle({ + pos = {x=pos.x, y=pos.y+math.random(0,3)/10, z=pos.z}, + velocity = {x=math.random(-1,1)/10, y=math.random(1,2), z=math.random(-1,1)/10}, + acceleration = {x=math.random(-1,1)/10, y=math.random(-5,-10)/10, z=math.random(-1,1)/10}, + expirationtime = math.random(5,10)/10, + size = math.random(3,5), + collisiondetection = false, + collisionremoval = false, + vertical = false, + texture = "hyrule_mapgen_fire.png", + glow = 9 + }) + end) + end + end +}) + +minetest.register_abm({ + nodenames = {"hyrule_mapgen:lamp_lit"}, + interval = 1, + chance = 1, + action = function(pos, node) + for i=1,5 do + minetest.after(i*0.2, function() + minetest.add_particle({ + pos = {x=pos.x+math.random(-2,2)/10, y=pos.y, z=pos.z+math.random(-2,2)/10}, + velocity = {x=0, y=math.random(5,10)/10, z=0}, + acceleration = {x=math.random(0,5)/10, y=0.5, z=math.random(0,5)/10}, + expirationtime = math.random(2,5)/10, + size = math.random(4,8), + collisiondetection = false, + collisionremoval = false, + vertical = false, + texture = "hyruletools_flame.png", + glow = 9 + }) + end) + end + end +}) + +minetest.register_abm({ + nodenames = {"hyrule_mapgen:lamp_lit"}, + interval = 30, + chance = 1, + action = function(pos, node) + minetest.set_node(pos, {name="hyrule_mapgen:lamp"}) + end +}) + --entities minetest.register_entity("hyrule_mapgen:windmill", { @@ -941,6 +1129,7 @@ minetest.override_item("default:cactus", { tiles = {"cactus.png"}, paramtype = "light", visual_scale = 0.5, + damage_per_second = 1, selection_box = { type = "fixed", fixed = {-0.4, -0.5, -0.4, 0.4, 0.5, 0.4}, @@ -1181,2894 +1370,6 @@ minetest.override_item("default:stone_with_gold", { groups = {cracky = 2, xp = 1}, }) ---new nodes - -local dye_colours = { - {"red"}, - {"blue"}, - {"orange"}, - {"green"}, - {"dark_green"}, - {"dark_grey"}, - {"black"}, - {"grey"}, - {"white"}, - {"yellow"}, - {"brown"}, - {"cyan"}, - {"magenta"}, - {"violet"}, - {"pink"}, -} - -for _, dye in ipairs(dye_colours) do -local colour = dye[1] - minetest.register_node(":dye:"..colour.."_node", { - tiles = { - "dye_"..colour.."_model.png", - }, - drawtype = "mesh", - mesh = "dye.obj", - paramtype = "light", - selection_box = { - type = "fixed", - fixed = { - {-0.1875, -0.5, -0.1875, 0.1875, -0.4375, 0.1875}, -- NodeBox1 - {-0.25, -0.4375, -0.25, 0.25, -0.1875, 0.25}, -- NodeBox2 - {-0.1875, -0.1875, -0.1875, 0.1875, -0.125, 0.1875}, -- NodeBox3 - {-0.125, -0.125, -0.125, 0.125, -0.0625, 0.125}, -- NodeBox4 - {-0.1875, -0.0625, -0.125, 0.1875, 0, 0.125}, -- NodeBox5 - {-0.125, 0, -0.125, 0.125, 0.0625, 0.125}, -- NodeBox6 - {-0.125, -0.0625, -0.1875, 0.125, 0, 0.1875}, -- NodeBox8 - } - }, - collision_box = { - type = "fixed", - fixed = { - {-0.1875, -0.5, -0.1875, 0.1875, -0.4375, 0.1875}, -- NodeBox1 - {-0.25, -0.4375, -0.25, 0.25, -0.1875, 0.25}, -- NodeBox2 - {-0.1875, -0.1875, -0.1875, 0.1875, -0.125, 0.1875}, -- NodeBox3 - {-0.125, -0.125, -0.125, 0.125, -0.0625, 0.125}, -- NodeBox4 - {-0.1875, -0.0625, -0.1875, 0.1875, 0, 0.1875}, -- NodeBox5 - {-0.125, 0, -0.125, 0.125, 0.0625, 0.125}, -- NodeBox6 - } - }, - groups = {cracky=1, oddly_breakable_by_hand=1, not_in_creative_inventory=1, dig_immediate=3}, - sounds = default.node_sound_glass_defaults(), - drop = "dye:"..colour, - }) - minetest.override_item("dye:"..colour, { - on_place = function(itemstack, placer, pointed_thing) - local pos = pointed_thing.above - minetest.set_node(pos, {name="dye:"..colour.."_node"}) - itemstack:take_item() - return itemstack - end, - }) -end - -minetest.register_node(":farming:bread_node", { - tiles = { - "farming_bread_top.png", - "farming_bread_top.png", - "farming_bread_side.png", - "farming_bread_side.png", - "farming_bread_front.png^[transformFX", - "farming_bread_front.png" - }, - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - node_box = { - type = "fixed", - fixed = { - {-0.1875, -0.5, -0.25, 0.125, -0.3125, 0.25}, -- NodeBox1 - {-0.25, -0.3125, -0.25, 0.1875, -0.1875, 0.25}, -- NodeBox2 - {-0.1875, -0.1875, -0.25, 0.125, -0.125, 0.25}, -- NodeBox3 - } - }, - groups = {crumbly=1, not_in_creative_inventory=1}, - sounds = default.node_sound_dirt_defaults(), - drop = "farming:bread" -}) - -minetest.register_node("hyrule_mapgen:chillshroom", { - description = "Chillshroom", - tiles = {"hyrule_mapgen_chillshroom.png"}, - drawtype = "plantlike", - paramtype = "light", - selection_box = { - type = "fixed", - fixed = { - {-0.1, -0.5, -0.1, 0.1, -0.1, 0.1} - } - }, - groups = {fleshy=1, oddly_breakable_by_hand=1, dig_immediate=3}, - sounds = default.node_sound_leaves_defaults(), - drop = "hyrule_mapgen:chillshroom 3", - walkable = false, - on_use = minetest.item_eat(1) -}) - -minetest.register_node("hyrule_mapgen:chillshroom_2", { - description = "Chillshroom (ceiling)", - tiles = {"hyrule_mapgen_chillshroom.png^[transformFY"}, - drawtype = "plantlike", - paramtype = "light", - selection_box = { - type = "fixed", - fixed = { - {-0.1, 0.1, -0.1, 0.1, 0.5, 0.1} - } - }, - groups = {fleshy=1, oddly_breakable_by_hand=1, dig_immediate=3}, - sounds = default.node_sound_leaves_defaults(), - drop = "hyrule_mapgen:chillshroom 3", - walkable = false, - on_use = minetest.item_eat(1) -}) - -minetest.register_node("hyrule_mapgen:sunshroom", { - description = "Sunshroom", - tiles = {"hyrule_mapgen_sunshroom.png"}, - drawtype = "plantlike", - paramtype = "light", - selection_box = { - type = "fixed", - fixed = { - {-0.1, -0.5, -0.1, 0.1, -0.1, 0.1} - } - }, - groups = {fleshy=1, oddly_breakable_by_hand=1, dig_immediate=3, flammable=1}, - sounds = default.node_sound_leaves_defaults(), - drop = "hyrule_mapgen:sunshroom 3", - walkable = false, - on_use = minetest.item_eat(1) -}) - -minetest.register_node("hyrule_mapgen:zapshroom", { - description = "Zapshroom", - tiles = {"hyrule_mapgen_zapshroom.png"}, - drawtype = "plantlike", - paramtype = "light", - selection_box = { - type = "fixed", - fixed = { - {-0.1, -0.5, -0.1, 0.1, -0.1, 0.1} - } - }, - groups = {fleshy=1, oddly_breakable_by_hand=1, dig_immediate=3}, - sounds = default.node_sound_leaves_defaults(), - drop = "hyrule_mapgen:zapshroom 3", - walkable = false, - on_use = minetest.item_eat(1) -}) - -minetest.register_node("hyrule_mapgen:rushroom", { - description = "Rushroom", - tiles = {"hyrule_mapgen_rushroom.png"}, - drawtype = "plantlike", - paramtype = "light", - selection_box = { - type = "fixed", - fixed = { - {-0.1, -0.5, -0.1, 0.1, -0.1, 0.1} - } - }, - groups = {fleshy=1, oddly_breakable_by_hand=1, dig_immediate=3}, - sounds = default.node_sound_leaves_defaults(), - drop = "hyrule_mapgen:rushroom 3", - walkable = false, - on_use = minetest.item_eat(1) -}) - -minetest.register_node("hyrule_mapgen:berry_bush", { - description = "Wildberry Bush", - tiles = {"hyrule_mapgen_wildberry_bush.png"}, - drawtype = "plantlike", - paramtype = "light", - selection_box = { - type = "fixed", - fixed = { - {-0.1, -0.5, -0.1, 0.1, 0, 0.1} - } - }, - groups = {snappy=1, oddly_breakable_by_hand=1, dig_immediate=3}, - sounds = default.node_sound_leaves_defaults(), - walkable = false, - on_rightclick = function(pos, node) - minetest.add_item(pos, "hyrule_mapgen:wildberry") - minetest.add_item(pos, "hyrule_mapgen:wildberry") - minetest.add_item(pos, "hyrule_mapgen:wildberry") - minetest.remove_node(pos) - end, -}) - -minetest.register_craftitem("hyrule_mapgen:wildberry", { - description = "Wild Berry", - inventory_image = "hyrule_mapgen_wildberry.png", - on_use = minetest.item_eat(1) -}) - -minetest.register_node("hyrule_mapgen:logpile", { - description = "Log Pile", - tiles = { - "default_tree.png^[transformR90", - "default_tree.png^[transformR90", - "default_tree.png^[transformR90", - "default_tree.png^[transformR90", - "default_tree_top.png", - "default_tree_top.png" - }, - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - node_box = { - type = "fixed", - fixed = { - {-0.5, -0.4375, -0.5, -0.0625, -0.125, 0.5}, -- NodeBox1 - {0.0625, -0.4375, -0.5, 0.5, -0.125, 0.5}, -- NodeBox2 - {0.125, -0.5, -0.5, 0.4375, -0.0625, 0.5}, -- NodeBox3 - {-0.4375, -0.5, -0.5, -0.125, -0.0625, 0.5}, -- NodeBox4 - {-0.125, -0.0625, -0.5, 0.1875, 0.375, 0.5}, -- NodeBox5 - {-0.1875, 0, -0.5, 0.25, 0.3125, 0.5}, -- NodeBox6 - } - }, - groups = {choppy=3, oddly_breakable_by_hand=1, flammable=1, falling_node=1}, - drop = "default:tree 3", -}) - -minetest.register_craft( { - output = "hyrule_mapgen:logpile 1", - recipe = { - { "", "default:tree", "" }, - { "default:tree", "", "default:tree" } - } -}) - -minetest.register_node(":default:book_placed", { - tiles = { - "default_book_top.png", - "default_book_top.png^[transformFY", - "default_book_right.png", - "default_book_left.png", - "default_book_top.png^[transformFX", - "default_book_top.png" - }, - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - node_box = { - type = "fixed", - fixed = { - {-0.25, -0.5, -0.375, 0.25, -0.4375, 0.3125}, -- NodeBox1 - {-0.25, -0.375, -0.375, 0.25, -0.3125, 0.3125}, -- NodeBox2 - {-0.25, -0.4375, -0.375, -0.1875, -0.375, 0.3125}, -- NodeBox3 - {-0.25, -0.4375, -0.375, 0.1875, -0.375, 0.25}, -- NodeBox4 - } - }, - groups = {choppy=1, dig_immediate=3, not_in_creative_inventory=1}, - sounds = default.node_sound_leaves_defaults(), - drop = "default:book" -}) - -minetest.register_node("hyrule_mapgen:bigmush", { - description = "Big Mushroom", - drawtype = "plantlike", - tiles = { - "hyrule_mapgen_bigmush.png" - }, - wield_image = "hyrule_mapgen_bigmush.png", - inventory_image = "hyrule_mapgen_bigmush.png", - groups = {snappy=1, flammable=1, oddly_breakable_by_hand = 1,}, - paramtype = "light", - walkable = false, - selection_box = { - type = "fixed", - fixed = {-0.3, -0.5, -0.3, 0.3, 0.2, 0.3} - }, - on_use = minetest.item_eat(-2) -}) - -minetest.register_node("hyrule_mapgen:big_table", { - description = "Big Table", - tiles = { - "hyrule_mapgen_bigtable_top.png", - "hyrule_mapgen_bigtable.png", - "hyrule_mapgen_bigtable.png", - "hyrule_mapgen_bigtable.png", - "hyrule_mapgen_bigtable.png", - "hyrule_mapgen_bigtable.png" - }, - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - node_box = { - type = "fixed", - fixed = { - {-0.5, 0.375, -0.5, 0.5, 0.5, 0.5}, -- NodeBox1 - {-0.5, -0.5, 0.1875, -0.1875, 0.375, 0.5}, -- NodeBox2 - } - }, - groups = {choppy=1, oddly_breakable_by_hand=1} -}) - -minetest.register_craft( { - output = "hyrule_mapgen:big_table 1", - recipe = { - { "default:wood", "default:wood", "default:wood" }, - { "default:wood", "", "" }, - { "default:wood", "", "" } - } -}) - -minetest.register_node("hyrule_mapgen:crystal_1", { - description = "Cave Crystal (Blue)", - tiles = { - "hyrule_mapgen_crystal1.png", - }, - groups = {cracky=1}, - drawtype = "nodebox", - use_texture_alpha = true, - paramtype = "light", - paramtype2 = "facedir", - light_source = 6, - node_box = { - type = "fixed", - fixed = { - {-0.125, -0.5, -0.0625, 0.1875, 0.4375, 0.25}, -- NodeBox6 - {0, -0.5, -0.3125, 0.1875, 0.1875, -0.125}, -- NodeBox7 - {-0.3125, -0.5, -0.1875, -0.0625, -0.0625, 0.0625}, -- NodeBox8 - {0.1875, -0.5, 0.0625, 0.3125, 0, 0.1875}, -- NodeBox9 - {-0.25, -0.5, 0.125, 0, 0.0625, 0.375}, -- NodeBox10 - } - }, - sounds = default.node_sound_glass_defaults() -}) - -minetest.register_node("hyrule_mapgen:crystal_3", { - description = "Cave Crystal (Green)", - tiles = { - "hyrule_mapgen_crystal3.png", - }, - groups = {cracky=1}, - use_texture_alpha = true, - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - light_source = 6, - node_box = { - type = "fixed", - fixed = { - {-0.1875, -0.5, -0.25, 0, 0.1875, -0.0625}, -- NodeBox16 - {0, -0.5, 0.0625, 0.25, 0.5, 0.3125}, -- NodeBox19 - {-0.375, -0.5, 0.0625, -0.1875, -0.0625, 0.25}, -- NodeBox20 - } - }, - sounds = default.node_sound_glass_defaults() -}) - -minetest.register_node("hyrule_mapgen:crystal_2", { - description = "Cave Crystal (Purple)", - tiles = { - "hyrule_mapgen_crystal2.png", - }, - groups = {cracky=1}, - use_texture_alpha = true, - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - light_source = 6, - node_box = { - type = "fixed", - fixed = { - {-0.125, -0.5, -0.1875, 0.125, 0.4375, 0.125}, -- NodeBox11 - {0.0625, -0.5, 0.1875, 0.25, 0.1875, 0.375}, -- NodeBox12 - {-0.375, -0.5, -0.25, -0.1875, -0.0625, -0.0625}, -- NodeBox13 - {-0.3125, -0.5, 0.0625, -0.0625, 0.125, 0.3125}, -- NodeBox14 - {0.0625, -0.5, -0.3125, 0.25, 0.25, -0.125}, -- NodeBox15 - } - }, - sounds = default.node_sound_glass_defaults() -}) - -minetest.register_node("hyrule_mapgen:bush_leaves", { - description = "Shrub Leaves", - tiles = {"hyrule_mapgen_bushleaves.png"}, - drawtype = "allfaces", - paramtype = "light", - walkable = false, - groups = {snappy=1, oddly_breakable_by_hand=1, leaves=1}, - sounds = default.node_sound_leaves_defaults(), -}) - -minetest.register_node("hyrule_mapgen:windmill_node", { - description = "Windmill", - drawtype = "airlike", - tiles = {"hyrule_mapgen_trans.png"}, - wield_image = "hyrule_mapgen_windmill_inv.png", - inventory_image = "hyrule_mapgen_windmill_inv.png", - groups = {choppy = 1, oddly_breakable_by_hand=1}, - sounds = default.node_sound_wood_defaults(), - on_construct = function(pos, node) - minetest.env:add_entity({x=pos.x, y=pos.y+1, z=pos.z}, "hyrule_mapgen:windmill") - end, -}) - -minetest.register_node("hyrule_mapgen:dungeon_seed", { - description = "Dungeon Seed", - tiles = {"default_stone.png"}, - groups = {cracky = 3, not_in_creative_inventory=1}, - sounds = default.node_sound_stone_defaults(), - drop = "default:stone" -}) - -minetest.register_node("hyrule_mapgen:moldorm_stone", { - description = "Moldorm Stone", - tiles = {"hyrule_mapgen_moldorm_stone.png"}, - groups = {}, - sounds = default.node_sound_stone_defaults(), - on_rightclick = function(pos, node, clicker, itemstack) - minetest.env:add_entity({x=pos.x, y=pos.y+1, z=pos.z}, "mobs_loz:great_moldorm") - minetest.remove_node(pos) - end, -}) - -minetest.register_node("hyrule_mapgen:octorock_stone", { - description = "Octorock Stone", - tiles = {"hyrule_mapgen_octorock_stone.png"}, - groups = {}, - sounds = default.node_sound_stone_defaults(), - on_rightclick = function(pos, node, clicker, itemstack) - minetest.env:add_entity({x=pos.x, y=pos.y+1, z=pos.z}, "mobs_loz:octorock_boss") - minetest.remove_node(pos) - end, -}) - -minetest.register_node("hyrule_mapgen:ice_brick", { - description = "Ice Brick", - tiles = {"hyrule_mapgen_ice_brick.png"}, - groups = {cracky = 3, cools_lava = 1}, - sounds = default.node_sound_glass_defaults(), -}) - -minetest.register_node("hyrule_mapgen:ice_waterfall", { - description = "Frozen Waterfall", - drawtype = "glasslike", - use_texture_alpha = true, - tiles = {"hyrule_mapgen_ice_waterfall.png"}, - inventory_image = "[inventorycube{hyrule_mapgen_ice_waterfall_inv.png{hyrule_mapgen_ice_waterfall_inv.png{hyrule_mapgen_ice_waterfall_inv.png", - groups = {cracky = 3, cools_lava = 1}, - sounds = default.node_sound_glass_defaults(), -}) - -minetest.register_craft({ - output = 'hyrule_mapgen:ice_brick', - recipe = { - {'default:ice', 'default:ice', ''}, - {'default:ice', '', ''}, - {'default:ice', '', ''}, - } -}) - -stairs.register_stair_and_slab( - "ice_brick", - "hyrule_mapgen:ice_brick", - {cracky = 3, cools_lava = 1}, - {"hyrule_mapgen_ice_brick.png"}, - "Ice brick Stair", - "Ice brick Slab", - default.node_sound_glass_defaults() -) - -minetest.register_node("hyrule_mapgen:icicle", { - description = "Icicle", - tiles = { - "default_ice.png", - }, - use_texture_alpha = true, - drawtype = "nodebox", - paramtype = "light", - node_box = { - type = "fixed", - fixed = { - {-0.25, -0.5, -0.25, 0.25, 0.5, 0.25}, -- NodeBox1 - {-0.1875, 0.4375, -0.1875, 0.1875, 1.1875, 0.1875}, -- NodeBox2 - {-0.125, 1.1875, -0.125, 0.125, 1.6875, 0.125}, -- NodeBox3 - {-0.0625, 1.6875, -0.0625, 0.0625, 2.0625, 0.0625}, -- NodeBox4 - } - }, - groups = {cracky=3, oddly_breakable_by_hand=1, dig_immediate=3}, - sounds = default.node_sound_glass_defaults(), - drop = "", - on_destruct = function(pos) - minetest.env:add_item({x=pos.x-0.3, y=pos.y+0.5, z=pos.z-0.3}, "hyruletools:ice_fragment") - minetest.env:add_item({x=pos.x-0.3, y=pos.y+0.5, z=pos.z+0.3}, "hyruletools:ice_fragment") - minetest.env:add_item({x=pos.x+0.3, y=pos.y+0.5, z=pos.z-0.3}, "hyruletools:ice_fragment") - minetest.env:add_item({x=pos.x+0.3, y=pos.y+0.5, z=pos.z+0.3}, "hyruletools:ice_fragment") - end, -}) - -minetest.register_node("hyrule_mapgen:obsidian_spike", { - description = "Obsidian spike", - tiles = { - "default_obsidian.png", - }, - use_texture_alpha = true, - drawtype = "nodebox", - paramtype = "light", - node_box = { - type = "fixed", - fixed = { - {-0.25, -0.5, -0.25, 0.25, 0.5, 0.25}, -- NodeBox1 - {-0.1875, 0.4375, -0.1875, 0.1875, 1.1875, 0.1875}, -- NodeBox2 - {-0.125, 1.1875, -0.125, 0.125, 1.6875, 0.125}, -- NodeBox3 - {-0.0625, 1.6875, -0.0625, 0.0625, 2.0625, 0.0625}, -- NodeBox4 - } - }, - groups = {cracky=1,}, - sounds = default.node_sound_stone_defaults(), - drop = "default:obsidian", -}) - -minetest.register_entity("hyrule_mapgen:laser", { - visual = "cube", - textures = { - "hyrule_mapgen_laser.png", - "hyrule_mapgen_laser.png", - "hyrule_mapgen_laser.png", - "hyrule_mapgen_laser.png", - "hyrule_mapgen_laser.png", - "hyrule_mapgen_laser.png", - }, - visual_size={x=0.1,y=0.1}, - collisionbox = {0, 0, 0, 0, 0, 0}, - physical = false, - automatic_rotate = true, - automatic_face_movement_dir = 0, - on_activate = function(self) - minetest.after(3, function() - self.object:remove() - end) - end, - on_step = function(self, dtime) - local pos = self.object:getpos() - local objs = minetest.get_objects_inside_radius({x=pos.x,y=pos.y-0.5,z=pos.z}, 0.5) - for k, obj in pairs(objs) do - if obj:is_player() then - obj:punch(self.object, 1.0, { - full_punch_interval=1.0, - damage_groups={fleshy=1}, - }, nil) - self.object:remove() - end - if obj:get_luaentity() ~= nil then - if obj:get_luaentity().name ~= "hyrule_mapgen:laser" and obj:get_luaentity().name ~= "__builtin:item" then - obj:punch(self.object, 1.0, { - full_punch_interval=1.0, - damage_groups={fleshy=1}, - }, nil) - self.object:remove() - end - end - end - end -}) - -minetest.register_node("hyrule_mapgen:beamos", { - description = "Beamos", - tiles = { - "hyrule_mapgen_beamos_top.png", - "hyrule_mapgen_beamos_bottom.png", - "hyrule_mapgen_beamos_sides.png", - "hyrule_mapgen_beamos_sides.png", - "hyrule_mapgen_beamos_sides.png", - "hyrule_mapgen_beamos_front.png", - }, - groups = {cracky = 3,}, - paramtype2 = "facedir", -}) - - -minetest.register_abm({ - nodenames = {"hyrule_mapgen:beamos"}, - interval = 0.8, - chance = 1, - action = function(pos, node) - local x = 0 - local z = 0 - if node.param2 == 0 then - z = -1 - elseif node.param2 == 2 then - z = 1 - elseif node.param2 == 1 then - x = -1 - elseif node.param2 == 3 then - x = 1 - end - --minetest.chat_send_all(node.param2) - for num=1,5 do - local objs = minetest.get_objects_inside_radius({x=pos.x+x*num, y=pos.y-0.5, z=pos.z+z*num}, 1) - for _, obj in ipairs(objs) do - if obj:is_player() then - local name = obj:get_player_name() - minetest.sound_play("Laser", {pos=pos, max_hear_distance=10, gain=0.5}) - local ent = minetest.env:add_entity(pos, "hyrule_mapgen:laser") - ent:setvelocity({x=12*x, y=0, z=12*z}) - for i=1,5 do - minetest.after(i/10, function() - local ent = minetest.env:add_entity(pos, "hyrule_mapgen:laser") - ent:setvelocity({x=12*x, y=0, z=12*z}) - end) - end - end - end - end - end -}) - -minetest.register_node("hyrule_mapgen:spikes", { - description = "Spikes", - drawtype = "firelike", - tiles = { - "hyrule_mapgen_spikes.png" - }, - wield_image = "hyrule_mapgen_spikes.png", - inventory_image = "hyrule_mapgen_spikes.png", - groups = {cracky=3}, - paramtype = "light", - walkable = false, - damage_per_second = 3, - selection_box = { - type = "fixed", - fixed = {-0.5, -0.5, -0.5, 0.5, -0.3, 0.5} - }, - collision_box = { - type = "fixed", - fixed = {-0.5, -0.5, -0.5, 0.5, -0.2, 0.5} - } -}) - -minetest.register_node("hyrule_mapgen:sinkingsand", { - description = "Sinkin Sand", - drawtype = "liquid", - tiles = {{ - name = "hyrule_mapgen_sinkingsand.png", - animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 1.00}, - }}, - inventory_image = "hyrule_mapgen_sinkingsand_inv.png", - groups = {liquid=1, water=1}, - pointable = false, - buildable_to = true, - liquid_viscosity = 8, - liquid_range = 0, - liquidtype = "source", - liquid_alternative_flowing = "hyrule_mapgen:sinkingsand", - liquid_alternative_source = "hyrule_mapgen:sinkingsand", - damage_per_second = 3, - walkable = false -}) - - -local chest_items = { - {"clawshot:clawshot", 5}, - {"hyruletools:eye", 5}, - {"hyruletools:boomerang", 5}, - {"hyruletools:flame_rod", 10}, - {"hyruletools:wand", 10}, - {"hyruletools:medallion", 10}, - {"hyruletools:medallion2", 10}, - {"hyruletools:medallion3", 10}, - {"hyruletools:ice_rod 1", 5}, - {"hyruletools:blue_rupee 20", 5}, - {"hyruletools:red_rupee 10", 5}, - {"hyruletools:nyan_rupee", 5}, -} - -minetest.register_node("hyrule_mapgen:chest", { - description = "Dungeon Chest", - tiles = {"hyrule_mapgen_chest_top.png", "hyrule_mapgen_chest_top.png", "hyrule_mapgen_chest_side.png", - "hyrule_mapgen_chest_side.png", "hyrule_mapgen_chest_side.png", "hyrule_mapgen_chest.png"}, - paramtype2 = "facedir", - paramtype = "light", - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.5, 0.5, 0.25, 0.5}, -- NodeBox1 - {-0.5, 0.375, -0.375, 0.5, 0.4375, 0.375}, -- NodeBox2 - {-0.5, 0.25, -0.4375, 0.5, 0.375, 0.4375}, -- NodeBox3 - {-0.5, 0.4375, -0.3125, 0.5, 0.5, 0.3125}, -- NodeBox4 - } - }, - groups = {cracky = 2, oddly_breakable_by_hand = 1}, - is_ground_content = false, - on_construct = function(pos) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - for _, row in ipairs(chest_items) do - local item = row[1] - local rarity = row[2] - if math.random(1,rarity) == 1 then - meta:set_string("item", item) - return - else - meta:set_string("item", "hyruletools:green_rupee 20") - end - end - inv:set_size("main", 1*1) - end, - can_dig = function(pos,player) - local meta = minetest.get_meta(pos); - local inv = meta:get_inventory() - return inv:is_empty("main") - end, - on_rightclick = function(pos, node, clicker, item, _) - local name = clicker:get_player_name() - if clicker:get_wielded_item():get_name() == "hyruletools:key" then - item:take_item() - local meta = minetest.get_meta(pos) - local item = meta:get_string("item") - if item == nil then - for _, row in ipairs(chest_items) do - local item = row[1] - local rarity = row[2] - if math.random(1,rarity) == 1 then - meta:set_string("item", item) - else - meta:set_string("item", "hyruletools:green_rupee 20") - end - end - end - minetest.env:add_item(pos, item) - minetest.env:remove_node(pos) - else - minetest.chat_send_player(name, "It is locked, you need a key!") - end - end, -}) - -minetest.register_node("hyrule_mapgen:chest_key", { - description = "Dungeon Chest (key)", - tiles = {"hyrule_mapgen_chest_top.png", "hyrule_mapgen_chest_top.png", "hyrule_mapgen_chest_side.png", - "hyrule_mapgen_chest_side.png", "hyrule_mapgen_chest_side.png", "hyrule_mapgen_chest.png"}, - paramtype2 = "facedir", - paramtype = "light", - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.5, 0.5, 0.25, 0.5}, -- NodeBox1 - {-0.5, 0.375, -0.375, 0.5, 0.4375, 0.375}, -- NodeBox2 - {-0.5, 0.25, -0.4375, 0.5, 0.375, 0.4375}, -- NodeBox3 - {-0.5, 0.4375, -0.3125, 0.5, 0.5, 0.3125}, -- NodeBox4 - } - }, - groups = {cracky = 2, oddly_breakable_by_hand = 1}, - is_ground_content = false, - on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) - if minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name ~= "hyrule_mapgen:dungeon_brick" and minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name ~= "hyrule_mapgen:dungeon_tile" and minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name ~= "hyrule_mapgen:dungeon_brick2" and minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name ~= "hyrule_mapgen:dungeon_tile2" then - minetest.env:add_item(pos, "hyruletools:key") - else - minetest.env:add_item(pos, "hyruletools:retro_key") - end - minetest.env:remove_node(pos) - return itemstack - end, -}) - -minetest.register_node("hyrule_mapgen:chest_bosskey", { - description = "Dungeon Chest (Boss key)", - tiles = {"hyrule_mapgen_chest_top.png", "hyrule_mapgen_chest_top.png", "hyrule_mapgen_chest_side.png", - "hyrule_mapgen_chest_side.png", "hyrule_mapgen_chest_side.png", "hyrule_mapgen_chest_bosskey.png"}, - paramtype2 = "facedir", - paramtype = "light", - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.5, 0.5, 0.25, 0.5}, -- NodeBox1 - {-0.5, 0.375, -0.375, 0.5, 0.4375, 0.375}, -- NodeBox2 - {-0.5, 0.25, -0.4375, 0.5, 0.375, 0.4375}, -- NodeBox3 - {-0.5, 0.4375, -0.3125, 0.5, 0.5, 0.3125}, -- NodeBox4 - } - }, - groups = {cracky = 2, oddly_breakable_by_hand = 1}, - is_ground_content = false, - can_dig = function(pos,player) - local meta = minetest.get_meta(pos); - local inv = meta:get_inventory() - return inv:is_empty("main") - end, - on_rightclick = function(pos, node, clicker, item, _) - local name = clicker:get_player_name() - if clicker:get_wielded_item():get_name() == "hyruletools:key" then - item:take_item() - minetest.env:add_item(pos, "hyruletools:key_boss") - minetest.env:remove_node(pos) - else - minetest.chat_send_player(name, "It's locked, you need a key!") - end - end, -}) - -minetest.register_node("hyrule_mapgen:bridge", { - description = "Wooden Bridge", - tiles = { - "hyrule_mapgen_bridge.png", - "hyrule_mapgen_bridge.png", - "hyrule_mapgen_bridge_side.png", - "hyrule_mapgen_bridge_side.png", - "hyrule_mapgen_bridge.png", - "hyrule_mapgen_bridge.png" - }, - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - node_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.4375, 0.5, -0.125, -0.1875}, -- NodeBox1 - {-0.5, -0.5, 0.1875, 0.5, -0.125, 0.4375}, -- NodeBox2 - {-0.5, -0.5, -0.125, 0.5, -0.125, 0.125}, -- NodeBox3 - {-0.5, -0.4375, -0.5, 0.5, -0.1875, 0.5}, -- NodeBox4 - } - }, - groups = {choppy=1, oddly_breakable_by_hand=1} -}) - -minetest.register_craft({ - output = 'hyrule_mapgen:bridge', - recipe = { - {'', 'group:wood', ''}, - {'group:wood', 'group:wood', 'group:wood'}, - } -}) - -minetest.register_node("hyrule_mapgen:bridge2", { - description = "Subrosian Bridge", - tiles = { - "hyrule_mapgen_bridge2.png", - "hyrule_mapgen_bridge2.png", - "hyrule_mapgen_bridge_side2.png", - "hyrule_mapgen_bridge_side2.png", - "hyrule_mapgen_bridge2.png", - "hyrule_mapgen_bridge2.png" - }, - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - node_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.4375, 0.5, -0.125, -0.1875}, -- NodeBox1 - {-0.5, -0.5, 0.1875, 0.5, -0.125, 0.4375}, -- NodeBox2 - {-0.5, -0.5, -0.125, 0.5, -0.125, 0.125}, -- NodeBox3 - {-0.5, -0.4375, -0.5, 0.5, -0.1875, 0.5}, -- NodeBox4 - } - }, - groups = {choppy=2, oddly_breakable_by_hand=1} -}) - -minetest.register_node("hyrule_mapgen:swamp_flower", { - description = "Swamp Flower", - drawtype = "mesh", - mesh = "lilypad.b3d", - tiles = {"hyrule_mapgen_swampflower.png"}, - inventory_image = "hyrule_mapgen_swampflower.png", - paramtype = "light", - sunlight_propagates = false, - walkable = false, - is_ground_content = true, - selection_box = { - type = "fixed", - fixed = {-0.5, -0.5, -0.5, 0.5, -0.4, 0.5} - }, - collision_box = { - type = "fixed", - fixed = {-1, -0.5, -1, 1, -0.4, 1} - }, - groups = {cracky=3,dig_immediate=3}, -}) - -playereffects.register_effect_type("float", "", nil, {"gravity"}, - function(player) - player:set_physics_override(nil,nil,0.2) - physics_overriden = true - end, - - function(effect, player) - player:set_physics_override(nil,nil,1) - physics_overriden = false - end, - false -) - -minetest.register_node("hyrule_mapgen:fallen_leaves", { - description = "Fallen Leaves", - tiles = { - "hyrule_mapgen_leaves.png", - }, - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - place_param2 = random, - groups = {snappy=2, oddly_breakable_by_hand=1, dig_immediate=3}, - node_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.5, 0.5, -0.45, 0.5}, - } - } -}) - -minetest.register_node("hyrule_mapgen:biglily", { - description = "Big Waterlily", - drawtype = "mesh", - mesh = "lilypad.b3d", - tiles = {"hyrule_mapgen_biglily.png"}, - inventory_image = "hyrule_mapgen_biglily.png", - paramtype = "light", - sunlight_propagates = false, - walkable = true, - is_ground_content = true, - liquids_pointable = true, - selection_box = { - type = "fixed", - fixed = {-0.5, -0.5, -0.5, 0.5, -0.4, 0.5} - }, - collision_box = { - type = "fixed", - fixed = {-1, -0.5, -1, 1, -0.4, 1} - }, - --on_place from flowers waterlily Originally by Ironzorg (MIT) and VanessaE (MIT) - --Various Minetest developers and contributors. - on_place = function(itemstack, placer, pointed_thing) - local pos = pointed_thing.above - local node = minetest.get_node(pointed_thing.under).name - local def = minetest.registered_nodes[node] - local player_name = placer:get_player_name() - - if def and def.liquidtype == "source" and - minetest.get_item_group(node, "water") > 0 then - if not minetest.is_protected(pos, player_name) then - minetest.set_node(pos, {name = "hyrule_mapgen:biglily", - param2 = math.random(0, 3)}) - if not minetest.setting_getbool("creative_mode") then - itemstack:take_item() - end - else - minetest.chat_send_player(player_name, "Node is protected") - minetest.record_protection_violation(pos, player_name) - end - end - - return itemstack - end, - groups = {snappy=1, dig_immediate=3,}, -}) - -minetest.register_node("hyrule_mapgen:deku_flower", { - description = "Deku Flower", - drawtype = "mesh", - mesh = "flatnode.b3d", - tiles = {"hyrule_mapgen_dekuflower.png"}, - inventory_image = "hyrule_mapgen_dekuflower.png", - paramtype = "light", - sunlight_propagates = false, - walkable = false, - is_ground_content = true, - selection_box = { - type = "fixed", - fixed = {-0.5, -0.5, -0.5, 0.5, -0.4, 0.5} - }, - groups = {snappy=1, dig_immediate=3,}, -}) - -minetest.register_node("hyrule_mapgen:healwater_src", { - description = "Healing Water Source", - drawtype = "liquid", - tiles = { - { - name = "default_water_source_animated.png^[colorize:pink:150", - animation = { - type = "vertical_frames", - aspect_w = 16, - aspect_h = 16, - length = 2.0, - }, - }, - }, - alpha = 160, - light_source = 14, - paramtype = "light", - walkable = false, - pointable = false, - diggable = false, - buildable_to = true, - is_ground_content = false, - drop = "", - drowning = -1, - liquidtype = "source", - liquid_alternative_flowing = "hyrule_mapgen:healwater_src", - liquid_alternative_source = "hyrule_mapgen:healwater_src", - liquid_range = 0, - liquid_viscosity = 1, - post_effect_color = {a = 103, r = 80, g = 50, b = 50}, - groups = {water = 3, liquid = 3,}, - sounds = default.node_sound_water_defaults(), -}) - --- GENERATED CODE --- Node Box Editor, version 0.8.1 - Glass --- Namespace: test - -minetest.register_node("hyrule_mapgen:geyser", { - description = "Lava Geyser", - tiles = { - "hyrule_mapgen_geyser_top.png", - "hyrule_mapgen_geyser_side.png", - "hyrule_mapgen_geyser_side.png", - "hyrule_mapgen_geyser_side.png", - "hyrule_mapgen_geyser_side.png", - "hyrule_mapgen_geyser_side.png" - }, - drawtype = "nodebox", - paramtype = "light", - groups = {crumbly=2, oddly_breakable_by_hand=1}, - damage_per_second = 1, - node_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.5, 0.5, -0.3125, 0.5}, -- NodeBox1 - {-0.4375, -0.3125, -0.4375, 0.4375, -0.125, 0.4375}, -- NodeBox2 - {-0.375, -0.125, -0.375, -0.125, 0, 0.375}, -- NodeBox3 - {0.1875, -0.125, -0.375, 0.375, 0, 0.375}, -- NodeBox4 - {-0.375, -0.125, -0.375, 0.375, 0, -0.1875}, -- NodeBox5 - {-0.3125, -0.125, 0.125, 0.3125, 0, 0.375}, -- NodeBox6 - } - } -}) - ---end of generated code - -minetest.register_abm({ - nodenames = {"hyrule_mapgen:geyser"}, - interval = 1, - chance = 2, - action = function(pos, node) - for i=1,30 do - minetest.after(i*0.13, function() - minetest.add_particle({ - pos = {x=pos.x, y=pos.y+math.random(0,3)/10, z=pos.z}, - velocity = {x=math.random(-1,1)/10, y=math.random(1,2), z=math.random(-1,1)/10}, - acceleration = {x=math.random(-1,1)/10, y=math.random(-5,-10)/10, z=math.random(-1,1)/10}, - expirationtime = math.random(5,10)/10, - size = math.random(3,5), - collisiondetection = false, - collisionremoval = false, - vertical = false, - texture = "hyrule_mapgen_fire.png", - glow = 9 - }) - end) - end - end -}) - -minetest.register_node("hyrule_mapgen:leaves_with_gale", { - description = "Leaves with Gale seed", - drawtype = "allfaces", - paramtype = "light", - tiles = { - "default_leaves.png^hyrule_mapgen_galeseed.png" - }, - drop = "default:leaves", - on_rightclick = function(pos, node, clicker, itemstack) - if clicker:get_wielded_item():get_name() == "hyruletools:seed_satchel" then - local item = clicker:get_wielded_item() - itemstack:take_item() - minetest.env:add_item(pos, "hyruletools:seed_gale") - minetest.env:set_node(pos, {name="default:leaves"}) - end - end, - walkable = false, - groups = {snappy=3, oddly_breakable_by_hand=1, dig_immediate=3} -}) - -minetest.register_node("hyrule_mapgen:leaves_with_ember", { - description = "Leaves with Ember seed", - drawtype = "allfaces", - paramtype = "light", - tiles = { - "default_pine_needles.png^hyrule_mapgen_emberseed.png" - }, - drop = "default:pine_needles", - on_rightclick = function(pos, node, clicker, itemstack) - if clicker:get_wielded_item():get_name() == "hyruletools:seed_satchel" then - local item = clicker:get_wielded_item() - itemstack:take_item() - minetest.env:add_item(pos, "hyruletools:seed_ember") - minetest.env:set_node(pos, {name="default:pine_needles"}) - end - end, - walkable = false, - groups = {snappy=3, oddly_breakable_by_hand=1, dig_immediate=3} -}) - -minetest.register_node("hyrule_mapgen:leaves_with_pegasus", { - description = "Leaves with Pegasus seed", - drawtype = "allfaces", - paramtype = "light", - tiles = { - "default_jungleleaves.png^hyrule_mapgen_pegasusseed.png" - }, - drop = "default:jungleleaves", - on_rightclick = function(pos, node, clicker, itemstack) - if clicker:get_wielded_item():get_name() == "hyruletools:seed_satchel" then - local item = clicker:get_wielded_item() - itemstack:take_item() - minetest.env:add_item(pos, "hyruletools:seed_pegasus") - minetest.env:set_node(pos, {name="default:jungleleaves"}) - end - end, - walkable = false, - groups = {snappy=3, oddly_breakable_by_hand=1, dig_immediate=3} -}) - -minetest.register_node("hyrule_mapgen:leaves_with_mystery", { - description = "Leaves with Mystery seed", - drawtype = "allfaces", - paramtype = "light", - tiles = { - "default_aspen_leaves.png^hyrule_mapgen_mysteryseed.png" - }, - drop = "default:aspen_leaves", - on_rightclick = function(pos, node, clicker, itemstack) - if clicker:get_wielded_item():get_name() == "hyruletools:seed_satchel" then - local item = clicker:get_wielded_item() - itemstack:take_item() - minetest.env:add_item(pos, "hyruletools:seed_mystery") - minetest.env:set_node(pos, {name="default:aspen_leaves"}) - end - end, - walkable = false, - groups = {snappy=3, oddly_breakable_by_hand=1, dig_immediate=3} -}) - -minetest.register_node("hyrule_mapgen:swamp_mud", { - description = "Swamp Mud", - tiles = { - "hyrule_mapgen_swampmud.png" - }, - groups = {crumbly=1, oddly_breakable_by_hand=1}, - sounds = default.node_sound_dirt_defaults() -}) - -minetest.register_node("hyrule_mapgen:swamp_grass", { - description = "Swamp Grass", - drawtype = "plantlike", - tiles = {"hyrule_mapgen_swampgrass.png"}, - inventory_image = "hyrule_mapgen_swampgrass.png", - is_ground_content = false, - sunlight_propagates = true, - walkable = false, - paramtype = "light", - selection_box = { - type = "fixed", - fixed = {{-0.3, -0.5, -0.3, 0.3, 0.4, 0.3}} - }, - groups = {snappy=1, oddly_breakable_by_hand=1, dig_immediate=3}, - sounds = default.node_sound_leaves_defaults(), - on_destruct = function(pos, oldnode) - local num = math.random(3,7) - if num == 5 then - minetest.env:add_item(pos, "hyruletools:green_rupee") - end - if num == 4 then - minetest.env:add_entity(pos, "hyruletools:heart_entity") - end - end, - drop = "", -}) - -minetest.register_node("hyrule_mapgen:grupee", { - description = "Green Rupee Block", - drawtype = "allfaces", - paramtype = "light", - tiles = { - "hyrule_mapgen_grupee.png" - }, - use_texture_alpha = true, - groups = {cracky=1, oddly_breakable_by_hand=1} -}) - -minetest.register_node("hyrule_mapgen:rrupee", { - description = "Red Rupee Block", - drawtype = "allfaces", - paramtype = "light", - tiles = { - "hyrule_mapgen_rrupee.png" - }, - use_texture_alpha = true, - groups = {cracky=1, oddly_breakable_by_hand=1} -}) - -minetest.register_node("hyrule_mapgen:brupee", { - description = "Blue Rupee Block", - drawtype = "allfaces", - paramtype = "light", - tiles = { - "hyrule_mapgen_brupee.png" - }, - use_texture_alpha = true, - groups = {cracky=1, oddly_breakable_by_hand=1} -}) - -minetest.register_node("hyrule_mapgen:nrupee", { - description = "Nyan Rupee Block", - drawtype = "allfaces", - paramtype = "light", - tiles = { - "hyrule_mapgen_nrupee.png" - }, - use_texture_alpha = true, - groups = {cracky=1, oddly_breakable_by_hand=1} -}) - - -minetest.register_craft({ - output = 'hyrule_mapgen:grupee', - recipe = { - {'hyruletools:green_rupee', 'hyruletools:green_rupee', 'hyruletools:green_rupee'}, - {'hyruletools:green_rupee', 'hyruletools:green_rupee', 'hyruletools:green_rupee'}, - {'hyruletools:green_rupee', 'hyruletools:green_rupee', 'hyruletools:green_rupee'}, - } -}) - -minetest.register_craft({ - output = 'hyrule_mapgen:rrupee', - recipe = { - {'hyruletools:red_rupee', 'hyruletools:red_rupee', 'hyruletools:red_rupee'}, - {'hyruletools:red_rupee', 'hyruletools:red_rupee', 'hyruletools:red_rupee'}, - {'hyruletools:red_rupee', 'hyruletools:red_rupee', 'hyruletools:red_rupee'}, - } -}) - -minetest.register_craft({ - output = 'hyrule_mapgen:brupee', - recipe = { - {'hyruletools:blue_rupee', 'hyruletools:blue_rupee', 'hyruletools:blue_rupee'}, - {'hyruletools:blue_rupee', 'hyruletools:blue_rupee', 'hyruletools:blue_rupee'}, - {'hyruletools:blue_rupee', 'hyruletools:blue_rupee', 'hyruletools:blue_rupee'}, - } -}) - -minetest.register_craft({ - output = 'hyrule_mapgen:nrupee', - recipe = { - {'hyruletools:nyan_rupee', 'hyruletools:nyan_rupee', 'hyruletools:nyan_rupee'}, - {'hyruletools:nyan_rupee', 'hyruletools:nyan_rupee', 'hyruletools:nyan_rupee'}, - {'hyruletools:nyan_rupee', 'hyruletools:nyan_rupee', 'hyruletools:nyan_rupee'}, - } -}) - -xpanes.register_pane("wood_fence", { - description = "Wooden Fence", - textures = {"hyrule_mapgen_woodfence.png","xpanes_pane_half.png","xpanes_pane_half.png"}, - inventory_image = "hyrule_mapgen_woodfence.png", - wield_image = "hyrule_mapgen_woodfence.png", - sounds = default.node_sound_glass_defaults(), - groups = {snappy=2, choppy=1, oddly_breakable_by_hand=3}, - recipe = { - {"default:stick", "default:stick", "default:stick"}, - {"default:stick", "default:stick", "default:stick"} - } -}) - -minetest.register_node("hyrule_mapgen:sandstone", { - description = "Dungeon Sandstone", - tiles = { - "hyrule_mapgen_sandstone.png" - }, - groups = {cracky=3,}, - sounds = default.node_sound_stone_defaults() -}) - -minetest.register_node("hyrule_mapgen:sandstone_block", { - description = "Dungeon Sandstone Block", - tiles = { - "hyrule_mapgen_sandstone.png", - "hyrule_mapgen_sandstone.png", - "hyrule_mapgen_sandstone_side.png", - }, - groups = {cracky=3,}, - sounds = default.node_sound_stone_defaults() -}) - -stairs.register_stair_and_slab( - "dsandstone", - "hyrule_mapgen:sandstone", - {cracky = 3, oddly_breakable_by_hand = 2, flammable = 2}, - {"hyrule_mapgen_sandstone.png"}, - "Dungeon Sandstone Stair", - "Dungeon Sandstne Slab", - default.node_sound_stone_defaults() -) - -minetest.register_node("hyrule_mapgen:sandstone_tile", { - description = "Dungeon Sandstone Tile", - tiles = { - "hyrule_mapgen_sandstone_tile.png" - }, - groups = {cracky=3,}, - sounds = default.node_sound_stone_defaults() -}) - -minetest.register_node("hyrule_mapgen:sandstone_decoration", { - description = "Dungeon Sandstone Decoration", - tiles = { - "hyrule_mapgen_sandstone.png", - "hyrule_mapgen_sandstone.png", - "hyrule_mapgen_sandstone_decoration.png", - "hyrule_mapgen_sandstone_decoration.png", - "hyrule_mapgen_sandstone_decoration.png", - "hyrule_mapgen_sandstone_decoration.png", - }, - groups = {cracky=3,}, - sounds = default.node_sound_stone_defaults() -}) - -minetest.register_node("hyrule_mapgen:sandstone_decoration2", { - description = "Dungeon Sandstone Decoration 2", - tiles = { - "hyrule_mapgen_sandstone.png", - "hyrule_mapgen_sandstone.png", - "hyrule_mapgen_sandstone_decoration2.png", - "hyrule_mapgen_sandstone_decoration2.png", - "hyrule_mapgen_sandstone_decoration2.png", - "hyrule_mapgen_sandstone_decoration2.png", - }, - groups = {cracky=3,}, - sounds = default.node_sound_stone_defaults() -}) - -minetest.register_node("hyrule_mapgen:pillar", { - description = "Sandstone Pillar", - tiles = { - "hyrule_mapgen_sandstone_tile.png", - "hyrule_mapgen_sandstone_tile.png", - "hyrule_mapgen_sandstone_pillar.png", - "hyrule_mapgen_sandstone_pillar.png", - "hyrule_mapgen_sandstone_pillar.png", - "hyrule_mapgen_sandstone_pillar.png" - }, - drawtype = "nodebox", - paramtype = "light", - groups = {cracky=2, falling_node=1}, - node_box = { - type = "fixed", - fixed = { - {-0.25, -0.5, -0.25, 0.25, 0.5, 0.25}, -- NodeBox4 - } - }, - sounds = default.node_sound_stone_defaults() -}) - -minetest.register_node("hyrule_mapgen:pillar_base", { - description = "Sandstone Pillar (base)", - tiles = { - "hyrule_mapgen_sandstone_tile.png", - "hyrule_mapgen_sandstone_tile.png", - "hyrule_mapgen_sandstone_pillar_base.png", - "hyrule_mapgen_sandstone_pillar_base.png", - "hyrule_mapgen_sandstone_pillar_base.png", - "hyrule_mapgen_sandstone_pillar_base.png" - }, - drawtype = "nodebox", - paramtype = "light", - groups = {cracky=2, falling_node=1}, - node_box = { - type = "fixed", - fixed = { - {-0.4375, -0.5, -0.4375, 0.4375, -0.4375, 0.4375}, -- NodeBox1 - {-0.375, -0.4375, -0.375, 0.375, -0.3125, 0.375}, -- NodeBox2 - {-0.3125, -0.3125, -0.3125, 0.3125, -0.1875, 0.3125}, -- NodeBox3 - {-0.25, -0.1875, -0.25, 0.25, 0.5, 0.25}, -- NodeBox4 - } - }, - sounds = default.node_sound_stone_defaults() -}) - -minetest.register_node("hyrule_mapgen:pillar_top", { - description = "Sandstone Pillar (top)", - tiles = { - "hyrule_mapgen_sandstone_tile.png", - "hyrule_mapgen_sandstone_tile.png", - "hyrule_mapgen_sandstone_pillar_top.png", - "hyrule_mapgen_sandstone_pillar_top.png", - "hyrule_mapgen_sandstone_pillar_top.png", - "hyrule_mapgen_sandstone_pillar_top.png" - }, - drawtype = "nodebox", - paramtype = "light", - groups = {cracky=2, falling_node=1}, - node_box = { - type = "fixed", - fixed = { - {-0.4375, 0.4375, -0.4375, 0.4375, 0.5, 0.4375}, -- NodeBox1 - {-0.375, 0.3125, -0.375, 0.375, 0.4375, 0.375}, -- NodeBox2 - {-0.3125, 0.1875, -0.3125, 0.3125, 0.3125, 0.3125}, -- NodeBox3 - {-0.25, -0.5, -0.25, 0.25, 0.1875, 0.25}, -- NodeBox4 - } - }, - sounds = default.node_sound_stone_defaults() -}) - -minetest.register_node("hyrule_mapgen:greenwall", { - description = "Green Tile", - tiles = { - "hyrule_mapgen_green_wall.png" - }, - groups = {cracky=1, magnetic=0} -}) - -minetest.register_node("hyrule_mapgen:beamoswall", { - description = "Beamos Block", - tiles = { - "hyrule_mapgen_beamos_wall.png" - }, - groups = {cracky=1, magnetic=0} -}) - -minetest.register_node("hyrule_mapgen:railblock", { - description = "Railway Block", - tiles = { - "hyrule_mapgen_railblock.png" - }, - groups = {cracky=1, magnetic=0} -}) - -minetest.register_node("hyrule_mapgen:greentile", { - description = "Green Dungeon Tile", - tiles = { - "hyrule_mapgen_greentile.png" - }, - groups = {cracky=1,}, - sounds = default.node_sound_glass_defaults() -}) - -minetest.register_node("hyrule_mapgen:stained_glass", { - description = "Stained Glass", - drawtype = "glasslike", - tiles = { - "hyrule_mapgen_stainedglass.png" - }, - use_texture_alpha = true, - paramtype = "light", - light_source = 10, - sunlight_propagates = true, - groups = {cracky=1, oddly_breakable_by_hand=1, dig_immediate = 3}, - sounds = default.node_sound_glass_defaults() -}) - -minetest.register_node("hyrule_mapgen:ganon_sphere", { - description = "Ganon Sphere", - tiles = { - "hyrule_mapgen_ganonsphere.png", - }, - drawtype = "nodebox", - paramtype = "light", - light_source = 10, - groups = {cracky=4, oddly_breakable_by_hand=1}, - walkable = false, - sounds = default.node_sound_glass_defaults(), - use_texture_alpha = true, - node_box = { - type = "fixed", - fixed = { - {-0.375, -0.1875, -0.1875, 0.375, 0.1875, 0.1875}, -- NodeBox5 - {-0.1875, -0.375, -0.1875, 0.1875, 0.375, 0.1875}, -- NodeBox6 - {-0.3125, -0.25, -0.25, 0.3125, 0.25, 0.25}, -- NodeBox7 - {-0.25, -0.25, -0.3125, 0.25, 0.25, 0.3125}, -- NodeBox8 - {-0.25, -0.3125, -0.25, 0.25, 0.3125, 0.25}, -- NodeBox9 - {-0.1875, -0.1875, -0.375, 0.1875, 0.1875, 0.375}, -- NodeBox12 - } - }, - drop = "" -}) - -minetest.register_node("hyrule_mapgen:floortile", { - description = "Floor Tile", - tiles = { - "hyrule_mapgen_floortile.png" - }, - groups = {cracky=1, magnetic=1} -}) - -minetest.register_node("hyrule_mapgen:floorbrick", { - description = "Floor Brick", - tiles = { - "hyrule_mapgen_brick.png" - }, - groups = {cracky=1} -}) - -stairs.register_stair_and_slab( - "floortile", - "hyrule_mapgen:floortile", - {cracky = 3, cools_lava = 1}, - {"hyrule_mapgen_floortile.png"}, - "Floor Tile Stair", - "Floor Tile Slab", - default.node_sound_stone_defaults() -) - -minetest.register_node("hyrule_mapgen:carpet", { - description = "Carpet Block", - tiles = { - "hyrule_mapgen_carpet.png" - }, - groups = {fleshy=1, dig_immediate=3, oddly_breakable_by_hand=1} -}) - -minetest.register_node("hyrule_mapgen:carpet_trap", { - description = "Carpet Trap", - tiles = { - "hyrule_mapgen_carpet.png" - }, - walkable = false, - damage_per_second = 3, - groups = {fleshy=1, dig_immediate=3, oddly_breakable_by_hand=1} -}) - - -minetest.register_node("hyrule_mapgen:magnblock", { - description = "Magnetic Block (almost unbreakeable)", - tiles = { - "hyrule_mapgen_magnblock.png" - }, - groups = {cracky=7, magnetic=1} -}) - -minetest.register_node("hyrule_mapgen:flameblock", { - description = "Flame Block (almost unbreakeable)", - tiles = { - "hyrule_mapgen_flameblock.png" - }, - groups = {cracky=7, flammable=1} -}) - - -minetest.register_node("hyrule_mapgen:subrosian_stone", { - description = "Subrosian Stone", - tiles = { - "hyrule_mapgen_subrosianstone.png" - }, - paramtype = "light", - light_source = 10, - groups = {cracky=2,} -}) - - -minetest.register_craft({ - output = 'hyrule_mapgen:railblock', - recipe = { - {'', 'default:steel_ingot', ''}, - {'default:steel_ingot', 'default:steel_ingot', ''}, - {'', 'default:steel_ingot', ''}, - } -}) - -local function open_door(pos, player) - if doors.get then - local minp = {x=pos.x-5, y=pos.y, z=pos.z-5} - local maxp = {x=pos.x+5, y=pos.y, z=pos.z+5} - local doorss = minetest.find_nodes_in_area(minp, maxp, "group:door") - for i = 1, #doorss do - local dpos = {x=doorss[i].x, y=doorss[i].y, z=doorss[i].z} - local door = doors.get(dpos) - door:toggle(player) - end - - end -end - -minetest.register_node("hyrule_mapgen:lamp", { - description = "Floor Lamp", - tiles = { - "hyrule_mapgen_lamptop.png", - "hyrule_mapgen_lamptop.png", - "hyrule_mapgen_lampside.png", - }, - drawtype = "nodebox", - paramtype = "light", - node_box = { - type = "fixed", - fixed = { - {0.375, -0.5, 0.375, 0.5, 0, 0.5}, -- NodeBox1 - {0.375, -0.5, -0.5, 0.5, 0, -0.375}, -- NodeBox2 - {-0.5, -0.5, -0.5, -0.375, 0, -0.375}, -- NodeBox3 - {-0.5, -0.5, 0.375, -0.375, 0, 0.5}, -- NodeBox4 - {-0.375, -0.5, -0.375, 0.375, -0.1875, 0.375}, -- NodeBox5 - {-0.375, -0.375, -0.4375, 0.375, 0.1875, -0.3125}, -- NodeBox6 - {-0.375, -0.375, 0.3125, 0.375, 0.1875, 0.4375}, -- NodeBox7 - {0.3125, -0.375, -0.375, 0.4375, 0.1875, 0.375}, -- NodeBox8 - {-0.4375, -0.375, -0.375, -0.3125, 0.1875, 0.375}, -- NodeBox9 - {-0.1875, -0.5, -0.1875, 0.1875, -0.0625, 0.1875}, -- NodeBox10 - {-0.4375, -0.5, -0.4375, 0.4375, 0.0625, 0.4375}, -- NodeBox11 - } - }, - on_rightclick = function(pos, node, clicker, itemstack) - if clicker:get_wielded_item():get_name() == "hyruletools:lantern" then - minetest.set_node(pos, {name="hyrule_mapgen:lamp_lit"}) - open_door(pos, clicker) - end - end, - groups = {cracky=1, falling_node=1}, -}) - -minetest.register_node("hyrule_mapgen:lamp_lit", { - description = "Floor Lamp", - tiles = { - "hyrule_mapgen_lamptop.png", - "hyrule_mapgen_lamptop.png", - "hyrule_mapgen_lampside.png", - }, - drawtype = "nodebox", - light_source = 10, - sunlight_propagates = false, - paramtype = "light", - drop = "hyrule_mapgen:lamp", - node_box = { - type = "fixed", - fixed = { - {0.375, -0.5, 0.375, 0.5, 0, 0.5}, -- NodeBox1 - {0.375, -0.5, -0.5, 0.5, 0, -0.375}, -- NodeBox2 - {-0.5, -0.5, -0.5, -0.375, 0, -0.375}, -- NodeBox3 - {-0.5, -0.5, 0.375, -0.375, 0, 0.5}, -- NodeBox4 - {-0.375, -0.5, -0.375, 0.375, -0.1875, 0.375}, -- NodeBox5 - {-0.375, -0.375, -0.4375, 0.375, 0.1875, -0.3125}, -- NodeBox6 - {-0.375, -0.375, 0.3125, 0.375, 0.1875, 0.4375}, -- NodeBox7 - {0.3125, -0.375, -0.375, 0.4375, 0.1875, 0.375}, -- NodeBox8 - {-0.4375, -0.375, -0.375, -0.3125, 0.1875, 0.375}, -- NodeBox9 - {-0.1875, -0.5, -0.1875, 0.1875, -0.0625, 0.1875}, -- NodeBox10 - {-0.4375, -0.5, -0.4375, 0.4375, 0.0625, 0.4375}, -- NodeBox11 - } - }, - groups = {cracky=1, falling_node=1, not_in_creative_inventory=1}, -}) - -minetest.register_abm({ - nodenames = {"hyrule_mapgen:lamp_lit"}, - interval = 1, - chance = 1, - action = function(pos, node) - for i=1,5 do - minetest.after(i*0.2, function() - minetest.add_particle({ - pos = {x=pos.x+math.random(-2,2)/10, y=pos.y, z=pos.z+math.random(-2,2)/10}, - velocity = {x=0, y=math.random(5,10)/10, z=0}, - acceleration = {x=math.random(0,5)/10, y=0.5, z=math.random(0,5)/10}, - expirationtime = math.random(2,5)/10, - size = math.random(4,8), - collisiondetection = false, - collisionremoval = false, - vertical = false, - texture = "hyruletools_flame.png", - glow = 9 - }) - end) - end - end -}) - -minetest.register_abm({ - nodenames = {"hyrule_mapgen:lamp_lit"}, - interval = 30, - chance = 1, - action = function(pos, node) - minetest.set_node(pos, {name="hyrule_mapgen:lamp"}) - end -}) - -minetest.register_node("hyrule_mapgen:rock", { - description = "Rock", - tiles = { - "hyrule_mapgen_rock.png", - "hyrule_mapgen_rock.png", - "hyrule_mapgen_rock.png", - "hyrule_mapgen_rock.png", - "hyrule_mapgen_rock.png", - "hyrule_mapgen_rock.png" - }, - drawtype = "nodebox", - paramtype = "light", - groups = {cracky=1, falling_node=1}, - on_destruct = function(pos, oldnode) - local num = math.random(3,5) - if num == 5 then - minetest.env:add_item({x=pos.x, y=pos.y+0.5, z=pos.z}, "hyruletools:green_rupee") - end - end, - node_box = { - type = "fixed", - fixed = { - {-0.375, -0.5, -0.375, 0.3125, -0.4375, 0.3125}, -- NodeBox1 - {-0.4375, -0.4375, -0.3125, 0.375, -0.125, 0.25}, -- NodeBox2 - {-0.3125, -0.125, -0.375, 0.25, -0.0625, 0.3125}, -- NodeBox3 - {-0.3125, -0.4375, -0.4375, 0.25, -0.125, 0.375}, -- NodeBox4 - {-0.375, -0.4375, -0.375, 0.3125, -0.125, 0.3125}, -- NodeBox5 - {-0.25, -0.0625, -0.3125, 0.1875, 0, 0.25}, -- NodeBox6 - {-0.375, -0.125, -0.25, 0.3125, -0.0625, 0.1875}, -- NodeBox7 - } - } -}) - -minetest.register_node("hyrule_mapgen:packed_dirt", { - description = "Packed Dirt", - tiles = { - "default_dirt.png", - }, - drawtype = "nodebox", - paramtype = "light", - groups = {crumbly=1, oddly_breakable_by_hand=1}, - drop = "default:dirt", - node_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.5, 0.5, 0.4, 0.5}, - } - } -}) - -minetest.register_node("hyrule_mapgen:wallring", { - description = "Wall Ring", - tiles = { - "hyrule_mapgen_railblock.png", - "hyrule_mapgen_railblock.png", - "hyrule_mapgen_wallring.png", - "hyrule_mapgen_wallring.png", - "hyrule_mapgen_wallring.png", - "hyrule_mapgen_wallring.png", - }, - groups = {cracky=1, hook=1} -}) - -minetest.register_craft({ - output = 'hyrule_mapgen:wallring', - recipe = { - {'hyrule_mapgen:railblock', 'default:steel_ingot'}, - } -}) - - -minetest.register_node("hyrule_mapgen:lavabiome_dirt", { - description = "Burnt Dirt", - tiles = { - "hyrule_mapgen_dirt.png" - }, - groups = {crumbly=1, oddly_breakable_by_hand=1} -}) - -minetest.register_node("hyrule_mapgen:stone_with_redrupee", { - description = "Buried red rupee", - tiles = {"default_stone.png^hyruletools_redrupee_ore.png"}, - groups = {cracky = 2, xp = 1}, - drop = 'hyruletools:red_rupee', - sounds = default.node_sound_stone_defaults(), -}) -minetest.register_node("hyrule_mapgen:stone_with_bluerupee", { - description = "Buried blue rupee", - tiles = {"default_stone.png^hyruletools_bluerupee_ore.png"}, - groups = {cracky = 2, xp = 1}, - drop = 'hyruletools:blue_rupee', - sounds = default.node_sound_stone_defaults(), -}) -minetest.register_node("hyrule_mapgen:stone_with_greenrupee", { - description = "Buried green rupee", - tiles = {"default_stone.png^hyruletools_greenrupee_ore.png"}, - groups = {cracky = 2, xp = 1}, - drop = 'hyruletools:green_rupee', - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node("hyrule_mapgen:dungeon_barrier", { - description = "Retro Dungeon Barrier", - tiles = { - "hyrule_mapgen_dungeon_barrier.png", - }, - groups = {cracky=3}, -}) - -minetest.register_node("hyrule_mapgen:dungeon_tile", { - description = "Retro Dungeon Tile", - tiles = { - "hyrule_mapgen_dungeon_tile.png", - }, - groups = {cracky=3}, -}) - -minetest.register_node("hyrule_mapgen:dungeon_brick", { - description = "Retro Dungeon Brick", - tiles = { - "hyrule_mapgen_dungeon_brick.png", - }, - groups = {cracky=3}, -}) - -stairs.register_stair_and_slab( - "dungeon_brick", - "hyrule_mapgen:dungeon_brick", - {cracky = 3, cools_lava = 1}, - {"hyrule_mapgen_dungeon_brick.png"}, - "Retro Dungeon Stair", - "Retro Dungeon Slab", - default.node_sound_stone_defaults() -) - -minetest.register_node("hyrule_mapgen:dungeon_barrier2", { - description = "Retro Dungeon Barrier 2", - tiles = { - "hyrule_mapgen_dungeon_barrier2.png", - }, - groups = {cracky=3}, -}) - -minetest.register_node("hyrule_mapgen:dungeon_tile2", { - description = "Retro Dungeon Tile 2", - tiles = { - "hyrule_mapgen_dungeon_tile2.png", - }, - groups = {cracky=3}, -}) - -minetest.register_node("hyrule_mapgen:dungeon_brick2", { - description = "Retro Dungeon Brick 2", - tiles = { - "hyrule_mapgen_dungeon_brick2.png", - }, - groups = {cracky=3}, -}) - -stairs.register_stair_and_slab( - "dungeon_brick2", - "hyrule_mapgen:dungeon_brick2", - {cracky = 3, cools_lava = 1}, - {"hyrule_mapgen_dungeon_brick2.png"}, - "Retro Dungeon Stair 2", - "Retro Dungeon Slab 2", - default.node_sound_stone_defaults() -) - -minetest.register_node("hyrule_mapgen:dungeon_torch", { - description = "Dungeon Torch", - drawtype = "plantlike", - visual_scale = 2, - walkable = false, - tiles = { - {name = "hyrule_mapgen_torch.png", animation = {type = "vertical_frames", aspect_w = 32, aspect_h = 32, length = 0.5,}, - }, - }, - inventory_image = "hyrule_mapgen_torch_inv.png", - wield_image = "hyrule_mapgen_torch_inv.png", - paramtype = "light", - light_source = 14, - use_texture_alpha = true, - groups = {choppy=1}, - selection_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.5, 0.5, -0.2, 0.5}, - } - }, -}) - -minetest.register_node("hyrule_mapgen:subrosian_tile", { - description = "Subrosian Tile", - tiles = { - "hyrule_mapgen_subrosiantile.png", - }, - paramtype = "light", - light_source = 10, - groups = {cracky=2}, -}) - -minetest.register_node("hyrule_mapgen:subrosian_sand", { - description = "Subrosian Sand", - tiles = { - "hyrule_mapgen_subrosiansand.png", - "hyrule_mapgen_subrosiansand.png^[colorize:black:50", - "hyrule_mapgen_subrosiansand.png^[colorize:black:20", - "hyrule_mapgen_subrosiansand.png^[colorize:black:20", - "hyrule_mapgen_subrosiansand.png^[colorize:black:10", - "hyrule_mapgen_subrosiansand.png^[colorize:black:60", - }, - paramtype = "light", - light_source = 10, - groups = {crumbly=1, oddly_breakable_by_hand=1}, -}) - -minetest.register_node("hyrule_mapgen:blue_ore", { - description = "Subrosian Sand", - tiles = { - "hyrule_mapgen_subrosiansand.png", - "hyrule_mapgen_subrosiansand.png^[colorize:black:50", - "hyrule_mapgen_subrosiansand.png^[colorize:black:20", - "hyrule_mapgen_subrosiansand.png^[colorize:black:20", - "hyrule_mapgen_subrosiansand.png^[colorize:black:10", - "hyrule_mapgen_subrosiansand.png^[colorize:black:60", - }, - paramtype = "light", - light_source = 10, - drop = "hyruletools:blue_ore", - groups = {crumbly=1, oddly_breakable_by_hand=1, xp=1, not_in_creative_inventory=1}, -}) - -minetest.register_node("hyrule_mapgen:red_ore", { - description = "Subrosian Sand", - tiles = { - "hyrule_mapgen_subrosiansand.png", - "hyrule_mapgen_subrosiansand.png^[colorize:black:50", - "hyrule_mapgen_subrosiansand.png^[colorize:black:20", - "hyrule_mapgen_subrosiansand.png^[colorize:black:20", - "hyrule_mapgen_subrosiansand.png^[colorize:black:10", - "hyrule_mapgen_subrosiansand.png^[colorize:black:60", - }, - paramtype = "light", - light_source = 10, - drop = "hyruletools:red_ore", - groups = {crumbly=1, oddly_breakable_by_hand=1, xp=1, not_in_creative_inventory=1}, -}) - -minetest.register_node("hyrule_mapgen:stalagtite", { - description = "Stalagtite", - drawtype = "plantlike", - tiles = {"hyrule_mapgen_stalagmite0.png"}, - inventory_image = "hyrule_mapgen_stalagmite0.png", - is_ground_content = false, - sunlight_propagates = true, - walkable = false, - paramtype = "light", - selection_box = { - type = "fixed", - fixed = {{-0.3, -0.2, -0.3, 0.3, 0.5, 0.3}} - }, - groups = {crumbly=1, oddly_breakable_by_hand=1}, - sounds = default.node_sound_stone_defaults() -}) - -minetest.register_node("hyrule_mapgen:stalagtite1", { - description = "Stalagtite", - drawtype = "plantlike", - tiles = {"hyrule_mapgen_stalagmite1.png"}, - inventory_image = "hyrule_mapgen_stalagmite1.png", - is_ground_content = false, - sunlight_propagates = true, - walkable = false, - paramtype = "light", - selection_box = { - type = "fixed", - fixed = {{-0.3, -0.2, -0.3, 0.3, 0.5, 0.3}} - }, - groups = {crumbly=1, oddly_breakable_by_hand=1}, -}) - -minetest.register_node("hyrule_mapgen:stalagtite2", { - description = "Stalagtite", - drawtype = "plantlike", - tiles = {"hyrule_mapgen_stalagmite2.png"}, - inventory_image = "hyrule_mapgen_stalagmite2.png", - is_ground_content = false, - sunlight_propagates = true, - walkable = false, - paramtype = "light", - selection_box = { - type = "fixed", - fixed = {{-0.3, -0.2, -0.3, 0.3, 0.5, 0.3}} - }, - groups = {crumbly=1, oddly_breakable_by_hand=1}, - sounds = default.node_sound_stone_defaults() -}) - -minetest.register_node("hyrule_mapgen:stalagtite3", { - description = "Stalagtite", - drawtype = "plantlike", - tiles = {"hyrule_mapgen_stalagmite3.png"}, - inventory_image = "hyrule_mapgen_stalagmite3.png", - is_ground_content = false, - sunlight_propagates = true, - walkable = false, - paramtype = "light", - selection_box = { - type = "fixed", - fixed = {{-0.3, -0.2, -0.3, 0.3, 0.5, 0.3}} - }, - groups = {crumbly=1, oddly_breakable_by_hand=1}, - sounds = default.node_sound_stone_defaults() -}) - -minetest.register_node("hyrule_mapgen:stalagmite0", { - description = "Stalagmite", - drawtype = "plantlike", - tiles = {"hyrule_mapgen_stalagmite0.png^[transformFY"}, - inventory_image = "hyrule_mapgen_stalagmite0.png^[transformFY", - is_ground_content = false, - sunlight_propagates = true, - paramtype = "light", - walkable = false, - selection_box = { - type = "fixed", - fixed = {{-0.3, -0.2, -0.3, 0.3, 0.5, 0.3}} - }, - groups = {crumbly=1, oddly_breakable_by_hand=1}, - sounds = default.node_sound_stone_defaults() -}) - -minetest.register_node("hyrule_mapgen:stalagmite1", { - description = "Stalagmite", - drawtype = "plantlike", - visual_scale = 1.5, - tiles = {"hyrule_mapgen_stalagmite3.png^[transformFY"}, - inventory_image = "hyrule_mapgen_stalagmite3.png^[transformFY", - is_ground_content = false, - sunlight_propagates = true, - walkable = false, - paramtype = "light", - selection_box = { - type = "fixed", - fixed = {{-0.3, -0.2, -0.3, 0.3, 0.5, 0.3}} - }, - groups = {crumbly=1, oddly_breakable_by_hand=1}, - sounds = default.node_sound_stone_defaults() -}) - -minetest.register_node("hyrule_mapgen:stalagmite2", { - description = "Stalagmite", - drawtype = "plantlike", - visual_scale = 1.5, - tiles = {"hyrule_mapgen_stalagmite2.png^[transformFY"}, - inventory_image = "hyrule_mapgen_stalagmite2.png^[transformFY", - is_ground_content = false, - sunlight_propagates = true, - walkable = false, - paramtype = "light", - selection_box = { - type = "fixed", - fixed = {{-0.3, -0.2, -0.3, 0.3, 0.5, 0.3}} - }, - groups = {crumbly=1, oddly_breakable_by_hand=1}, - sounds = default.node_sound_stone_defaults() -}) - -minetest.register_node("hyrule_mapgen:cicicle", { - description = "Ceiling Icicle", - drawtype = "plantlike", - tiles = {"hyrule_mapgen_icicle.png"}, - inventory_image = "hyrule_mapgen_icicle.png", - is_ground_content = false, - sunlight_propagates = true, - walkable = false, - use_texture_alpha = true, - paramtype = "light", - selection_box = { - type = "fixed", - fixed = {{-0.3, -0.2, -0.3, 0.3, 0.5, 0.3}} - }, - groups = {cracky=1, oddly_breakable_by_hand=1}, - sounds = default.node_sound_glass_defaults() -}) - -minetest.register_node("hyrule_mapgen:cicicle2", { - description = "Ceiling Icicle 2", - drawtype = "plantlike", - tiles = {"hyrule_mapgen_icicle2.png"}, - inventory_image = "hyrule_mapgen_icicle2.png", - is_ground_content = false, - sunlight_propagates = true, - walkable = false, - use_texture_alpha = true, - paramtype = "light", - selection_box = { - type = "fixed", - fixed = {{-0.3, -0.2, -0.3, 0.3, 0.5, 0.3}} - }, - groups = {cracky=1, oddly_breakable_by_hand=1}, - sounds = default.node_sound_glass_defaults() -}) - -minetest.register_node("hyrule_mapgen:roots", { - description = "Hanging Roots", - drawtype = "torchlike", - tiles = {"hyrule_mapgen_roots.png"}, - inventory_image = "hyrule_mapgen_roots.png", - is_ground_content = false, - sunlight_propagates = true, - paramtype = "light", - selection_box = { - type = "fixed", - fixed = {{-0.3, -0.2, -0.3, 0.3, 0.5, 0.3}} - }, - groups = {crumbly=1, oddly_breakable_by_hand=1}, -}) - -minetest.register_node("hyrule_mapgen:roots2", { - description = "Hanging Root", - drawtype = "torchlike", - tiles = {"hyrule_mapgen_roots2.png"}, - inventory_image = "hyrule_mapgen_roots2.png", - is_ground_content = false, - sunlight_propagates = true, - paramtype = "light", - selection_box = { - type = "fixed", - fixed = {{-0.3, -0.2, -0.3, 0.3, 0.5, 0.3}} - }, - groups = {crumbly=1, oddly_breakable_by_hand=1}, -}) - -tnt.register_tnt({ - name = "hyrule_mapgen:powder_keg", - description = "Powder Keg", - tiles = { - "hyrule_mapgen_keg_top.png", - "hyrule_mapgen_keg_top.png", - "hyrule_mapgen_keg_side.png", - "hyrule_mapgen_keg_side.png", - "hyrule_mapgen_keg_front.png", - "hyrule_mapgen_keg_front.png", - }, - radius = 3, -}) - -minetest.register_node("hyrule_mapgen:statue", { - description = "Gossip Stone", - tiles = { - "hyrule_mapgen_statue_side.png", - "hyrule_mapgen_statue_side.png", - "hyrule_mapgen_statue_side.png", - "hyrule_mapgen_statue_side.png", - "hyrule_mapgen_statue_side.png", - "hyrule_mapgen_statue_front.png" - }, - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - groups = {cracky=1, falling_node=1}, - node_box = { - type = "fixed", - fixed = { - {-0.4375, -0.5, -0.1875, 0.4375, 0.4375, 0.25}, -- NodeBox1 - {-0.375, 0.4375, -0.1875, 0.375, 0.5, 0.25}, -- NodeBox2 - } - }, - on_rightclick = function(pos, node, clicker, item, _) - local wield_item = clicker:get_wielded_item():get_name() - if wield_item == "hyruletools:eye" then - minetest.set_node(pos, {name="hyrule_mapgen:statue_active", param2=node.param2}) - end - end -}) - - -minetest.register_node("hyrule_mapgen:statue_active", { - tiles = { - "hyrule_mapgen_statue_side.png", - "hyrule_mapgen_statue_side.png", - "hyrule_mapgen_statue_side.png", - "hyrule_mapgen_statue_side.png", - "hyrule_mapgen_statue_side.png", - "hyrule_mapgen_statue_active.png" - }, - drop = 'hyrule_mapgen:statue', - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - groups = {cracky=1, falling_node=1}, - light_source = 5, - node_box = { - type = "fixed", - fixed = { - {-0.4375, -0.5, -0.1875, 0.4375, 0.4375, 0.25}, -- NodeBox1 - {-0.375, 0.4375, -0.1875, 0.375, 0.5, 0.25}, -- NodeBox2 - } - }, - on_rightclick = function(pos, node, clicker, item, _) - local wield_item = clicker:get_wielded_item():get_name() - if wield_item == "hyruletools:eye" then - minetest.set_node(pos, {name="hyrule_mapgen:statue", param2=node.param2}) - end - end -}) - - -minetest.register_node("hyrule_mapgen:glowstone", { - description = "glowstone", - drawtype = "allfaces", - tiles = { - "hyrulemapgen_glowstone.png" - }, - use_texture_alpha = true, - groups = {snappy=3, oddly_breakable_by_hand = 1}, - paramtype = "light", - light_source = 14, - sounds = default.node_sound_glass_defaults(), -}) - -minetest.register_node("hyrule_mapgen:volvagia_spawn", { - description = "Volvagia spawner", - tiles = { - "hyrule_mapgen_vspawn.png" - }, - groups = {snappy=3, oddly_breakable_by_hand = 1}, - paramtype = "light", - light_source = 10, - sounds = default.node_sound_glass_defaults(), - on_construct = function(pos) - minetest.after(5, function() - minetest.add_entity({x=pos.x, y=pos.y+0.5, z=pos.z}, "mobs_loz:volvagia") - minetest.sound_play("BrassFleece", {gain=0.3}) - end) - end, - on_rightclick = function(pos, node, clicker, item, _) - local wield_item = clicker:get_wielded_item():get_name() - if wield_item == "hyruletools:sword" then - minetest.set_node(pos, {name="hyrule_mapgen:ganon_spawn", param2=node.param2}) - end - end -}) - -minetest.register_node("hyrule_mapgen:ganon_spawn", { - description = "Ganon spawner", - tiles = { - "hyrule_mapgen_gspawn.png" - }, - groups = {snappy=3, oddly_breakable_by_hand = 1}, - paramtype = "light", - light_source = 10, - sounds = default.node_sound_glass_defaults(), - on_construct = function(pos) - minetest.place_schematic({x=pos.x-6, y=pos.y-1, z=pos.z-6}, minetest.get_modpath("hyrule_mapgen").."/schematics/ganon_dungeon.mts", random, {}, true) - minetest.after(5, function() - minetest.add_entity({x=pos.x+3, y=pos.y+1, z=pos.z+3}, "mobs_loz:ganon") - end) - end, -}) - -minetest.register_craft({ - output = 'hyrule_mapgen:volvagia_spawn', - recipe = { - {'', 'default:stone', ''}, - {'bucket:bucket_lava', 'hyruletools:pendant3', 'bucket:bucket_lava'}, - {'', 'default:stone', ''}, - } -}) - -minetest.register_node("hyrule_mapgen:bongo_spawn", { - description = "Bongo Bongo spawner", - tiles = { - "hyrule_mapgen_wspawn.png" - }, - groups = {snappy=3, oddly_breakable_by_hand = 1}, - paramtype = "light", - light_source = 10, - sounds = default.node_sound_glass_defaults(), - on_construct = function(pos) - minetest.after(5, function() - minetest.add_entity({x=pos.x, y=pos.y+1, z=pos.z}, "mobs_loz:bongobongo") - end) - end, - on_rightclick = function(pos, node, clicker, item, _) - local wield_item = clicker:get_wielded_item():get_name() - if wield_item == "hyruletools:sword" then - minetest.set_node(pos, {name="hyrule_mapgen:ganon_spawn", param2=node.param2}) - end - end -}) - -minetest.register_craft({ - output = 'hyrule_mapgen:bongo_spawn', - recipe = { - {'', 'default:stone', ''}, - {'bucket:bucket_lava', 'hyruletools:pendant1', 'bucket:bucket_lava'}, - {'', 'default:stone', ''}, - } -}) - -minetest.register_node("hyrule_mapgen:dodongo_spawn", { - description = "King Dodongo spawner", - tiles = { - "hyrule_mapgen_dspawn.png" - }, - groups = {snappy=3, oddly_breakable_by_hand = 1}, - paramtype = "light", - light_source = 10, - sounds = default.node_sound_glass_defaults(), - on_construct = function(pos) - minetest.after(5, function() - minetest.add_entity({x=pos.x, y=pos.y+1, z=pos.z}, "mobs_loz:dodongo_boss") - end) - end, - on_rightclick = function(pos, node, clicker, item, _) - local wield_item = clicker:get_wielded_item():get_name() - if wield_item == "hyruletools:sword" then - minetest.set_node(pos, {name="hyrule_mapgen:ganon_spawn", param2=node.param2}) - end - end -}) - -minetest.register_craft({ - output = 'hyrule_mapgen:dodongo_spawn', - recipe = { - {'', 'default:tree', ''}, - {'moreplants:eye', 'hyruletools:pendant2', 'moreplants:eye'}, - {'', 'default:tree', ''}, - } -}) - -minetest.register_node("hyrule_mapgen:boulder", { - description = "Boulder", - tiles = { - "hyrule_mapgen_boulder.png", - }, - drawtype = "nodebox", - paramtype = "light", - node_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.5, 0.5, 1.0625, 0.5}, -- NodeBox1 - {-0.5, -0.375, -0.625, 0.5, 0.9375, 0.625}, -- NodeBox2 - {-0.625, -0.375, -0.5, 0.625, 0.9375, 0.5}, -- NodeBox3 - {-0.5, -0.25, -0.6875, 0.5, 0.8125, 0.6875}, -- NodeBox4 - {-0.6875, -0.25, -0.5, 0.6875, 0.8125, 0.5}, -- NodeBox5 - {-0.5625, -0.25, -0.5625, 0.5625, 0.8125, 0.5625}, -- NodeBox6 - } - }, - collision_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.5, 0.5, 1.0625, 0.5}, -- NodeBox1 - {-0.5, -0.375, -0.625, 0.5, 0.9375, 0.625}, -- NodeBox2 - {-0.625, -0.375, -0.5, 0.625, 0.9375, 0.5}, -- NodeBox3 - {-0.5, -0.25, -0.6875, 0.5, 0.8125, 0.6875}, -- NodeBox4 - {-0.6875, -0.25, -0.5, 0.6875, 0.8125, 0.5}, -- NodeBox5 - {-0.5625, -0.25, -0.5625, 0.5625, 0.8125, 0.5625}, -- NodeBox6 - } - }, - groups = {explody=1}, - sounds = default.node_sound_stone_defaults() -}) - -minetest.register_node("hyrule_mapgen:snowball", { - description = "Snow Boulder", - tiles = { - "default_snow.png", - }, - drawtype = "nodebox", - paramtype = "light", - node_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.5, 0.5, 1.0625, 0.5}, -- NodeBox1 - {-0.5, -0.375, -0.625, 0.5, 0.9375, 0.625}, -- NodeBox2 - {-0.625, -0.375, -0.5, 0.625, 0.9375, 0.5}, -- NodeBox3 - {-0.5, -0.25, -0.6875, 0.5, 0.8125, 0.6875}, -- NodeBox4 - {-0.6875, -0.25, -0.5, 0.6875, 0.8125, 0.5}, -- NodeBox5 - {-0.5625, -0.25, -0.5625, 0.5625, 0.8125, 0.5625}, -- NodeBox6 - } - }, - collision_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.5, 0.5, 1.0625, 0.5}, -- NodeBox1 - {-0.5, -0.375, -0.625, 0.5, 0.9375, 0.625}, -- NodeBox2 - {-0.625, -0.375, -0.5, 0.625, 0.9375, 0.5}, -- NodeBox3 - {-0.5, -0.25, -0.6875, 0.5, 0.8125, 0.6875}, -- NodeBox4 - {-0.6875, -0.25, -0.5, 0.6875, 0.8125, 0.5}, -- NodeBox5 - {-0.5625, -0.25, -0.5625, 0.5625, 0.8125, 0.5625}, -- NodeBox6 - } - }, - groups = {explody=1}, - sounds = default.node_sound_dirt_defaults() -}) - -minetest.register_node("hyrule_mapgen:bucket_milk", { - tiles = { - "mobs_bucket_milk2.png", - }, - drawtype = "mesh", - mesh = "bottle.obj", - paramtype = "light", - selection_box = { - type = "fixed", - fixed = { - {-0.25, -0.5, -0.25, 0.25, -0.4375, 0.25}, -- NodeBox1 - {-0.3125, -0.4375, -0.25, 0.3125, 0, 0.25}, -- NodeBox2 - {-0.25, -0.4375, -0.3125, 0.25, 0, 0.3125}, -- NodeBox3 - {-0.25, 0, -0.1875, 0.25, 0.0625, 0.1875}, -- NodeBox4 - {-0.1875, 0.0625, -0.125, 0.1875, 0.125, 0.125}, -- NodeBox5 - {-0.125, 0.125, -0.125, 0.125, 0.25, 0.125}, -- NodeBox6 - {-0.125, 0.25, -0.1875, 0.125, 0.3125, 0.1875}, -- NodeBox7 - {-0.1875, 0.25, -0.125, 0.1875, 0.3125, 0.125}, -- NodeBox8 - {-0.125, 0.3125, -0.125, 0.125, 0.375, 0.125}, -- NodeBox9 - {-0.125, 0.0625, -0.1875, 0.125, 0.125, 0.1875}, -- NodeBox10 - {-0.1875, 0, -0.25, 0.1875, 0.0625, 0.25}, -- NodeBox11 - } - }, - collision_box = { - type = "fixed", - fixed = { - {-0.25, -0.5, -0.25, 0.25, -0.4375, 0.25}, -- NodeBox1 - {-0.3125, -0.4375, -0.25, 0.3125, 0, 0.25}, -- NodeBox2 - {-0.25, -0.4375, -0.3125, 0.25, 0, 0.3125}, -- NodeBox3 - {-0.25, 0, -0.1875, 0.25, 0.0625, 0.1875}, -- NodeBox4 - {-0.1875, 0.0625, -0.125, 0.1875, 0.125, 0.125}, -- NodeBox5 - {-0.125, 0.125, -0.125, 0.125, 0.25, 0.125}, -- NodeBox6 - {-0.125, 0.25, -0.1875, 0.125, 0.3125, 0.1875}, -- NodeBox7 - {-0.1875, 0.25, -0.125, 0.1875, 0.3125, 0.125}, -- NodeBox8 - {-0.125, 0.3125, -0.125, 0.125, 0.375, 0.125}, -- NodeBox9 - {-0.125, 0.0625, -0.1875, 0.125, 0.125, 0.1875}, -- NodeBox10 - {-0.1875, 0, -0.25, 0.1875, 0.0625, 0.25}, -- NodeBox11 - } - }, - groups = {cracky=1, oddly_breakable_by_hand=1,}, - sounds = default.node_sound_glass_defaults(), - drop = "mobs:bucket_milk" -}) - -minetest.override_item("mobs:bucket_milk", { - on_place= function(itemstack, placer, pointed_thing) - if pointed_thing == nil then return end - local pos = pointed_thing.above - minetest.set_node(pos, {name="hyrule_mapgen:bucket_milk"}) - itemstack:take_item() - return itemstack - end -}) - -minetest.register_node("hyrule_mapgen:bucket", { - tiles = { - "bucket2.png", - }, - drawtype = "mesh", - mesh = "bottle.obj", - paramtype = "light", - selection_box = { - type = "fixed", - fixed = { - {-0.25, -0.5, -0.25, 0.25, -0.4375, 0.25}, -- NodeBox1 - {-0.3125, -0.4375, -0.25, 0.3125, 0, 0.25}, -- NodeBox2 - {-0.25, -0.4375, -0.3125, 0.25, 0, 0.3125}, -- NodeBox3 - {-0.25, 0, -0.1875, 0.25, 0.0625, 0.1875}, -- NodeBox4 - {-0.1875, 0.0625, -0.125, 0.1875, 0.125, 0.125}, -- NodeBox5 - {-0.125, 0.125, -0.125, 0.125, 0.25, 0.125}, -- NodeBox6 - {-0.125, 0.25, -0.1875, 0.125, 0.3125, 0.1875}, -- NodeBox7 - {-0.1875, 0.25, -0.125, 0.1875, 0.3125, 0.125}, -- NodeBox8 - {-0.125, 0.3125, -0.125, 0.125, 0.375, 0.125}, -- NodeBox9 - {-0.125, 0.0625, -0.1875, 0.125, 0.125, 0.1875}, -- NodeBox10 - {-0.1875, 0, -0.25, 0.1875, 0.0625, 0.25}, -- NodeBox11 - } - }, - collision_box = { - type = "fixed", - fixed = { - {-0.25, -0.5, -0.25, 0.25, -0.4375, 0.25}, -- NodeBox1 - {-0.3125, -0.4375, -0.25, 0.3125, 0, 0.25}, -- NodeBox2 - {-0.25, -0.4375, -0.3125, 0.25, 0, 0.3125}, -- NodeBox3 - {-0.25, 0, -0.1875, 0.25, 0.0625, 0.1875}, -- NodeBox4 - {-0.1875, 0.0625, -0.125, 0.1875, 0.125, 0.125}, -- NodeBox5 - {-0.125, 0.125, -0.125, 0.125, 0.25, 0.125}, -- NodeBox6 - {-0.125, 0.25, -0.1875, 0.125, 0.3125, 0.1875}, -- NodeBox7 - {-0.1875, 0.25, -0.125, 0.1875, 0.3125, 0.125}, -- NodeBox8 - {-0.125, 0.3125, -0.125, 0.125, 0.375, 0.125}, -- NodeBox9 - {-0.125, 0.0625, -0.1875, 0.125, 0.125, 0.1875}, -- NodeBox10 - {-0.1875, 0, -0.25, 0.1875, 0.0625, 0.25}, -- NodeBox11 - } - }, - groups = {cracky=1, oddly_breakable_by_hand=1,}, - sounds = default.node_sound_glass_defaults(), - drop = "bucket:bucket_empty" -}) - -minetest.override_item("bucket:bucket_empty", { - on_place= function(itemstack, placer, pointed_thing) - if pointed_thing == nil then return end - local pos = pointed_thing.above - minetest.set_node(pos, {name="hyrule_mapgen:bucket"}) - itemstack:take_item() - return itemstack - end -}) - -minetest.register_node("hyrule_mapgen:bucket_river_water", { - tiles = { - "bucket_river_water2.png", - }, - drawtype = "mesh", - mesh = "bottle.obj", - paramtype = "light", - selection_box = { - type = "fixed", - fixed = { - {-0.25, -0.5, -0.25, 0.25, -0.4375, 0.25}, -- NodeBox1 - {-0.3125, -0.4375, -0.25, 0.3125, 0, 0.25}, -- NodeBox2 - {-0.25, -0.4375, -0.3125, 0.25, 0, 0.3125}, -- NodeBox3 - {-0.25, 0, -0.1875, 0.25, 0.0625, 0.1875}, -- NodeBox4 - {-0.1875, 0.0625, -0.125, 0.1875, 0.125, 0.125}, -- NodeBox5 - {-0.125, 0.125, -0.125, 0.125, 0.25, 0.125}, -- NodeBox6 - {-0.125, 0.25, -0.1875, 0.125, 0.3125, 0.1875}, -- NodeBox7 - {-0.1875, 0.25, -0.125, 0.1875, 0.3125, 0.125}, -- NodeBox8 - {-0.125, 0.3125, -0.125, 0.125, 0.375, 0.125}, -- NodeBox9 - {-0.125, 0.0625, -0.1875, 0.125, 0.125, 0.1875}, -- NodeBox10 - {-0.1875, 0, -0.25, 0.1875, 0.0625, 0.25}, -- NodeBox11 - } - }, - collision_box = { - type = "fixed", - fixed = { - {-0.25, -0.5, -0.25, 0.25, -0.4375, 0.25}, -- NodeBox1 - {-0.3125, -0.4375, -0.25, 0.3125, 0, 0.25}, -- NodeBox2 - {-0.25, -0.4375, -0.3125, 0.25, 0, 0.3125}, -- NodeBox3 - {-0.25, 0, -0.1875, 0.25, 0.0625, 0.1875}, -- NodeBox4 - {-0.1875, 0.0625, -0.125, 0.1875, 0.125, 0.125}, -- NodeBox5 - {-0.125, 0.125, -0.125, 0.125, 0.25, 0.125}, -- NodeBox6 - {-0.125, 0.25, -0.1875, 0.125, 0.3125, 0.1875}, -- NodeBox7 - {-0.1875, 0.25, -0.125, 0.1875, 0.3125, 0.125}, -- NodeBox8 - {-0.125, 0.3125, -0.125, 0.125, 0.375, 0.125}, -- NodeBox9 - {-0.125, 0.0625, -0.1875, 0.125, 0.125, 0.1875}, -- NodeBox10 - {-0.1875, 0, -0.25, 0.1875, 0.0625, 0.25}, -- NodeBox11 - } - }, - groups = {cracky=1, oddly_breakable_by_hand=1,}, - sounds = default.node_sound_glass_defaults(), - drop = "bucket:bucket_river_water" -}) - -minetest.override_item("bucket:bucket_river_water", { - on_use = function(itemstack, placer, pointed_thing) - if pointed_thing == nil then return end - local pos = pointed_thing.above - minetest.set_node(pos, {name="hyrule_mapgen:bucket_river_water"}) - itemstack:take_item() - return itemstack - end -}) - - -minetest.register_node("hyrule_mapgen:bucket_lava", { - tiles = { - "bucket_lava2.png", - }, - drawtype = "mesh", - mesh = "bottle.obj", - paramtype = "light", - selection_box = { - type = "fixed", - fixed = { - {-0.25, -0.5, -0.25, 0.25, -0.4375, 0.25}, -- NodeBox1 - {-0.3125, -0.4375, -0.25, 0.3125, 0, 0.25}, -- NodeBox2 - {-0.25, -0.4375, -0.3125, 0.25, 0, 0.3125}, -- NodeBox3 - {-0.25, 0, -0.1875, 0.25, 0.0625, 0.1875}, -- NodeBox4 - {-0.1875, 0.0625, -0.125, 0.1875, 0.125, 0.125}, -- NodeBox5 - {-0.125, 0.125, -0.125, 0.125, 0.25, 0.125}, -- NodeBox6 - {-0.125, 0.25, -0.1875, 0.125, 0.3125, 0.1875}, -- NodeBox7 - {-0.1875, 0.25, -0.125, 0.1875, 0.3125, 0.125}, -- NodeBox8 - {-0.125, 0.3125, -0.125, 0.125, 0.375, 0.125}, -- NodeBox9 - {-0.125, 0.0625, -0.1875, 0.125, 0.125, 0.1875}, -- NodeBox10 - {-0.1875, 0, -0.25, 0.1875, 0.0625, 0.25}, -- NodeBox11 - } - }, - collision_box = { - type = "fixed", - fixed = { - {-0.25, -0.5, -0.25, 0.25, -0.4375, 0.25}, -- NodeBox1 - {-0.3125, -0.4375, -0.25, 0.3125, 0, 0.25}, -- NodeBox2 - {-0.25, -0.4375, -0.3125, 0.25, 0, 0.3125}, -- NodeBox3 - {-0.25, 0, -0.1875, 0.25, 0.0625, 0.1875}, -- NodeBox4 - {-0.1875, 0.0625, -0.125, 0.1875, 0.125, 0.125}, -- NodeBox5 - {-0.125, 0.125, -0.125, 0.125, 0.25, 0.125}, -- NodeBox6 - {-0.125, 0.25, -0.1875, 0.125, 0.3125, 0.1875}, -- NodeBox7 - {-0.1875, 0.25, -0.125, 0.1875, 0.3125, 0.125}, -- NodeBox8 - {-0.125, 0.3125, -0.125, 0.125, 0.375, 0.125}, -- NodeBox9 - {-0.125, 0.0625, -0.1875, 0.125, 0.125, 0.1875}, -- NodeBox10 - {-0.1875, 0, -0.25, 0.1875, 0.0625, 0.25}, -- NodeBox11 - } - }, - groups = {cracky=1, oddly_breakable_by_hand=1,}, - sounds = default.node_sound_glass_defaults(), - drop = "bucket:bucket_lava", - light_source = 6, -}) - -minetest.override_item("bucket:bucket_lava", { - on_use = function(itemstack, placer, pointed_thing) - if pointed_thing == nil then return end - local pos = pointed_thing.above - minetest.set_node(pos, {name="hyrule_mapgen:bucket_lava"}) - itemstack:take_item() - return itemstack - end -}) - - -minetest.register_node("hyrule_mapgen:bucket_water", { - tiles = { - "bucket_water2.png", - }, - drawtype = "mesh", - mesh = "bottle.obj", - paramtype = "light", - selection_box = { - type = "fixed", - fixed = { - {-0.25, -0.5, -0.25, 0.25, -0.4375, 0.25}, -- NodeBox1 - {-0.3125, -0.4375, -0.25, 0.3125, 0, 0.25}, -- NodeBox2 - {-0.25, -0.4375, -0.3125, 0.25, 0, 0.3125}, -- NodeBox3 - {-0.25, 0, -0.1875, 0.25, 0.0625, 0.1875}, -- NodeBox4 - {-0.1875, 0.0625, -0.125, 0.1875, 0.125, 0.125}, -- NodeBox5 - {-0.125, 0.125, -0.125, 0.125, 0.25, 0.125}, -- NodeBox6 - {-0.125, 0.25, -0.1875, 0.125, 0.3125, 0.1875}, -- NodeBox7 - {-0.1875, 0.25, -0.125, 0.1875, 0.3125, 0.125}, -- NodeBox8 - {-0.125, 0.3125, -0.125, 0.125, 0.375, 0.125}, -- NodeBox9 - {-0.125, 0.0625, -0.1875, 0.125, 0.125, 0.1875}, -- NodeBox10 - {-0.1875, 0, -0.25, 0.1875, 0.0625, 0.25}, -- NodeBox11 - } - }, - collision_box = { - type = "fixed", - fixed = { - {-0.25, -0.5, -0.25, 0.25, -0.4375, 0.25}, -- NodeBox1 - {-0.3125, -0.4375, -0.25, 0.3125, 0, 0.25}, -- NodeBox2 - {-0.25, -0.4375, -0.3125, 0.25, 0, 0.3125}, -- NodeBox3 - {-0.25, 0, -0.1875, 0.25, 0.0625, 0.1875}, -- NodeBox4 - {-0.1875, 0.0625, -0.125, 0.1875, 0.125, 0.125}, -- NodeBox5 - {-0.125, 0.125, -0.125, 0.125, 0.25, 0.125}, -- NodeBox6 - {-0.125, 0.25, -0.1875, 0.125, 0.3125, 0.1875}, -- NodeBox7 - {-0.1875, 0.25, -0.125, 0.1875, 0.3125, 0.125}, -- NodeBox8 - {-0.125, 0.3125, -0.125, 0.125, 0.375, 0.125}, -- NodeBox9 - {-0.125, 0.0625, -0.1875, 0.125, 0.125, 0.1875}, -- NodeBox10 - {-0.1875, 0, -0.25, 0.1875, 0.0625, 0.25}, -- NodeBox11 - } - }, - groups = {cracky=1, oddly_breakable_by_hand=1,}, - sounds = default.node_sound_glass_defaults(), - drop = "bucket:bucket_water" -}) - -minetest.override_item("bucket:bucket_water", { - on_use = function(itemstack, placer, pointed_thing) - if pointed_thing == nil then return end - local pos = pointed_thing.above - minetest.set_node(pos, {name="hyrule_mapgen:bucket_water"}) - itemstack:take_item() - return itemstack - end -}) - -minetest.register_node("hyrule_mapgen:magic_tree", { - description = "magic tree trunk", - tiles = { - "hyrule_mapgen_magic_tree_top.png", - "hyrule_mapgen_magic_tree_top.png", - "hyrule_mapgen_magic_tree.png", - "hyrule_mapgen_magic_tree.png", - "hyrule_mapgen_magic_tree.png", - "hyrule_mapgen_magic_tree.png" - }, - paramtype = "facedir", - groups = {tree=1, choppy=2, flammable=2, oddly_breakable_by_hand = 1,}, - on_place = minetest.rotate_node -}) - -minetest.register_node("hyrule_mapgen:magic_leaves", { - description = "magic leaves", - drawtype = "allfaces_optional", - tiles = { - "hyrule_mapgen_magic_leaves.png" - }, - groups = {snappy=3, flammable=1, leafdecay=3, oddly_breakable_by_hand = 1, leaves=1,}, - paramtype = "light", - walkable = false, -}) - -if minetest.setting_getbool("3d_leaves") then -minetest.override_item("hyrule_mapgen:magic_leaves", { - drawtype = "mesh", - mesh = "leaf.obj", - tiles = {"hyrule_mapgen_magic_leaves2.png"}, - paramtype = "light", -}) -end - -minetest.register_node("hyrule_mapgen:canopy_leaves", { - description = "canopy leaves", - drawtype = "allfaces_optional", - tiles = { - "default_leaves.png" - }, - groups = {snappy=3, flammable=1, leaves=1, oddly_breakable_by_hand = 1, not_in_creative_inventory=1}, - paramtype = "light", - walkable = false, -}) - -minetest.register_node("hyrule_mapgen:palm_tree", { - description = "palm tree trunk", - tiles = { - "hyrule_mapgen_palm_tree_top.png", - "hyrule_mapgen_palm_tree_top.png", - "hyrule_mapgen_palm_tree.png", - "hyrule_mapgen_palm_tree.png", - "hyrule_mapgen_palm_tree.png", - "hyrule_mapgen_palm_tree.png" - }, - paramtype = "facedir", - groups = {tree=1, choppy=2, flammable=2, oddly_breakable_by_hand = 1, not_in_creative_inventory=1}, - on_place = minetest.rotate_node -}) - -minetest.register_node("hyrule_mapgen:palm_leaves", { - description = "palm leaves", - drawtype = "plantlike", - tiles = { - "hyrule_mapgen_palm_leaf.png" - }, - inventory_image = "hyrule_mapgen_palm_leaf.png", - visual_scale = 6, - wield_scale = {x=0.5, y=0.5, z=0.5}, - groups = {snappy=3, flammable=1, leafdecay=3, oddly_breakable_by_hand = 1, leaves=1, not_in_creative_inventory=1}, - paramtype = "light", - walkable = false, - selection_box = { - type = "fixed", - fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5} - }, -}) - -minetest.register_node("hyrule_mapgen:coconut", { - description = "coconut", - drawtype = "plantlike", - tiles = { - "hyrule_mapgen_coconut.png" - }, - wield_image = "hyrule_mapgen_coconut.png", - inventory_image = "hyrule_mapgen_coconut.png", - groups = {snappy=3, flammable=1, oddly_breakable_by_hand = 1, not_in_creative_inventory=1}, - paramtype = "light", - walkable = false, - selection_box = { - type = "fixed", - fixed = {-0.2, -0.3, -0.2, 0.2, 0.3, 0.2} - }, - on_use = minetest.item_eat(2) -}) - -minetest.register_node("hyrule_mapgen:wild_tree", { - description = "wild tree trunk", - tiles = { - "hyrule_mapgen_wild_tree_top.png", - "hyrule_mapgen_wild_tree_top.png", - "hyrule_mapgen_wild_tree.png", - "hyrule_mapgen_wild_tree.png", - "hyrule_mapgen_wild_tree.png", - "hyrule_mapgen_wild_tree.png" - }, - paramtype = "facedir", - groups = {tree=1, choppy=2, oddly_breakable_by_hand = 1, flammable=2,}, - on_place = minetest.rotate_node -}) - -minetest.register_node("hyrule_mapgen:wild_leaves", { - description = "wild tree leaves", - drawtype = "plantlike", - tiles = { - "hyrule_mapgen_wild_leaves.png" - }, - wield_image = "hyrule_mapgen_wild_leaves.png", - inventory_image = "hyrule_mapgen_wild_leaves.png", - groups = {snappy=3, flammable=1, oddly_breakable_by_hand = 1, leafdecay=3, leaves=1,}, - paramtype = "light", - walkable = false, -}) - -if minetest.setting_getbool("3d_leaves") then -minetest.override_item("hyrule_mapgen:wild_leaves", { - drawtype = "mesh", - mesh = "leaf.obj", - tiles = {"hyrule_mapgen_wild_leaves2.png"}, - paramtype = "light", -}) -end - -minetest.register_craft({ - output = "default:wood 4", - type = "shapeless", - recipe = {"hyrule_mapgen:palm_tree"} -}) - -minetest.register_craft({ - output = "default:junglewood 4", - type = "shapeless", - recipe = {"hyrule_mapgen:wild_tree"} -}) - -minetest.register_craft({ - output = "default:acacia_wood 4", - type = "shapeless", - recipe = {"hyrule_mapgen:magic_tree"} -}) - -minetest.register_node("hyrule_mapgen:magicsapling", { - description = "Magic Sapling", - drawtype = "plantlike", - visual_scale = 1.0, - tiles = {"hyrule_mapgen_magic_sapling.png"}, - inventory_image = "hyrule_mapgen_magic_sapling.png", - wield_image = "hyrule_mapgen_magic_sapling.png", - paramtype = "light", - sunlight_propagates = true, - walkable = false, - selection_box = { - type = "fixed", - fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3} - }, - groups = {snappy = 2, dig_immediate = 3, flammable = 2, - attached_node = 1, sapling = 1}, -}) - -minetest.register_node("hyrule_mapgen:palmsapling", { - description = "Palm Sapling", - drawtype = "plantlike", - visual_scale = 1.0, - tiles = {"hyrule_mapgen_palm_sapling.png"}, - inventory_image = "hyrule_mapgen_palm_sapling.png", - wield_image = "hyrule_mapgen_palm_sapling.png", - paramtype = "light", - sunlight_propagates = true, - walkable = false, - selection_box = { - type = "fixed", - fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3} - }, - groups = {snappy = 2, dig_immediate = 3, flammable = 2, - attached_node = 1, sapling = 1}, -}) - -minetest.register_node("hyrule_mapgen:bigsapling", { - description = "Big Sapling", - drawtype = "plantlike", - visual_scale = 1.0, - tiles = {"hyrule_mapgen_big_sapling.png"}, - inventory_image = "hyrule_mapgen_big_sapling.png", - wield_image = "hyrule_mapgen_big_sapling.png", - paramtype = "light", - sunlight_propagates = true, - walkable = false, - selection_box = { - type = "fixed", - fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3} - }, - groups = {snappy = 2, dig_immediate = 3, flammable = 2, - attached_node = 1, sapling = 1}, -}) - -minetest.register_node("hyrule_mapgen:wildsapling", { - description = "Wild Sapling", - drawtype = "plantlike", - visual_scale = 1.0, - tiles = {"hyrule_mapgen_wild_sapling.png"}, - inventory_image = "hyrule_mapgen_wild_sapling.png", - wield_image = "hyrule_mapgen_wild_sapling.png", - paramtype = "light", - sunlight_propagates = true, - walkable = false, - selection_box = { - type = "fixed", - fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3} - }, - groups = {snappy = 2, dig_immediate = 3, flammable = 2, - attached_node = 1, sapling = 1}, -}) - -- 'Can grow' function local random = math.random diff --git a/mods/hyrule_mapgen/license.txt b/mods/hyrule_mapgen/license.txt index 214c06e..22768a2 100644 --- a/mods/hyrule_mapgen/license.txt +++ b/mods/hyrule_mapgen/license.txt @@ -3,7 +3,7 @@ License for Code ---------------- -Copyright (C) 2016 DOOMED +Copyright (C) 2016 D00Med This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by @@ -39,9 +39,9 @@ https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html License for Textures, Models and Sounds --------------------------------------- -CC-BY-SA 3.0 UNPORTED. Created by DOOMED +CC-BY-SA 3.0 UNPORTED. Created by D00Med -hyrule_mapgen_roots.png, hyrule_mapgen_roots2.png, hyrule_mapgen_statue_active.png, hyrule_mapgen_statue_front.png, hyrule_mapgen_statue_side.png, hyrule_mapgen_big_sapling.png, cactus.b3d, leaf.b3d, waterlily.b3d, default_stone.png, hyrule_mapgen_grupee.png, hyrule_mapgen_brupee.png, hyrule_mapgen_rrupee.png - CC-BY-SA 3.0 UNPORTED. Created by toby109tt(aka tobyplowy) +hyrule_mapgen_roots.png, hyrule_mapgen_roots2.png, hyrule_mapgen_statue_active.png, hyrule_mapgen_statue_front.png, hyrule_mapgen_statue_side.png, hyrule_mapgen_big_sapling.png, cactus.b3d, leaf.b3d, waterlily.b3d, default_stone.png, hyrule_mapgen_grupee.png, hyrule_mapgen_brupee.png, hyrule_mapgen_rrupee.png, goddess_statue.obj - CC-BY-SA 3.0 UNPORTED. Created by toby109tt(aka tobyplowy) For moreblocks_slope.obj: diff --git a/mods/hyrule_mapgen/mapgen.lua b/mods/hyrule_mapgen/mapgen.lua index f1c4bea..53ef692 100644 --- a/mods/hyrule_mapgen/mapgen.lua +++ b/mods/hyrule_mapgen/mapgen.lua @@ -1521,7 +1521,7 @@ minetest.register_ore({ clust_scarcity = 16 * 16 * 16, clust_size = 12, y_min = -31000, - y_max = 31000, + y_max = 10, noise_threshold = 0.0, noise_params = { offset = 0.5, @@ -1936,3 +1936,17 @@ minetest.register_on_generated(function(minp, maxp) end end end) + +minetest.register_on_generated(function(minp, maxp) + if minp.x < 50 and 50 < maxp.x and minp.y < 10 and 10 < maxp.y and minp.z < 50 and 50 < maxp.z then + minetest.place_schematic({x=0,y=10,z=0}, minetest.get_modpath("hyrule_mapgen").."/schematics/tower_ground.mts", 0, {["hyrule_mapgen:tower_dev"] = "hyrule_mapgen:tower_spawner",}, true) + end +end) + +--Tower Generation + +-- minetest.register_on_newplayer(function(player) + -- if player:get_player_name() == "singleplayer" then + -- minetest.place_schematic({x=0,y=15,z=0}, minetest.get_modpath("hyrule_mapgen").."/schematics/tower_ground.mts", 0, {["hyrule_mapgen:tower_dev"] = "hyrule_mapgen:tower_spawner",}, true) + -- end +-- end) \ No newline at end of file diff --git a/mods/hyrule_mapgen/models/candles.obj b/mods/hyrule_mapgen/models/candles.obj new file mode 100644 index 0000000..c8a8b2e --- /dev/null +++ b/mods/hyrule_mapgen/models/candles.obj @@ -0,0 +1,150 @@ +# Blender v2.72 (sub 0) OBJ File: '' +# www.blender.org +mtllib candles.mtl +o nodebox6 +v -0.062500 -0.499000 -0.312500 +v -0.062500 -0.499000 -0.250000 +v -0.062500 -0.437500 -0.250000 +v -0.062500 -0.437500 -0.312500 +v -0.125000 -0.499000 -0.312500 +v -0.125000 -0.499000 -0.250000 +v -0.125000 -0.437500 -0.250000 +v -0.125000 -0.437500 -0.312500 +v 0.187500 -0.500000 -0.062500 +v 0.187500 -0.500000 0.125000 +v 0.187500 -0.062500 0.125000 +v 0.187500 -0.062500 -0.062500 +v 0.000000 -0.500000 -0.062500 +v 0.000000 -0.500000 0.125000 +v 0.000000 -0.062500 0.125000 +v 0.000000 -0.062500 -0.062500 +v -0.187500 -0.499000 -0.187500 +v -0.187500 -0.499000 -0.062500 +v -0.187500 -0.375000 -0.062500 +v -0.187500 -0.375000 -0.187500 +v -0.250000 -0.499000 -0.187500 +v -0.250000 -0.499000 -0.062500 +v -0.250000 -0.375000 -0.062500 +v -0.250000 -0.375000 -0.187500 +v -0.062812 -0.498125 -0.187188 +v -0.062812 -0.498125 -0.125313 +v -0.062812 -0.126875 -0.125313 +v -0.062812 -0.126875 -0.187188 +v -0.124688 -0.498125 -0.187188 +v -0.124688 -0.498125 -0.125313 +v -0.124688 -0.126875 -0.125313 +v -0.124688 -0.126875 -0.187188 +v 0.185500 -0.499000 -0.125000 +v 0.185500 -0.499000 -0.000000 +v 0.185500 -0.375000 -0.000000 +v 0.185500 -0.375000 -0.125000 +v 0.062500 -0.499000 -0.125000 +v 0.062500 -0.499000 -0.000000 +v 0.062500 -0.375000 -0.000000 +v 0.062500 -0.375000 -0.125000 +v 0.124688 -0.497187 0.000312 +v 0.124688 -0.497187 0.062187 +v 0.124688 0.059687 0.062188 +v 0.124688 0.059687 0.000313 +v 0.062812 -0.497187 0.000312 +v 0.062812 -0.497187 0.062187 +v 0.062812 0.059687 0.062188 +v 0.062812 0.059687 0.000313 +v 0.062500 -0.499000 0.062500 +v 0.062500 -0.499000 0.187500 +v 0.062500 -0.437500 0.187500 +v 0.062500 -0.437500 0.062500 +v -0.062500 -0.499000 0.062500 +v -0.062500 -0.499000 0.187500 +v -0.062500 -0.437500 0.187500 +v -0.062500 -0.437500 0.062500 +v 0.000000 -0.499000 -0.250000 +v 0.000000 -0.499000 -0.062500 +v 0.000000 -0.250000 -0.062500 +v 0.000000 -0.250000 -0.250000 +v -0.187500 -0.499000 -0.250000 +v -0.187500 -0.499000 -0.062500 +v -0.187500 -0.250000 -0.062500 +v -0.187500 -0.250000 -0.250000 +vt 0.000000 0.000000 +vt 0.166667 0.000000 +vt 0.166667 0.100000 +vt 0.000000 0.100000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.166667 0.200000 +vt 0.000000 0.200000 +vt 0.500000 0.000000 +vt 0.500000 0.700000 +vt 0.000000 0.700000 +vt 0.333333 0.700000 +vt 0.333333 0.900000 +vt 0.000000 0.900000 +vt 0.166667 0.300000 +vt 0.000000 0.300000 +vt 0.666667 0.500000 +vt 0.833333 0.500000 +vt 0.833333 0.700000 +vt 0.666667 0.700000 +vt 0.666667 0.800000 +vt 0.833333 0.800000 +vt 0.833333 0.900000 +vt 0.666667 0.900000 +vt 0.333333 0.000000 +vt 0.333333 0.200000 +vt 0.500000 0.400000 +vt 0.000000 0.400000 +vt 0.166667 0.400000 +vt 0.166667 0.500000 +vt 0.000000 0.500000 +usemtl none +s off +f 1/1 2/2 3/3 4/4 +f 5/1 6/2 7/3 8/4 +f 1/1 4/2 8/3 5/4 +f 2/1 3/5 7/6 6/7 +f 1/1 2/2 6/3 5/4 +f 4/4 3/3 7/8 8/9 +f 9/1 10/10 11/11 12/12 +f 13/1 14/10 15/11 16/12 +f 9/10 12/11 16/12 13/1 +f 10/10 11/11 15/12 14/1 +f 9/1 10/2 14/3 13/4 +f 12/12 11/13 15/14 16/15 +f 17/1 18/5 19/6 20/7 +f 21/1 22/2 23/8 24/9 +f 17/2 20/8 24/9 21/1 +f 18/2 19/8 23/9 22/1 +f 17/1 18/2 22/3 21/4 +f 20/9 19/8 23/16 24/17 +f 25/18 26/19 27/20 28/21 +f 29/18 30/19 31/20 32/21 +f 25/18 28/19 32/20 29/21 +f 26/18 27/19 31/20 30/21 +f 25/1 26/5 30/6 29/7 +f 28/22 27/23 31/24 32/25 +f 33/1 34/26 35/27 36/9 +f 37/1 38/26 39/27 40/9 +f 33/26 36/27 40/9 37/1 +f 34/1 35/26 39/27 38/9 +f 33/1 34/2 38/3 37/4 +f 36/9 35/8 39/16 40/17 +f 41/18 42/19 43/20 44/21 +f 45/18 46/19 47/20 48/21 +f 41/18 44/19 48/20 45/21 +f 42/18 43/19 47/20 46/21 +f 41/1 42/5 46/6 45/7 +f 44/22 43/23 47/24 48/25 +f 49/1 50/2 51/3 52/4 +f 53/1 54/2 55/3 56/4 +f 49/1 52/2 56/3 53/4 +f 50/1 51/2 55/3 54/4 +f 49/1 50/2 54/3 53/4 +f 52/4 51/3 55/8 56/9 +f 57/1 58/10 59/28 60/29 +f 61/1 62/10 63/28 64/29 +f 57/1 60/29 64/28 61/10 +f 58/1 59/29 63/28 62/10 +f 57/1 58/2 62/3 61/4 +f 60/29 59/30 63/31 64/32 diff --git a/mods/hyrule_mapgen/models/goddess_statue.obj b/mods/hyrule_mapgen/models/goddess_statue.obj new file mode 100644 index 0000000..d503e65 --- /dev/null +++ b/mods/hyrule_mapgen/models/goddess_statue.obj @@ -0,0 +1,222 @@ +# Blender v2.72 (sub 0) OBJ File: '' +# www.blender.org +mtllib goddes_statue.mtl +o Cube.001_Cube.003 +v 0.462144 1.443764 0.058216 +v 0.462144 1.511934 -0.251525 +v -0.462144 1.511934 -0.251525 +v -0.462144 1.443764 0.058216 +v 0.462144 0.008205 -0.257734 +v 0.462144 0.076375 -0.567475 +v -0.462144 0.076375 -0.567475 +v -0.462144 0.008205 -0.257734 +v 0.462144 1.493369 0.296924 +v 0.462144 1.440136 -0.025222 +v -0.462144 1.440136 -0.025222 +v -0.462144 1.493369 0.296924 +v 0.462144 0.055986 0.534447 +v 0.462144 0.002752 0.212300 +v -0.462144 0.002752 0.212300 +v -0.462144 0.055986 0.534447 +v -1.000000 -1.006371 1.000000 +v -1.000000 -1.006372 -1.000000 +v 1.000000 -1.006372 -1.000000 +v 1.000000 -1.006371 1.000000 +v -1.000000 -0.006371 1.000000 +v -1.000000 -0.006371 -1.000000 +v 1.000000 -0.006371 -1.000000 +v 1.000000 -0.006371 1.000000 +v 0.461847 3.099157 0.230925 +v -0.461847 3.099157 0.230925 +v -0.461847 1.540419 0.230925 +v 0.461847 1.540419 0.230925 +v -0.461847 3.099157 -0.230923 +v -0.461847 1.540419 -0.230924 +v 0.461847 3.099157 -0.230923 +v 0.461847 1.540419 -0.230924 +v 0.000000 1.540419 -0.230924 +v 0.000000 -0.018317 -0.230925 +v 0.000000 -0.018317 0.230924 +v 0.000000 1.540419 0.230925 +v 0.911750 3.142858 0.230925 +v 0.456918 3.062659 0.230925 +v 0.456918 3.062659 -0.230923 +v 0.911750 3.142858 -0.230923 +v 0.727590 1.527602 0.230925 +v 1.182422 1.607801 0.230925 +v 0.000000 -0.018317 -0.230925 +v 0.000000 -0.018317 0.230924 +v -0.461847 -0.018317 0.230924 +v -0.461847 -0.018317 -0.230925 +v -0.461847 1.540419 0.230925 +v -0.461847 1.540419 -0.230924 +v 0.461847 4.022851 0.461849 +v -0.461847 4.022851 0.461849 +v -0.461847 3.099156 0.461849 +v 0.461847 3.099156 0.461849 +v -0.461847 4.022851 -0.461847 +v -0.461847 3.099157 -0.461847 +v 0.461847 4.022851 -0.461847 +v 0.461847 3.099157 -0.461847 +v 0.000000 1.540419 0.230925 +v 0.461847 1.540419 -0.230924 +v 0.461847 -0.018317 -0.230925 +v 0.000000 1.540419 -0.230924 +v 0.461847 -0.018317 0.230924 +v 0.461847 1.540419 0.230925 +v 1.182422 1.607801 -0.230924 +v 0.727590 1.527602 -0.230924 +v 0.508033 4.069726 0.508034 +v -0.508033 4.069726 0.508034 +v -0.508033 3.053663 0.508034 +v 0.508033 3.053663 0.508034 +v -0.508033 4.069726 -0.508031 +v -0.508033 3.053663 -0.508032 +v 0.508033 4.069726 -0.508031 +v 0.508033 3.053663 -0.508032 +v -0.508033 1.924153 0.508034 +v 0.508033 1.924153 0.508034 +v -0.508033 3.053663 0.498034 +v 0.508033 3.053663 0.498034 +v -0.508033 1.924153 0.498034 +v 0.508033 1.924153 0.498034 +v -0.478444 3.060385 0.230925 +v -0.933276 3.140584 0.230925 +v -1.203948 1.605527 0.230925 +v -0.749116 1.525328 0.230925 +v -0.478444 3.060385 -0.230923 +v -0.749116 1.525328 -0.230924 +v -0.933276 3.140584 -0.230923 +v -1.203948 1.605527 -0.230924 +vt 0.421875 0.687500 +vt 0.562500 0.687500 +vt 0.562500 0.750000 +vt 0.421875 0.750000 +vt 0.687500 0.468750 +vt 0.812500 0.468750 +vt 0.812500 0.281250 +vt 0.687500 0.281250 +vt 0.859375 0.468750 +vt 0.796875 0.468750 +vt 0.796875 0.281250 +vt 0.859375 0.281250 +vt 0.046875 0.187500 +vt 0.296875 0.187500 +vt 0.296875 0.062500 +vt 0.046875 0.062500 +vt 0.296875 0.437500 +vt 0.046875 0.437500 +vt 0.625000 0.687500 +vt 0.500000 0.687500 +vt 0.500000 0.500000 +vt 0.625000 0.500000 +vt 0.437500 0.687500 +vt 0.437500 0.500000 +vt 0.312500 0.687500 +vt 0.312500 0.500000 +vt 0.437500 0.750000 +vt 0.312500 0.750000 +vt 0.125000 0.687500 +vt 0.125000 0.500000 +vt 0.187500 0.500000 +vt 0.187500 0.687500 +vt 0.812500 0.687500 +vt 0.812500 0.500000 +vt 0.875000 0.500000 +vt 0.875000 0.687500 +vt 0.750000 0.687500 +vt 0.750000 0.500000 +vt 0.187500 0.750000 +vt 0.125000 0.750000 +vt 0.500000 0.750000 +vt 0.375000 0.750000 +vt 0.375000 0.500000 +vt 0.250000 0.750000 +vt 0.250000 0.500000 +vt 0.375000 1.000000 +vt 0.250000 1.000000 +vt 0.125000 1.000000 +vt 0.250000 0.687500 +vt 0.062500 0.687500 +vt 0.062500 0.500000 +vt 0.000000 0.750000 +vt 0.000000 0.500000 +vt 0.062500 0.750000 +vt 0.687500 0.687500 +vt 0.687500 0.500000 +vt 0.750000 0.750000 +vt 0.687500 0.750000 +vt 0.812500 0.750000 +vt 0.500000 0.875000 +vt 0.375000 0.875000 +vt 0.250000 0.875000 +vt 0.125000 0.875000 +vt 0.000000 0.875000 +vt 0.406250 0.406250 +vt 0.406250 0.265625 +vt 0.531250 0.265625 +vt 0.531250 0.406250 +usemtl Character +s off +f 1/1 2/2 3/3 4/4 +f 8/1 7/2 6/3 5/4 +f 1/5 4/6 8/7 5/8 +f 2/9 1/10 5/11 6/12 +f 3/5 2/6 6/7 7/8 +f 4/9 3/10 7/11 8/12 +f 9/1 10/2 11/3 12/4 +f 16/1 15/2 14/3 13/4 +f 9/5 12/6 16/7 13/8 +f 10/10 9/9 13/12 14/11 +f 11/5 10/6 14/7 15/8 +f 12/10 11/9 15/12 16/11 +f 21/13 22/14 18/15 17/16 +f 22/13 23/14 19/15 18/16 +f 23/13 24/14 20/15 19/16 +f 24/13 21/14 17/15 20/16 +f 17/13 18/14 19/17 20/18 +f 24/13 23/14 22/17 21/18 +f 25/19 26/20 27/21 28/22 +f 26/20 29/23 30/24 27/21 +f 29/23 31/25 32/26 30/24 +f 32/2 28/3 27/27 30/23 +f 25/28 31/25 29/23 26/27 +f 33/29 34/30 35/31 36/32 +f 38/33 41/34 42/35 37/36 +f 39/37 64/38 41/34 38/33 +f 43/32 44/39 45/40 46/29 +f 47/6 48/9 46/12 45/7 +f 49/41 50/42 51/43 52/21 +f 50/42 53/44 54/45 51/43 +f 53/44 55/40 56/30 54/45 +f 56/42 52/46 51/47 54/44 +f 53/44 50/47 49/48 55/40 +f 57/32 47/49 45/45 44/31 +f 58/50 59/51 34/30 33/29 +f 48/50 60/29 43/30 46/51 +f 36/32 35/31 61/45 62/49 +f 60/29 57/32 44/31 43/30 +f 62/6 61/7 59/12 58/9 +f 25/49 28/45 32/26 31/25 +f 49/52 52/53 56/30 55/40 +f 48/29 47/40 57/54 60/50 +f 40/55 63/56 64/38 39/37 +f 37/19 42/22 63/56 40/55 +f 40/55 39/37 38/57 37/58 +f 34/32 59/29 61/40 35/39 +f 64/37 63/33 42/59 41/57 +f 58/29 33/50 36/54 62/40 +f 65/60 66/61 67/42 68/41 +f 66/61 69/62 70/44 67/42 +f 69/62 71/63 72/40 70/44 +f 72/61 68/46 67/47 70/62 +f 69/62 66/47 65/48 71/63 +f 65/64 68/52 72/40 71/63 +f 67/65 73/66 74/67 68/68 +f 75/68 76/65 78/66 77/67 +f 79/33 80/36 81/35 82/34 +f 83/37 79/33 82/34 84/38 +f 85/55 83/37 84/38 86/56 +f 80/19 85/55 86/56 81/22 +f 85/55 80/58 79/57 83/37 +f 84/37 82/57 81/59 86/33 diff --git a/mods/hyrule_mapgen/models/lightshaft.obj b/mods/hyrule_mapgen/models/lightshaft.obj new file mode 100644 index 0000000..2acedd6 --- /dev/null +++ b/mods/hyrule_mapgen/models/lightshaft.obj @@ -0,0 +1,28 @@ +# Blender v2.72 (sub 0) OBJ File: '' +# www.blender.org +mtllib lightshaft.mtl +o Cube +v -1.000000 -1.000000 1.000000 +v -1.500000 -4.500000 -2.000000 +v 1.500000 -4.500000 -2.000000 +v 1.000000 -1.000000 1.000000 +v -1.000000 1.000000 1.000000 +v -1.500000 -1.500000 -2.000000 +v 1.500000 -1.500000 -2.000000 +v 1.000000 1.000000 1.000000 +vt 0.900000 0.900000 +vt 0.100000 0.900000 +vt 0.100000 0.000000 +vt 0.900000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.050000 +vt 0.050000 0.050000 +vt 0.050000 0.000000 +usemtl Material +s off +f 5/1 1/2 2/3 6/4 +f 6/5 2/6 3/7 7/8 +f 7/4 3/3 4/2 8/1 +f 8/5 4/6 1/7 5/8 +f 1/2 4/1 3/4 2/3 +f 8/2 5/1 6/4 7/3 diff --git a/mods/hyrule_mapgen/models/lightshaft2.obj b/mods/hyrule_mapgen/models/lightshaft2.obj new file mode 100644 index 0000000..5c42dab --- /dev/null +++ b/mods/hyrule_mapgen/models/lightshaft2.obj @@ -0,0 +1,28 @@ +# Blender v2.72 (sub 0) OBJ File: '' +# www.blender.org +mtllib lightshaft2.mtl +o Cube +v -1.000000 1.084134 0.946470 +v -1.500000 -1.915866 1.446470 +v 1.500000 -1.915866 1.446470 +v 1.000000 1.084134 0.946470 +v -1.000000 1.084134 -1.053530 +v -1.500000 -1.915866 -1.553530 +v 1.500000 -1.915866 -1.553530 +v 1.000000 1.084134 -1.053530 +vt 0.900000 0.900000 +vt 0.100000 0.900000 +vt 0.100000 0.000000 +vt 0.900000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.050000 +vt 0.050000 0.050000 +vt 0.050000 0.000000 +usemtl Material +s off +f 5/1 1/2 2/3 6/4 +f 6/5 2/6 3/7 7/8 +f 7/4 3/3 4/2 8/1 +f 8/5 4/6 1/7 5/8 +f 1/2 4/1 3/4 2/3 +f 8/2 5/1 6/4 7/3 diff --git a/mods/hyrule_mapgen/nodes.lua b/mods/hyrule_mapgen/nodes.lua new file mode 100644 index 0000000..af05366 --- /dev/null +++ b/mods/hyrule_mapgen/nodes.lua @@ -0,0 +1,3333 @@ + +--new nodes + +local dye_colours = { + {"red"}, + {"blue"}, + {"orange"}, + {"green"}, + {"dark_green"}, + {"dark_grey"}, + {"black"}, + {"grey"}, + {"white"}, + {"yellow"}, + {"brown"}, + {"cyan"}, + {"magenta"}, + {"violet"}, + {"pink"}, +} + +for _, dye in ipairs(dye_colours) do +local colour = dye[1] + minetest.register_node(":dye:"..colour.."_node", { + tiles = { + "dye_"..colour.."_model.png", + }, + drawtype = "mesh", + mesh = "dye.obj", + paramtype = "light", + selection_box = { + type = "fixed", + fixed = { + {-0.1875, -0.5, -0.1875, 0.1875, -0.4375, 0.1875}, -- NodeBox1 + {-0.25, -0.4375, -0.25, 0.25, -0.1875, 0.25}, -- NodeBox2 + {-0.1875, -0.1875, -0.1875, 0.1875, -0.125, 0.1875}, -- NodeBox3 + {-0.125, -0.125, -0.125, 0.125, -0.0625, 0.125}, -- NodeBox4 + {-0.1875, -0.0625, -0.125, 0.1875, 0, 0.125}, -- NodeBox5 + {-0.125, 0, -0.125, 0.125, 0.0625, 0.125}, -- NodeBox6 + {-0.125, -0.0625, -0.1875, 0.125, 0, 0.1875}, -- NodeBox8 + } + }, + collision_box = { + type = "fixed", + fixed = { + {-0.1875, -0.5, -0.1875, 0.1875, -0.4375, 0.1875}, -- NodeBox1 + {-0.25, -0.4375, -0.25, 0.25, -0.1875, 0.25}, -- NodeBox2 + {-0.1875, -0.1875, -0.1875, 0.1875, -0.125, 0.1875}, -- NodeBox3 + {-0.125, -0.125, -0.125, 0.125, -0.0625, 0.125}, -- NodeBox4 + {-0.1875, -0.0625, -0.1875, 0.1875, 0, 0.1875}, -- NodeBox5 + {-0.125, 0, -0.125, 0.125, 0.0625, 0.125}, -- NodeBox6 + } + }, + groups = {cracky=1, oddly_breakable_by_hand=1, not_in_creative_inventory=1, dig_immediate=3}, + sounds = default.node_sound_glass_defaults(), + drop = "dye:"..colour, + }) + minetest.override_item("dye:"..colour, { + on_place = function(itemstack, placer, pointed_thing) + local pos = pointed_thing.above + minetest.set_node(pos, {name="dye:"..colour.."_node"}) + itemstack:take_item() + return itemstack + end, + }) +end + +minetest.register_node(":farming:bread_node", { + tiles = { + "farming_bread_top.png", + "farming_bread_top.png", + "farming_bread_side.png", + "farming_bread_side.png", + "farming_bread_front.png^[transformFX", + "farming_bread_front.png" + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + node_box = { + type = "fixed", + fixed = { + {-0.1875, -0.5, -0.25, 0.125, -0.3125, 0.25}, -- NodeBox1 + {-0.25, -0.3125, -0.25, 0.1875, -0.1875, 0.25}, -- NodeBox2 + {-0.1875, -0.1875, -0.25, 0.125, -0.125, 0.25}, -- NodeBox3 + } + }, + groups = {crumbly=1, not_in_creative_inventory=1}, + sounds = default.node_sound_dirt_defaults(), + drop = "farming:bread" +}) + +minetest.register_node("hyrule_mapgen:chillshroom", { + description = "Chillshroom", + tiles = {"hyrule_mapgen_chillshroom.png"}, + drawtype = "plantlike", + paramtype = "light", + selection_box = { + type = "fixed", + fixed = { + {-0.1, -0.5, -0.1, 0.1, -0.1, 0.1} + } + }, + groups = {fleshy=1, oddly_breakable_by_hand=1, dig_immediate=3}, + sounds = default.node_sound_leaves_defaults(), + drop = "hyrule_mapgen:chillshroom 3", + walkable = false, + on_use = minetest.item_eat(1) +}) + +minetest.register_node("hyrule_mapgen:chillshroom_2", { + description = "Chillshroom (ceiling)", + tiles = {"hyrule_mapgen_chillshroom.png^[transformFY"}, + drawtype = "plantlike", + paramtype = "light", + selection_box = { + type = "fixed", + fixed = { + {-0.1, 0.1, -0.1, 0.1, 0.5, 0.1} + } + }, + groups = {fleshy=1, oddly_breakable_by_hand=1, dig_immediate=3}, + sounds = default.node_sound_leaves_defaults(), + drop = "hyrule_mapgen:chillshroom 3", + walkable = false, + on_use = minetest.item_eat(1) +}) + +minetest.register_node("hyrule_mapgen:sunshroom", { + description = "Sunshroom", + tiles = {"hyrule_mapgen_sunshroom.png"}, + drawtype = "plantlike", + paramtype = "light", + selection_box = { + type = "fixed", + fixed = { + {-0.1, -0.5, -0.1, 0.1, -0.1, 0.1} + } + }, + groups = {fleshy=1, oddly_breakable_by_hand=1, dig_immediate=3, flammable=1}, + sounds = default.node_sound_leaves_defaults(), + drop = "hyrule_mapgen:sunshroom 3", + walkable = false, + on_use = minetest.item_eat(1) +}) + +minetest.register_node("hyrule_mapgen:zapshroom", { + description = "Zapshroom", + tiles = {"hyrule_mapgen_zapshroom.png"}, + drawtype = "plantlike", + paramtype = "light", + selection_box = { + type = "fixed", + fixed = { + {-0.1, -0.5, -0.1, 0.1, -0.1, 0.1} + } + }, + groups = {fleshy=1, oddly_breakable_by_hand=1, dig_immediate=3}, + sounds = default.node_sound_leaves_defaults(), + drop = "hyrule_mapgen:zapshroom 3", + walkable = false, + on_use = minetest.item_eat(1) +}) + +minetest.register_node("hyrule_mapgen:rushroom", { + description = "Rushroom", + tiles = {"hyrule_mapgen_rushroom.png"}, + drawtype = "plantlike", + paramtype = "light", + selection_box = { + type = "fixed", + fixed = { + {-0.1, -0.5, -0.1, 0.1, -0.1, 0.1} + } + }, + groups = {fleshy=1, oddly_breakable_by_hand=1, dig_immediate=3}, + sounds = default.node_sound_leaves_defaults(), + drop = "hyrule_mapgen:rushroom 3", + walkable = false, + on_use = minetest.item_eat(1) +}) + +minetest.register_node("hyrule_mapgen:berry_bush", { + description = "Wildberry Bush", + tiles = {"hyrule_mapgen_wildberry_bush.png"}, + drawtype = "plantlike", + paramtype = "light", + selection_box = { + type = "fixed", + fixed = { + {-0.1, -0.5, -0.1, 0.1, 0, 0.1} + } + }, + groups = {snappy=1, oddly_breakable_by_hand=1, dig_immediate=3}, + sounds = default.node_sound_leaves_defaults(), + walkable = false, + on_rightclick = function(pos, node) + minetest.add_item(pos, "hyrule_mapgen:wildberry") + minetest.add_item(pos, "hyrule_mapgen:wildberry") + minetest.add_item(pos, "hyrule_mapgen:wildberry") + minetest.remove_node(pos) + end, +}) + +minetest.register_craftitem("hyrule_mapgen:wildberry", { + description = "Wild Berry", + inventory_image = "hyrule_mapgen_wildberry.png", + on_use = minetest.item_eat(1) +}) + +minetest.register_node("hyrule_mapgen:logpile", { + description = "Log Pile", + tiles = { + "default_tree.png^[transformR90", + "default_tree.png^[transformR90", + "default_tree.png^[transformR90", + "default_tree.png^[transformR90", + "default_tree_top.png", + "default_tree_top.png" + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.4375, -0.5, -0.0625, -0.125, 0.5}, -- NodeBox1 + {0.0625, -0.4375, -0.5, 0.5, -0.125, 0.5}, -- NodeBox2 + {0.125, -0.5, -0.5, 0.4375, -0.0625, 0.5}, -- NodeBox3 + {-0.4375, -0.5, -0.5, -0.125, -0.0625, 0.5}, -- NodeBox4 + {-0.125, -0.0625, -0.5, 0.1875, 0.375, 0.5}, -- NodeBox5 + {-0.1875, 0, -0.5, 0.25, 0.3125, 0.5}, -- NodeBox6 + } + }, + groups = {choppy=3, oddly_breakable_by_hand=1, flammable=1, falling_node=1}, + drop = "default:tree 3", +}) + +minetest.register_node(":default:book_placed", { + tiles = { + "default_book_top.png", + "default_book_top.png^[transformFY", + "default_book_right.png", + "default_book_left.png", + "default_book_top.png^[transformFX", + "default_book_top.png" + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + node_box = { + type = "fixed", + fixed = { + {-0.25, -0.5, -0.375, 0.25, -0.4375, 0.3125}, -- NodeBox1 + {-0.25, -0.375, -0.375, 0.25, -0.3125, 0.3125}, -- NodeBox2 + {-0.25, -0.4375, -0.375, -0.1875, -0.375, 0.3125}, -- NodeBox3 + {-0.25, -0.4375, -0.375, 0.1875, -0.375, 0.25}, -- NodeBox4 + } + }, + groups = {choppy=1, dig_immediate=3, not_in_creative_inventory=1}, + sounds = default.node_sound_leaves_defaults(), + drop = "default:book" +}) + +minetest.register_node("hyrule_mapgen:bigmush", { + description = "Big Mushroom", + drawtype = "plantlike", + tiles = { + "hyrule_mapgen_bigmush.png" + }, + wield_image = "hyrule_mapgen_bigmush.png", + inventory_image = "hyrule_mapgen_bigmush.png", + groups = {snappy=1, flammable=1, oddly_breakable_by_hand = 1,}, + paramtype = "light", + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.3, -0.5, -0.3, 0.3, 0.2, 0.3} + }, + on_use = minetest.item_eat(-2) +}) + +minetest.register_node("hyrule_mapgen:big_table", { + description = "Big Table", + tiles = { + "hyrule_mapgen_bigtable_top.png", + "hyrule_mapgen_bigtable.png", + "hyrule_mapgen_bigtable.png", + "hyrule_mapgen_bigtable.png", + "hyrule_mapgen_bigtable.png", + "hyrule_mapgen_bigtable.png" + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + node_box = { + type = "fixed", + fixed = { + {-0.5, 0.375, -0.5, 0.5, 0.5, 0.5}, -- NodeBox1 + {-0.5, -0.5, 0.1875, -0.1875, 0.375, 0.5}, -- NodeBox2 + } + }, + groups = {choppy=1, oddly_breakable_by_hand=1} +}) + +minetest.register_node("hyrule_mapgen:crystal_1", { + description = "Cave Crystal (Blue)", + tiles = { + "hyrule_mapgen_crystal1.png", + }, + groups = {cracky=1}, + drawtype = "nodebox", + use_texture_alpha = true, + paramtype = "light", + paramtype2 = "facedir", + light_source = 6, + node_box = { + type = "fixed", + fixed = { + {-0.125, -0.5, -0.0625, 0.1875, 0.4375, 0.25}, -- NodeBox6 + {0, -0.5, -0.3125, 0.1875, 0.1875, -0.125}, -- NodeBox7 + {-0.3125, -0.5, -0.1875, -0.0625, -0.0625, 0.0625}, -- NodeBox8 + {0.1875, -0.5, 0.0625, 0.3125, 0, 0.1875}, -- NodeBox9 + {-0.25, -0.5, 0.125, 0, 0.0625, 0.375}, -- NodeBox10 + } + }, + sounds = default.node_sound_glass_defaults() +}) + +minetest.register_node("hyrule_mapgen:crystal_3", { + description = "Cave Crystal (Green)", + tiles = { + "hyrule_mapgen_crystal3.png", + }, + groups = {cracky=1}, + use_texture_alpha = true, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + light_source = 6, + node_box = { + type = "fixed", + fixed = { + {-0.1875, -0.5, -0.25, 0, 0.1875, -0.0625}, -- NodeBox16 + {0, -0.5, 0.0625, 0.25, 0.5, 0.3125}, -- NodeBox19 + {-0.375, -0.5, 0.0625, -0.1875, -0.0625, 0.25}, -- NodeBox20 + } + }, + sounds = default.node_sound_glass_defaults() +}) + +minetest.register_node("hyrule_mapgen:crystal_2", { + description = "Cave Crystal (Purple)", + tiles = { + "hyrule_mapgen_crystal2.png", + }, + groups = {cracky=1}, + use_texture_alpha = true, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + light_source = 6, + node_box = { + type = "fixed", + fixed = { + {-0.125, -0.5, -0.1875, 0.125, 0.4375, 0.125}, -- NodeBox11 + {0.0625, -0.5, 0.1875, 0.25, 0.1875, 0.375}, -- NodeBox12 + {-0.375, -0.5, -0.25, -0.1875, -0.0625, -0.0625}, -- NodeBox13 + {-0.3125, -0.5, 0.0625, -0.0625, 0.125, 0.3125}, -- NodeBox14 + {0.0625, -0.5, -0.3125, 0.25, 0.25, -0.125}, -- NodeBox15 + } + }, + sounds = default.node_sound_glass_defaults() +}) + +minetest.register_node("hyrule_mapgen:bush_leaves", { + description = "Shrub Leaves", + tiles = {"hyrule_mapgen_bushleaves.png"}, + drawtype = "allfaces", + paramtype = "light", + walkable = false, + groups = {snappy=1, oddly_breakable_by_hand=1, leaves=1}, + sounds = default.node_sound_leaves_defaults(), +}) + +minetest.register_node("hyrule_mapgen:windmill_node", { + description = "Windmill", + drawtype = "airlike", + tiles = {"hyrule_mapgen_trans.png"}, + wield_image = "hyrule_mapgen_windmill_inv.png", + inventory_image = "hyrule_mapgen_windmill_inv.png", + groups = {choppy = 1, oddly_breakable_by_hand=1}, + sounds = default.node_sound_wood_defaults(), + on_construct = function(pos, node) + minetest.env:add_entity({x=pos.x, y=pos.y+1, z=pos.z}, "hyrule_mapgen:windmill") + end, +}) + +minetest.register_node("hyrule_mapgen:dungeon_seed", { + description = "Dungeon Seed", + tiles = {"default_stone.png"}, + groups = {cracky = 3, not_in_creative_inventory=1}, + sounds = default.node_sound_stone_defaults(), + drop = "default:stone" +}) + +minetest.register_node("hyrule_mapgen:moldorm_stone", { + description = "Moldorm Stone", + tiles = {"hyrule_mapgen_moldorm_stone.png"}, + groups = {}, + sounds = default.node_sound_stone_defaults(), + on_rightclick = function(pos, node, clicker, itemstack) + minetest.env:add_entity({x=pos.x, y=pos.y+1, z=pos.z}, "mobs_loz:great_moldorm") + minetest.remove_node(pos) + end, +}) + +minetest.register_node("hyrule_mapgen:octorock_stone", { + description = "Octorock Stone", + tiles = {"hyrule_mapgen_octorock_stone.png"}, + groups = {}, + sounds = default.node_sound_stone_defaults(), + on_rightclick = function(pos, node, clicker, itemstack) + minetest.env:add_entity({x=pos.x, y=pos.y+1, z=pos.z}, "mobs_loz:octorock_boss") + minetest.remove_node(pos) + end, +}) + +minetest.register_node("hyrule_mapgen:ice_brick", { + description = "Ice Brick", + tiles = {"hyrule_mapgen_ice_brick.png"}, + groups = {cracky = 3, cools_lava = 1}, + sounds = default.node_sound_glass_defaults(), +}) + +minetest.register_node("hyrule_mapgen:ice_waterfall", { + description = "Frozen Waterfall", + drawtype = "glasslike", + use_texture_alpha = true, + tiles = {"hyrule_mapgen_ice_waterfall.png"}, + inventory_image = "[inventorycube{hyrule_mapgen_ice_waterfall_inv.png{hyrule_mapgen_ice_waterfall_inv.png{hyrule_mapgen_ice_waterfall_inv.png", + groups = {cracky = 3, cools_lava = 1}, + sounds = default.node_sound_glass_defaults(), +}) + +stairs.register_stair_and_slab( + "ice_brick", + "hyrule_mapgen:ice_brick", + {cracky = 3, cools_lava = 1}, + {"hyrule_mapgen_ice_brick.png"}, + "Ice brick Stair", + "Ice brick Slab", + default.node_sound_glass_defaults() +) + +minetest.register_node("hyrule_mapgen:icicle", { + description = "Icicle", + tiles = { + "default_ice.png", + }, + use_texture_alpha = true, + drawtype = "nodebox", + paramtype = "light", + node_box = { + type = "fixed", + fixed = { + {-0.25, -0.5, -0.25, 0.25, 0.5, 0.25}, -- NodeBox1 + {-0.1875, 0.4375, -0.1875, 0.1875, 1.1875, 0.1875}, -- NodeBox2 + {-0.125, 1.1875, -0.125, 0.125, 1.6875, 0.125}, -- NodeBox3 + {-0.0625, 1.6875, -0.0625, 0.0625, 2.0625, 0.0625}, -- NodeBox4 + } + }, + groups = {cracky=3, oddly_breakable_by_hand=1, dig_immediate=3}, + sounds = default.node_sound_glass_defaults(), + drop = "", + on_destruct = function(pos) + minetest.env:add_item({x=pos.x-0.3, y=pos.y+0.5, z=pos.z-0.3}, "hyruletools:ice_fragment") + minetest.env:add_item({x=pos.x-0.3, y=pos.y+0.5, z=pos.z+0.3}, "hyruletools:ice_fragment") + minetest.env:add_item({x=pos.x+0.3, y=pos.y+0.5, z=pos.z-0.3}, "hyruletools:ice_fragment") + minetest.env:add_item({x=pos.x+0.3, y=pos.y+0.5, z=pos.z+0.3}, "hyruletools:ice_fragment") + end, +}) + +minetest.register_node("hyrule_mapgen:obsidian_spike", { + description = "Obsidian spike", + tiles = { + "default_obsidian.png", + }, + use_texture_alpha = true, + drawtype = "nodebox", + paramtype = "light", + node_box = { + type = "fixed", + fixed = { + {-0.25, -0.5, -0.25, 0.25, 0.5, 0.25}, -- NodeBox1 + {-0.1875, 0.4375, -0.1875, 0.1875, 1.1875, 0.1875}, -- NodeBox2 + {-0.125, 1.1875, -0.125, 0.125, 1.6875, 0.125}, -- NodeBox3 + {-0.0625, 1.6875, -0.0625, 0.0625, 2.0625, 0.0625}, -- NodeBox4 + } + }, + groups = {cracky=1,}, + sounds = default.node_sound_stone_defaults(), + drop = "default:obsidian", +}) + +minetest.register_entity("hyrule_mapgen:laser", { + visual = "cube", + textures = { + "hyrule_mapgen_laser.png", + "hyrule_mapgen_laser.png", + "hyrule_mapgen_laser.png", + "hyrule_mapgen_laser.png", + "hyrule_mapgen_laser.png", + "hyrule_mapgen_laser.png", + }, + visual_size={x=0.1,y=0.1}, + collisionbox = {0, 0, 0, 0, 0, 0}, + physical = false, + automatic_rotate = true, + automatic_face_movement_dir = 0, + on_activate = function(self) + minetest.after(3, function() + self.object:remove() + end) + end, + on_step = function(self, dtime) + local pos = self.object:getpos() + local objs = minetest.get_objects_inside_radius({x=pos.x,y=pos.y-0.5,z=pos.z}, 0.5) + for k, obj in pairs(objs) do + if obj:is_player() then + obj:punch(self.object, 1.0, { + full_punch_interval=1.0, + damage_groups={fleshy=1}, + }, nil) + self.object:remove() + end + if obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "hyrule_mapgen:laser" and obj:get_luaentity().name ~= "__builtin:item" then + obj:punch(self.object, 1.0, { + full_punch_interval=1.0, + damage_groups={fleshy=1}, + }, nil) + self.object:remove() + end + end + end + end +}) + +minetest.register_node("hyrule_mapgen:beamos", { + description = "Beamos", + tiles = { + "hyrule_mapgen_beamos_top.png", + "hyrule_mapgen_beamos_bottom.png", + "hyrule_mapgen_beamos_sides.png", + "hyrule_mapgen_beamos_sides.png", + "hyrule_mapgen_beamos_sides.png", + "hyrule_mapgen_beamos_front.png", + }, + groups = {cracky = 3,}, + paramtype2 = "facedir", +}) + +minetest.register_node("hyrule_mapgen:spikes", { + description = "Spikes", + drawtype = "firelike", + tiles = { + "hyrule_mapgen_spikes.png" + }, + wield_image = "hyrule_mapgen_spikes.png", + inventory_image = "hyrule_mapgen_spikes.png", + groups = {cracky=3}, + paramtype = "light", + walkable = false, + damage_per_second = 3, + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -0.3, 0.5} + }, + collision_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -0.2, 0.5} + } +}) + +minetest.register_node("hyrule_mapgen:sinkingsand", { + description = "Sinkin Sand", + drawtype = "liquid", + tiles = {{ + name = "hyrule_mapgen_sinkingsand.png", + animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 1.00}, + }}, + inventory_image = "[inventorycube{hyrule_mapgen_sinkingsand_inv.png{hyrule_mapgen_sinkingsand_inv.png{hyrule_mapgen_sinkingsand_inv.png", + groups = {liquid=1, water=1}, + pointable = false, + buildable_to = true, + liquid_viscosity = 8, + liquid_range = 0, + liquidtype = "source", + liquid_alternative_flowing = "hyrule_mapgen:sinkingsand", + liquid_alternative_source = "hyrule_mapgen:sinkingsand", + damage_per_second = 3, + walkable = false +}) + + +local chest_items = { + {"clawshot:clawshot", 5}, + {"hyruletools:eye", 5}, + {"hyruletools:boomerang", 5}, + {"hyruletools:flame_rod", 10}, + {"hyruletools:wand", 10}, + {"hyruletools:medallion", 10}, + {"hyruletools:medallion2", 10}, + {"hyruletools:medallion3", 10}, + {"hyruletools:ice_rod 1", 5}, + {"hyruletools:blue_rupee 20", 5}, + {"hyruletools:red_rupee 10", 5}, + {"hyruletools:nyan_rupee", 5}, +} + +minetest.register_node("hyrule_mapgen:chest", { + description = "Dungeon Chest", + tiles = {"hyrule_mapgen_chest_top.png", "hyrule_mapgen_chest_top.png", "hyrule_mapgen_chest_side.png", + "hyrule_mapgen_chest_side.png", "hyrule_mapgen_chest_side.png", "hyrule_mapgen_chest.png"}, + paramtype2 = "facedir", + paramtype = "light", + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.25, 0.5}, -- NodeBox1 + {-0.5, 0.375, -0.375, 0.5, 0.4375, 0.375}, -- NodeBox2 + {-0.5, 0.25, -0.4375, 0.5, 0.375, 0.4375}, -- NodeBox3 + {-0.5, 0.4375, -0.3125, 0.5, 0.5, 0.3125}, -- NodeBox4 + } + }, + groups = {cracky = 2, oddly_breakable_by_hand = 1}, + is_ground_content = false, + on_construct = function(pos) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + for _, row in ipairs(chest_items) do + local item = row[1] + local rarity = row[2] + if math.random(1,rarity) == 1 then + meta:set_string("item", item) + return + else + meta:set_string("item", "hyruletools:green_rupee 20") + end + end + inv:set_size("main", 1*1) + end, + can_dig = function(pos,player) + local meta = minetest.get_meta(pos); + local inv = meta:get_inventory() + return inv:is_empty("main") + end, + on_rightclick = function(pos, node, clicker, item, _) + local name = clicker:get_player_name() + if clicker:get_wielded_item():get_name() == "hyruletools:key" then + item:take_item() + local meta = minetest.get_meta(pos) + local item = meta:get_string("item") + if item == nil then + for _, row in ipairs(chest_items) do + local item = row[1] + local rarity = row[2] + if math.random(1,rarity) == 1 then + meta:set_string("item", item) + else + meta:set_string("item", "hyruletools:green_rupee 20") + end + end + end + minetest.env:add_item(pos, item) + minetest.env:remove_node(pos) + else + minetest.chat_send_player(name, "It is locked, you need a key!") + end + end, +}) + +minetest.register_node("hyrule_mapgen:chest_key", { + description = "Dungeon Chest (key)", + tiles = {"hyrule_mapgen_chest_top.png", "hyrule_mapgen_chest_top.png", "hyrule_mapgen_chest_side.png", + "hyrule_mapgen_chest_side.png", "hyrule_mapgen_chest_side.png", "hyrule_mapgen_chest.png"}, + paramtype2 = "facedir", + paramtype = "light", + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.25, 0.5}, -- NodeBox1 + {-0.5, 0.375, -0.375, 0.5, 0.4375, 0.375}, -- NodeBox2 + {-0.5, 0.25, -0.4375, 0.5, 0.375, 0.4375}, -- NodeBox3 + {-0.5, 0.4375, -0.3125, 0.5, 0.5, 0.3125}, -- NodeBox4 + } + }, + groups = {cracky = 2, oddly_breakable_by_hand = 1}, + is_ground_content = false, + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) + if minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name ~= "hyrule_mapgen:dungeon_brick" and minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name ~= "hyrule_mapgen:dungeon_tile" and minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name ~= "hyrule_mapgen:dungeon_brick2" and minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name ~= "hyrule_mapgen:dungeon_tile2" then + minetest.env:add_item(pos, "hyruletools:key") + else + minetest.env:add_item(pos, "hyruletools:retro_key") + end + minetest.env:remove_node(pos) + return itemstack + end, +}) + +minetest.register_node("hyrule_mapgen:chest_bosskey", { + description = "Dungeon Chest (Boss key)", + tiles = {"hyrule_mapgen_chest_top.png", "hyrule_mapgen_chest_top.png", "hyrule_mapgen_chest_side.png", + "hyrule_mapgen_chest_side.png", "hyrule_mapgen_chest_side.png", "hyrule_mapgen_chest_bosskey.png"}, + paramtype2 = "facedir", + paramtype = "light", + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.25, 0.5}, -- NodeBox1 + {-0.5, 0.375, -0.375, 0.5, 0.4375, 0.375}, -- NodeBox2 + {-0.5, 0.25, -0.4375, 0.5, 0.375, 0.4375}, -- NodeBox3 + {-0.5, 0.4375, -0.3125, 0.5, 0.5, 0.3125}, -- NodeBox4 + } + }, + groups = {cracky = 2, oddly_breakable_by_hand = 1}, + is_ground_content = false, + can_dig = function(pos,player) + local meta = minetest.get_meta(pos); + local inv = meta:get_inventory() + return inv:is_empty("main") + end, + on_rightclick = function(pos, node, clicker, item, _) + local name = clicker:get_player_name() + if clicker:get_wielded_item():get_name() == "hyruletools:key" then + item:take_item() + minetest.env:add_item(pos, "hyruletools:key_boss") + minetest.env:remove_node(pos) + else + minetest.chat_send_player(name, "It's locked, you need a key!") + end + end, +}) + +minetest.register_node("hyrule_mapgen:bridge", { + description = "Wooden Bridge", + tiles = { + "hyrule_mapgen_bridge.png", + "hyrule_mapgen_bridge.png", + "hyrule_mapgen_bridge_side.png", + "hyrule_mapgen_bridge_side.png", + "hyrule_mapgen_bridge.png", + "hyrule_mapgen_bridge.png" + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.4375, 0.5, -0.125, -0.1875}, -- NodeBox1 + {-0.5, -0.5, 0.1875, 0.5, -0.125, 0.4375}, -- NodeBox2 + {-0.5, -0.5, -0.125, 0.5, -0.125, 0.125}, -- NodeBox3 + {-0.5, -0.4375, -0.5, 0.5, -0.1875, 0.5}, -- NodeBox4 + } + }, + groups = {choppy=1, oddly_breakable_by_hand=1} +}) + +minetest.register_node("hyrule_mapgen:bridge2", { + description = "Subrosian Bridge", + tiles = { + "hyrule_mapgen_bridge2.png", + "hyrule_mapgen_bridge2.png", + "hyrule_mapgen_bridge_side2.png", + "hyrule_mapgen_bridge_side2.png", + "hyrule_mapgen_bridge2.png", + "hyrule_mapgen_bridge2.png" + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.4375, 0.5, -0.125, -0.1875}, -- NodeBox1 + {-0.5, -0.5, 0.1875, 0.5, -0.125, 0.4375}, -- NodeBox2 + {-0.5, -0.5, -0.125, 0.5, -0.125, 0.125}, -- NodeBox3 + {-0.5, -0.4375, -0.5, 0.5, -0.1875, 0.5}, -- NodeBox4 + } + }, + groups = {choppy=2, oddly_breakable_by_hand=1} +}) + +minetest.register_node("hyrule_mapgen:swamp_flower", { + description = "Swamp Flower", + drawtype = "mesh", + mesh = "lilypad.b3d", + tiles = {"hyrule_mapgen_swampflower.png"}, + inventory_image = "hyrule_mapgen_swampflower.png", + paramtype = "light", + sunlight_propagates = false, + walkable = false, + is_ground_content = true, + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -0.4, 0.5} + }, + collision_box = { + type = "fixed", + fixed = {-1, -0.5, -1, 1, -0.4, 1} + }, + groups = {cracky=3,dig_immediate=3}, +}) + +playereffects.register_effect_type("float", "", nil, {"gravity"}, + function(player) + player:set_physics_override(nil,nil,0.2) + physics_overriden = true + end, + + function(effect, player) + player:set_physics_override(nil,nil,1) + physics_overriden = false + end, + false +) + +minetest.register_node("hyrule_mapgen:fallen_leaves", { + description = "Fallen Leaves", + tiles = { + "hyrule_mapgen_leaves.png", + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + place_param2 = random, + groups = {snappy=2, oddly_breakable_by_hand=1, dig_immediate=3}, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.45, 0.5}, + } + } +}) + +minetest.register_node("hyrule_mapgen:biglily", { + description = "Big Waterlily", + drawtype = "mesh", + mesh = "lilypad.b3d", + tiles = {"hyrule_mapgen_biglily.png"}, + inventory_image = "hyrule_mapgen_biglily.png", + paramtype = "light", + sunlight_propagates = false, + walkable = true, + is_ground_content = true, + liquids_pointable = true, + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -0.4, 0.5} + }, + collision_box = { + type = "fixed", + fixed = {-1, -0.5, -1, 1, -0.4, 1} + }, + --on_place from flowers waterlily Originally by Ironzorg (MIT) and VanessaE (MIT) + --Various Minetest developers and contributors. + on_place = function(itemstack, placer, pointed_thing) + local pos = pointed_thing.above + local node = minetest.get_node(pointed_thing.under).name + local def = minetest.registered_nodes[node] + local player_name = placer:get_player_name() + + if def and def.liquidtype == "source" and + minetest.get_item_group(node, "water") > 0 then + if not minetest.is_protected(pos, player_name) then + minetest.set_node(pos, {name = "hyrule_mapgen:biglily", + param2 = math.random(0, 3)}) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + else + minetest.chat_send_player(player_name, "Node is protected") + minetest.record_protection_violation(pos, player_name) + end + end + + return itemstack + end, + groups = {snappy=1, dig_immediate=3,}, +}) + +minetest.register_node("hyrule_mapgen:deku_flower", { + description = "Deku Flower", + drawtype = "mesh", + mesh = "flatnode.b3d", + tiles = {"hyrule_mapgen_dekuflower.png"}, + inventory_image = "hyrule_mapgen_dekuflower.png", + paramtype = "light", + sunlight_propagates = false, + walkable = false, + is_ground_content = true, + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -0.4, 0.5} + }, + groups = {snappy=1, dig_immediate=3,}, +}) + +minetest.register_node("hyrule_mapgen:healwater_src", { + description = "Healing Water Source", + drawtype = "liquid", + tiles = { + { + name = "default_water_source_animated.png^[colorize:pink:150", + animation = { + type = "vertical_frames", + aspect_w = 16, + aspect_h = 16, + length = 2.0, + }, + }, + }, + alpha = 160, + light_source = 14, + paramtype = "light", + walkable = false, + pointable = false, + diggable = false, + buildable_to = true, + is_ground_content = false, + drop = "", + drowning = -1, + liquidtype = "source", + liquid_alternative_flowing = "hyrule_mapgen:healwater_src", + liquid_alternative_source = "hyrule_mapgen:healwater_src", + liquid_range = 0, + liquid_viscosity = 1, + post_effect_color = {a = 103, r = 80, g = 50, b = 50}, + groups = {water = 3, liquid = 3,}, + sounds = default.node_sound_water_defaults(), +}) + +minetest.register_node("hyrule_mapgen:fake_lava", { + description = "Fake Lava", + drawtype = "liquid", + tiles = { + { + name = "default_lava_source_animated.png^[colorize:orange:50", + animation = { + type = "vertical_frames", + aspect_w = 16, + aspect_h = 16, + length = 1.0, + }, + }, + }, + light_source = 8, + paramtype = "light", + walkable = false, + pointable = false, + diggable = false, + buildable_to = false, + is_ground_content = false, + liquid_renewable = false, + drop = "", + drowning = 1, + damage_per_second = 3, + liquidtype = "source", + liquid_alternative_flowing = "hyrule_mapgen:fake_lava", + liquid_alternative_source = "hyrule_mapgen:fake_lava", + liquid_range = 0, + liquid_viscosity = 1, + post_effect_color = {a = 103, r = 80, g = 50, b = 20}, + groups = {water = 3, liquid = 3, not_in_creative_inventory=1}, +}) + +minetest.register_node("hyrule_mapgen:geyser", { + description = "Lava Geyser", + tiles = { + "hyrule_mapgen_geyser_top.png", + "hyrule_mapgen_geyser_side.png", + "hyrule_mapgen_geyser_side.png", + "hyrule_mapgen_geyser_side.png", + "hyrule_mapgen_geyser_side.png", + "hyrule_mapgen_geyser_side.png" + }, + drawtype = "nodebox", + paramtype = "light", + groups = {crumbly=2, oddly_breakable_by_hand=1}, + damage_per_second = 1, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.3125, 0.5}, -- NodeBox1 + {-0.4375, -0.3125, -0.4375, 0.4375, -0.125, 0.4375}, -- NodeBox2 + {-0.375, -0.125, -0.375, -0.125, 0, 0.375}, -- NodeBox3 + {0.1875, -0.125, -0.375, 0.375, 0, 0.375}, -- NodeBox4 + {-0.375, -0.125, -0.375, 0.375, 0, -0.1875}, -- NodeBox5 + {-0.3125, -0.125, 0.125, 0.3125, 0, 0.375}, -- NodeBox6 + } + } +}) + +minetest.register_node("hyrule_mapgen:leaves_with_gale", { + description = "Leaves with Gale seed", + drawtype = "allfaces", + paramtype = "light", + tiles = { + "default_leaves.png^hyrule_mapgen_galeseed.png" + }, + drop = "default:leaves", + on_rightclick = function(pos, node, clicker, itemstack) + if clicker:get_wielded_item():get_name() == "hyruletools:seed_satchel" then + local item = clicker:get_wielded_item() + itemstack:take_item() + minetest.env:add_item(pos, "hyruletools:seed_gale") + minetest.env:set_node(pos, {name="default:leaves"}) + end + end, + walkable = false, + groups = {snappy=3, oddly_breakable_by_hand=1, dig_immediate=3} +}) + +minetest.register_node("hyrule_mapgen:leaves_with_ember", { + description = "Leaves with Ember seed", + drawtype = "allfaces", + paramtype = "light", + tiles = { + "default_pine_needles.png^hyrule_mapgen_emberseed.png" + }, + drop = "default:pine_needles", + on_rightclick = function(pos, node, clicker, itemstack) + if clicker:get_wielded_item():get_name() == "hyruletools:seed_satchel" then + local item = clicker:get_wielded_item() + itemstack:take_item() + minetest.env:add_item(pos, "hyruletools:seed_ember") + minetest.env:set_node(pos, {name="default:pine_needles"}) + end + end, + walkable = false, + groups = {snappy=3, oddly_breakable_by_hand=1, dig_immediate=3} +}) + +minetest.register_node("hyrule_mapgen:leaves_with_pegasus", { + description = "Leaves with Pegasus seed", + drawtype = "allfaces", + paramtype = "light", + tiles = { + "default_jungleleaves.png^hyrule_mapgen_pegasusseed.png" + }, + drop = "default:jungleleaves", + on_rightclick = function(pos, node, clicker, itemstack) + if clicker:get_wielded_item():get_name() == "hyruletools:seed_satchel" then + local item = clicker:get_wielded_item() + itemstack:take_item() + minetest.env:add_item(pos, "hyruletools:seed_pegasus") + minetest.env:set_node(pos, {name="default:jungleleaves"}) + end + end, + walkable = false, + groups = {snappy=3, oddly_breakable_by_hand=1, dig_immediate=3} +}) + +minetest.register_node("hyrule_mapgen:leaves_with_mystery", { + description = "Leaves with Mystery seed", + drawtype = "allfaces", + paramtype = "light", + tiles = { + "default_aspen_leaves.png^hyrule_mapgen_mysteryseed.png" + }, + drop = "default:aspen_leaves", + on_rightclick = function(pos, node, clicker, itemstack) + if clicker:get_wielded_item():get_name() == "hyruletools:seed_satchel" then + local item = clicker:get_wielded_item() + itemstack:take_item() + minetest.env:add_item(pos, "hyruletools:seed_mystery") + minetest.env:set_node(pos, {name="default:aspen_leaves"}) + end + end, + walkable = false, + groups = {snappy=3, oddly_breakable_by_hand=1, dig_immediate=3} +}) + +minetest.register_node("hyrule_mapgen:swamp_mud", { + description = "Swamp Mud", + tiles = { + "hyrule_mapgen_swampmud.png" + }, + groups = {crumbly=1, oddly_breakable_by_hand=1}, + sounds = default.node_sound_dirt_defaults() +}) + +minetest.register_node("hyrule_mapgen:swamp_grass", { + description = "Swamp Grass", + drawtype = "plantlike", + tiles = {"hyrule_mapgen_swampgrass.png"}, + inventory_image = "hyrule_mapgen_swampgrass.png", + is_ground_content = false, + sunlight_propagates = true, + walkable = false, + paramtype = "light", + selection_box = { + type = "fixed", + fixed = {{-0.3, -0.5, -0.3, 0.3, 0.4, 0.3}} + }, + groups = {snappy=1, oddly_breakable_by_hand=1, dig_immediate=3}, + sounds = default.node_sound_leaves_defaults(), + on_destruct = function(pos, oldnode) + local num = math.random(3,7) + if num == 5 then + minetest.env:add_item(pos, "hyruletools:green_rupee") + end + if num == 4 then + minetest.env:add_entity(pos, "hyruletools:heart_entity") + end + end, + drop = "", +}) + +minetest.register_node("hyrule_mapgen:grupee", { + description = "Green Rupee Block", + drawtype = "allfaces", + paramtype = "light", + tiles = { + "hyrule_mapgen_grupee.png" + }, + use_texture_alpha = true, + groups = {cracky=1, oddly_breakable_by_hand=1} +}) + +minetest.register_node("hyrule_mapgen:rrupee", { + description = "Red Rupee Block", + drawtype = "allfaces", + paramtype = "light", + tiles = { + "hyrule_mapgen_rrupee.png" + }, + use_texture_alpha = true, + groups = {cracky=1, oddly_breakable_by_hand=1} +}) + +minetest.register_node("hyrule_mapgen:brupee", { + description = "Blue Rupee Block", + drawtype = "allfaces", + paramtype = "light", + tiles = { + "hyrule_mapgen_brupee.png" + }, + use_texture_alpha = true, + groups = {cracky=1, oddly_breakable_by_hand=1} +}) + +minetest.register_node("hyrule_mapgen:nrupee", { + description = "Nyan Rupee Block", + drawtype = "allfaces", + paramtype = "light", + tiles = { + "hyrule_mapgen_nrupee.png" + }, + use_texture_alpha = true, + groups = {cracky=1, oddly_breakable_by_hand=1} +}) + +minetest.register_node("hyrule_mapgen:wood_fence", { + description = "Wooden Fence", + inventory_image = "hyrule_mapgen_woodfence.png", + wield_image = "hyrule_mapgen_woodfence.png", + sounds = default.node_sound_wood_defaults(), + groups = {choppy=1,}, + tiles = { + "hyrule_mapgen_woodfence.png", + "hyrule_mapgen_woodfence.png^[transformFY", + "hyrule_mapgen_woodfence.png", + "hyrule_mapgen_woodfence.png^[transformFX", + "hyrule_mapgen_woodfence.png^[transformFX", + "hyrule_mapgen_woodfence.png", + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + node_box = { + type = "fixed", + fixed = { + {-0.0625, -0.5, -0.0625, 0.125, 0.5, 0.125}, -- NodeBox1 + {-0.5, 0, 0, 0.5, 0.1875, 0.0625}, -- NodeBox2 + } + }, +}) + +minetest.register_node("hyrule_mapgen:sandstone", { + description = "Dungeon Sandstone", + tiles = { + "hyrule_mapgen_sandstone.png" + }, + groups = {cracky=3,}, + sounds = default.node_sound_stone_defaults() +}) + +minetest.register_node("hyrule_mapgen:sandstone_block", { + description = "Dungeon Sandstone Block", + tiles = { + "hyrule_mapgen_sandstone.png", + "hyrule_mapgen_sandstone.png", + "hyrule_mapgen_sandstone_side.png", + }, + groups = {cracky=3,}, + sounds = default.node_sound_stone_defaults() +}) + +stairs.register_stair_and_slab( + "dsandstone", + "hyrule_mapgen:sandstone", + {cracky = 3, oddly_breakable_by_hand = 2, flammable = 2}, + {"hyrule_mapgen_sandstone.png"}, + "Dungeon Sandstone Stair", + "Dungeon Sandstne Slab", + default.node_sound_stone_defaults() +) + +minetest.register_node("hyrule_mapgen:sandstone_tile", { + description = "Dungeon Sandstone Tile", + tiles = { + "hyrule_mapgen_sandstone_tile.png" + }, + groups = {cracky=3,}, + sounds = default.node_sound_stone_defaults() +}) + +minetest.register_node("hyrule_mapgen:sandstone_decoration", { + description = "Dungeon Sandstone Decoration", + tiles = { + "hyrule_mapgen_sandstone.png", + "hyrule_mapgen_sandstone.png", + "hyrule_mapgen_sandstone_decoration.png", + "hyrule_mapgen_sandstone_decoration.png", + "hyrule_mapgen_sandstone_decoration.png", + "hyrule_mapgen_sandstone_decoration.png", + }, + groups = {cracky=3,}, + sounds = default.node_sound_stone_defaults() +}) + +minetest.register_node("hyrule_mapgen:sandstone_decoration2", { + description = "Dungeon Sandstone Decoration 2", + tiles = { + "hyrule_mapgen_sandstone.png", + "hyrule_mapgen_sandstone.png", + "hyrule_mapgen_sandstone_decoration2.png", + "hyrule_mapgen_sandstone_decoration2.png", + "hyrule_mapgen_sandstone_decoration2.png", + "hyrule_mapgen_sandstone_decoration2.png", + }, + groups = {cracky=3,}, + sounds = default.node_sound_stone_defaults() +}) + +minetest.register_node("hyrule_mapgen:pillar", { + description = "Sandstone Pillar", + tiles = { + "hyrule_mapgen_sandstone_tile.png", + "hyrule_mapgen_sandstone_tile.png", + "hyrule_mapgen_sandstone_pillar.png", + "hyrule_mapgen_sandstone_pillar.png", + "hyrule_mapgen_sandstone_pillar.png", + "hyrule_mapgen_sandstone_pillar.png" + }, + drawtype = "nodebox", + paramtype = "light", + groups = {cracky=2, falling_node=1}, + node_box = { + type = "fixed", + fixed = { + {-0.25, -0.5, -0.25, 0.25, 0.5, 0.25}, -- NodeBox4 + } + }, + sounds = default.node_sound_stone_defaults() +}) + +minetest.register_node("hyrule_mapgen:pillar_base", { + description = "Sandstone Pillar (base)", + tiles = { + "hyrule_mapgen_sandstone_tile.png", + "hyrule_mapgen_sandstone_tile.png", + "hyrule_mapgen_sandstone_pillar_base.png", + "hyrule_mapgen_sandstone_pillar_base.png", + "hyrule_mapgen_sandstone_pillar_base.png", + "hyrule_mapgen_sandstone_pillar_base.png" + }, + drawtype = "nodebox", + paramtype = "light", + groups = {cracky=2, falling_node=1}, + node_box = { + type = "fixed", + fixed = { + {-0.4375, -0.5, -0.4375, 0.4375, -0.4375, 0.4375}, -- NodeBox1 + {-0.375, -0.4375, -0.375, 0.375, -0.3125, 0.375}, -- NodeBox2 + {-0.3125, -0.3125, -0.3125, 0.3125, -0.1875, 0.3125}, -- NodeBox3 + {-0.25, -0.1875, -0.25, 0.25, 0.5, 0.25}, -- NodeBox4 + } + }, + sounds = default.node_sound_stone_defaults() +}) + +minetest.register_node("hyrule_mapgen:pillar_top", { + description = "Sandstone Pillar (top)", + tiles = { + "hyrule_mapgen_sandstone_tile.png", + "hyrule_mapgen_sandstone_tile.png", + "hyrule_mapgen_sandstone_pillar_top.png", + "hyrule_mapgen_sandstone_pillar_top.png", + "hyrule_mapgen_sandstone_pillar_top.png", + "hyrule_mapgen_sandstone_pillar_top.png" + }, + drawtype = "nodebox", + paramtype = "light", + groups = {cracky=2, falling_node=1}, + node_box = { + type = "fixed", + fixed = { + {-0.4375, 0.4375, -0.4375, 0.4375, 0.5, 0.4375}, -- NodeBox1 + {-0.375, 0.3125, -0.375, 0.375, 0.4375, 0.375}, -- NodeBox2 + {-0.3125, 0.1875, -0.3125, 0.3125, 0.3125, 0.3125}, -- NodeBox3 + {-0.25, -0.5, -0.25, 0.25, 0.1875, 0.25}, -- NodeBox4 + } + }, + sounds = default.node_sound_stone_defaults() +}) + +minetest.register_node("hyrule_mapgen:greenwall", { + description = "Green Tile", + tiles = { + "hyrule_mapgen_green_wall.png" + }, + groups = {cracky=1, magnetic=0} +}) + +minetest.register_node("hyrule_mapgen:beamoswall", { + description = "Beamos Block", + tiles = { + "hyrule_mapgen_beamos_wall.png" + }, + groups = {cracky=1, magnetic=0} +}) + +minetest.register_node("hyrule_mapgen:railblock", { + description = "Railway Block", + tiles = { + "hyrule_mapgen_railblock.png" + }, + groups = {cracky=1, magnetic=0} +}) + +minetest.register_node("hyrule_mapgen:greentile", { + description = "Green Dungeon Tile", + tiles = { + "hyrule_mapgen_greentile.png" + }, + groups = {cracky=1,}, + sounds = default.node_sound_glass_defaults() +}) + +minetest.register_node("hyrule_mapgen:stained_glass", { + description = "Stained Glass", + drawtype = "glasslike", + tiles = { + "hyrule_mapgen_stainedglass.png" + }, + use_texture_alpha = true, + paramtype = "light", + light_source = 10, + sunlight_propagates = true, + groups = {cracky=1, oddly_breakable_by_hand=1, dig_immediate = 3}, + sounds = default.node_sound_glass_defaults() +}) + +minetest.register_node("hyrule_mapgen:ganon_sphere", { + description = "Ganon Sphere", + tiles = { + "hyrule_mapgen_ganonsphere.png", + }, + drawtype = "nodebox", + paramtype = "light", + light_source = 10, + groups = {cracky=4, oddly_breakable_by_hand=1}, + walkable = false, + sounds = default.node_sound_glass_defaults(), + use_texture_alpha = true, + node_box = { + type = "fixed", + fixed = { + {-0.375, -0.1875, -0.1875, 0.375, 0.1875, 0.1875}, -- NodeBox5 + {-0.1875, -0.375, -0.1875, 0.1875, 0.375, 0.1875}, -- NodeBox6 + {-0.3125, -0.25, -0.25, 0.3125, 0.25, 0.25}, -- NodeBox7 + {-0.25, -0.25, -0.3125, 0.25, 0.25, 0.3125}, -- NodeBox8 + {-0.25, -0.3125, -0.25, 0.25, 0.3125, 0.25}, -- NodeBox9 + {-0.1875, -0.1875, -0.375, 0.1875, 0.1875, 0.375}, -- NodeBox12 + } + }, + drop = "" +}) + +minetest.register_node("hyrule_mapgen:floortile", { + description = "Floor Tile", + tiles = { + "hyrule_mapgen_floortile.png" + }, + groups = {cracky=1, magnetic=1} +}) + +minetest.register_node("hyrule_mapgen:floorbrick", { + description = "Floor Brick", + tiles = { + "hyrule_mapgen_brick.png" + }, + groups = {cracky=1} +}) + +stairs.register_stair_and_slab( + "floortile", + "hyrule_mapgen:floortile", + {cracky = 3, cools_lava = 1}, + {"hyrule_mapgen_floortile.png"}, + "Floor Tile Stair", + "Floor Tile Slab", + default.node_sound_stone_defaults() +) + +minetest.register_node("hyrule_mapgen:carpet", { + description = "Carpet Block", + tiles = { + "hyrule_mapgen_carpet.png" + }, + groups = {fleshy=1, dig_immediate=3, oddly_breakable_by_hand=1} +}) + +minetest.register_node("hyrule_mapgen:carpet_trap", { + description = "Carpet Trap", + tiles = { + "hyrule_mapgen_carpet.png" + }, + walkable = false, + damage_per_second = 3, + groups = {fleshy=1, dig_immediate=3, oddly_breakable_by_hand=1} +}) + +minetest.register_node("hyrule_mapgen:magnblock", { + description = "Magnetic Block (almost unbreakeable)", + tiles = { + "hyrule_mapgen_magnblock.png" + }, + groups = {cracky=7, magnetic=1}, + on_blast = function(pos, intensity) + end +}) + +minetest.register_node("hyrule_mapgen:flameblock", { + description = "Flame Block (almost unbreakeable)", + tiles = { + "hyrule_mapgen_flameblock.png" + }, + groups = {cracky=7, flammable=1}, + on_blast = function(pos, intensity) + end +}) + +minetest.register_node("hyrule_mapgen:subrosian_stone", { + description = "Subrosian Stone", + tiles = { + "hyrule_mapgen_subrosianstone.png" + }, + paramtype = "light", + light_source = 10, + groups = {cracky=2,} +}) + +local function open_door(pos, player) + if doors.get then + local minp = {x=pos.x-5, y=pos.y, z=pos.z-5} + local maxp = {x=pos.x+5, y=pos.y, z=pos.z+5} + local doorss = minetest.find_nodes_in_area(minp, maxp, "group:door") + for i = 1, #doorss do + local dpos = {x=doorss[i].x, y=doorss[i].y, z=doorss[i].z} + local door = doors.get(dpos) + door:toggle(player) + end + + end +end + +minetest.register_node("hyrule_mapgen:lamp", { + description = "Floor Lamp", + tiles = { + "hyrule_mapgen_lamptop.png", + "hyrule_mapgen_lamptop.png", + "hyrule_mapgen_lampside.png", + }, + drawtype = "nodebox", + paramtype = "light", + node_box = { + type = "fixed", + fixed = { + {0.375, -0.5, 0.375, 0.5, 0, 0.5}, -- NodeBox1 + {0.375, -0.5, -0.5, 0.5, 0, -0.375}, -- NodeBox2 + {-0.5, -0.5, -0.5, -0.375, 0, -0.375}, -- NodeBox3 + {-0.5, -0.5, 0.375, -0.375, 0, 0.5}, -- NodeBox4 + {-0.375, -0.5, -0.375, 0.375, -0.1875, 0.375}, -- NodeBox5 + {-0.375, -0.375, -0.4375, 0.375, 0.1875, -0.3125}, -- NodeBox6 + {-0.375, -0.375, 0.3125, 0.375, 0.1875, 0.4375}, -- NodeBox7 + {0.3125, -0.375, -0.375, 0.4375, 0.1875, 0.375}, -- NodeBox8 + {-0.4375, -0.375, -0.375, -0.3125, 0.1875, 0.375}, -- NodeBox9 + {-0.1875, -0.5, -0.1875, 0.1875, -0.0625, 0.1875}, -- NodeBox10 + {-0.4375, -0.5, -0.4375, 0.4375, 0.0625, 0.4375}, -- NodeBox11 + } + }, + on_rightclick = function(pos, node, clicker, itemstack) + if clicker:get_wielded_item():get_name() == "hyruletools:lantern" then + minetest.set_node(pos, {name="hyrule_mapgen:lamp_lit"}) + open_door(pos, clicker) + end + end, + groups = {cracky=1, falling_node=1}, +}) + +minetest.register_node("hyrule_mapgen:lamp_lit", { + description = "Floor Lamp", + tiles = { + "hyrule_mapgen_lamptop.png", + "hyrule_mapgen_lamptop.png", + "hyrule_mapgen_lampside.png", + }, + drawtype = "nodebox", + light_source = 10, + sunlight_propagates = false, + paramtype = "light", + drop = "hyrule_mapgen:lamp", + node_box = { + type = "fixed", + fixed = { + {0.375, -0.5, 0.375, 0.5, 0, 0.5}, -- NodeBox1 + {0.375, -0.5, -0.5, 0.5, 0, -0.375}, -- NodeBox2 + {-0.5, -0.5, -0.5, -0.375, 0, -0.375}, -- NodeBox3 + {-0.5, -0.5, 0.375, -0.375, 0, 0.5}, -- NodeBox4 + {-0.375, -0.5, -0.375, 0.375, -0.1875, 0.375}, -- NodeBox5 + {-0.375, -0.375, -0.4375, 0.375, 0.1875, -0.3125}, -- NodeBox6 + {-0.375, -0.375, 0.3125, 0.375, 0.1875, 0.4375}, -- NodeBox7 + {0.3125, -0.375, -0.375, 0.4375, 0.1875, 0.375}, -- NodeBox8 + {-0.4375, -0.375, -0.375, -0.3125, 0.1875, 0.375}, -- NodeBox9 + {-0.1875, -0.5, -0.1875, 0.1875, -0.0625, 0.1875}, -- NodeBox10 + {-0.4375, -0.5, -0.4375, 0.4375, 0.0625, 0.4375}, -- NodeBox11 + } + }, + groups = {cracky=1, falling_node=1, not_in_creative_inventory=1}, +}) + +minetest.register_node("hyrule_mapgen:rock", { + description = "Rock", + tiles = { + "hyrule_mapgen_rock.png", + "hyrule_mapgen_rock.png", + "hyrule_mapgen_rock.png", + "hyrule_mapgen_rock.png", + "hyrule_mapgen_rock.png", + "hyrule_mapgen_rock.png" + }, + drawtype = "nodebox", + paramtype = "light", + groups = {cracky=1, falling_node=1}, + on_destruct = function(pos, oldnode) + local num = math.random(3,5) + if num == 5 then + minetest.env:add_item({x=pos.x, y=pos.y+0.5, z=pos.z}, "hyruletools:green_rupee") + end + end, + node_box = { + type = "fixed", + fixed = { + {-0.375, -0.5, -0.375, 0.3125, -0.4375, 0.3125}, -- NodeBox1 + {-0.4375, -0.4375, -0.3125, 0.375, -0.125, 0.25}, -- NodeBox2 + {-0.3125, -0.125, -0.375, 0.25, -0.0625, 0.3125}, -- NodeBox3 + {-0.3125, -0.4375, -0.4375, 0.25, -0.125, 0.375}, -- NodeBox4 + {-0.375, -0.4375, -0.375, 0.3125, -0.125, 0.3125}, -- NodeBox5 + {-0.25, -0.0625, -0.3125, 0.1875, 0, 0.25}, -- NodeBox6 + {-0.375, -0.125, -0.25, 0.3125, -0.0625, 0.1875}, -- NodeBox7 + } + } +}) + +minetest.register_node("hyrule_mapgen:packed_dirt", { + description = "Packed Dirt", + tiles = { + "default_dirt.png", + }, + drawtype = "nodebox", + paramtype = "light", + groups = {crumbly=1, oddly_breakable_by_hand=1}, + drop = "default:dirt", + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.4, 0.5}, + } + } +}) + +minetest.register_node("hyrule_mapgen:wallring", { + description = "Wall Ring", + tiles = { + "hyrule_mapgen_railblock.png", + "hyrule_mapgen_railblock.png", + "hyrule_mapgen_wallring.png", + "hyrule_mapgen_wallring.png", + "hyrule_mapgen_wallring.png", + "hyrule_mapgen_wallring.png", + }, + groups = {cracky=1, hook=1} +}) + + +minetest.register_node("hyrule_mapgen:lavabiome_dirt", { + description = "Burnt Dirt", + tiles = { + "hyrule_mapgen_dirt.png" + }, + groups = {crumbly=1, oddly_breakable_by_hand=1} +}) + +minetest.register_node("hyrule_mapgen:stone_with_redrupee", { + description = "Buried red rupee", + tiles = {"default_stone.png^hyruletools_redrupee_ore.png"}, + groups = {cracky = 2, xp = 1}, + drop = 'hyruletools:red_rupee', + sounds = default.node_sound_stone_defaults(), +}) +minetest.register_node("hyrule_mapgen:stone_with_bluerupee", { + description = "Buried blue rupee", + tiles = {"default_stone.png^hyruletools_bluerupee_ore.png"}, + groups = {cracky = 2, xp = 1}, + drop = 'hyruletools:blue_rupee', + sounds = default.node_sound_stone_defaults(), +}) +minetest.register_node("hyrule_mapgen:stone_with_greenrupee", { + description = "Buried green rupee", + tiles = {"default_stone.png^hyruletools_greenrupee_ore.png"}, + groups = {cracky = 2, xp = 1}, + drop = 'hyruletools:green_rupee', + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("hyrule_mapgen:dungeon_barrier", { + description = "Retro Dungeon Barrier", + tiles = { + "hyrule_mapgen_dungeon_barrier.png", + }, + groups = {cracky=3}, +}) + +minetest.register_node("hyrule_mapgen:dungeon_tile", { + description = "Retro Dungeon Tile", + tiles = { + "hyrule_mapgen_dungeon_tile.png", + }, + groups = {cracky=3}, +}) + +minetest.register_node("hyrule_mapgen:dungeon_brick", { + description = "Retro Dungeon Brick", + tiles = { + "hyrule_mapgen_dungeon_brick.png", + }, + groups = {cracky=3}, +}) + +stairs.register_stair_and_slab( + "dungeon_brick", + "hyrule_mapgen:dungeon_brick", + {cracky = 3, cools_lava = 1}, + {"hyrule_mapgen_dungeon_brick.png"}, + "Retro Dungeon Stair", + "Retro Dungeon Slab", + default.node_sound_stone_defaults() +) + +minetest.register_node("hyrule_mapgen:dungeon_barrier2", { + description = "Retro Dungeon Barrier 2", + tiles = { + "hyrule_mapgen_dungeon_barrier2.png", + }, + groups = {cracky=3}, +}) + +minetest.register_node("hyrule_mapgen:dungeon_tile2", { + description = "Retro Dungeon Tile 2", + tiles = { + "hyrule_mapgen_dungeon_tile2.png", + }, + groups = {cracky=3}, +}) + +minetest.register_node("hyrule_mapgen:dungeon_brick2", { + description = "Retro Dungeon Brick 2", + tiles = { + "hyrule_mapgen_dungeon_brick2.png", + }, + groups = {cracky=3}, +}) + +stairs.register_stair_and_slab( + "dungeon_brick2", + "hyrule_mapgen:dungeon_brick2", + {cracky = 3, cools_lava = 1}, + {"hyrule_mapgen_dungeon_brick2.png"}, + "Retro Dungeon Stair 2", + "Retro Dungeon Slab 2", + default.node_sound_stone_defaults() +) + +minetest.register_node("hyrule_mapgen:dungeon_torch", { + description = "Dungeon Torch", + drawtype = "plantlike", + visual_scale = 2, + walkable = false, + tiles = { + {name = "hyrule_mapgen_torch.png", animation = {type = "vertical_frames", aspect_w = 32, aspect_h = 32, length = 0.5,}, + }, + }, + inventory_image = "hyrule_mapgen_torch_inv.png", + wield_image = "hyrule_mapgen_torch_inv.png", + paramtype = "light", + light_source = 14, + use_texture_alpha = true, + groups = {choppy=1}, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.2, 0.5}, + } + }, +}) + +minetest.register_node("hyrule_mapgen:subrosian_tile", { + description = "Subrosian Tile", + tiles = { + "hyrule_mapgen_subrosiantile.png", + }, + paramtype = "light", + light_source = 10, + groups = {cracky=2}, +}) + +minetest.register_node("hyrule_mapgen:subrosian_sand", { + description = "Subrosian Sand", + tiles = { + "hyrule_mapgen_subrosiansand.png", + "hyrule_mapgen_subrosiansand.png^[colorize:black:50", + "hyrule_mapgen_subrosiansand.png^[colorize:black:20", + "hyrule_mapgen_subrosiansand.png^[colorize:black:20", + "hyrule_mapgen_subrosiansand.png^[colorize:black:10", + "hyrule_mapgen_subrosiansand.png^[colorize:black:60", + }, + paramtype = "light", + light_source = 10, + groups = {crumbly=1, oddly_breakable_by_hand=1}, +}) + +minetest.register_node("hyrule_mapgen:blue_ore", { + description = "Subrosian Sand", + tiles = { + "hyrule_mapgen_subrosiansand.png", + "hyrule_mapgen_subrosiansand.png^[colorize:black:50", + "hyrule_mapgen_subrosiansand.png^[colorize:black:20", + "hyrule_mapgen_subrosiansand.png^[colorize:black:20", + "hyrule_mapgen_subrosiansand.png^[colorize:black:10", + "hyrule_mapgen_subrosiansand.png^[colorize:black:60", + }, + paramtype = "light", + light_source = 10, + drop = "hyruletools:blue_ore", + groups = {crumbly=1, oddly_breakable_by_hand=1, xp=1, not_in_creative_inventory=1}, +}) + +minetest.register_node("hyrule_mapgen:red_ore", { + description = "Subrosian Sand", + tiles = { + "hyrule_mapgen_subrosiansand.png", + "hyrule_mapgen_subrosiansand.png^[colorize:black:50", + "hyrule_mapgen_subrosiansand.png^[colorize:black:20", + "hyrule_mapgen_subrosiansand.png^[colorize:black:20", + "hyrule_mapgen_subrosiansand.png^[colorize:black:10", + "hyrule_mapgen_subrosiansand.png^[colorize:black:60", + }, + paramtype = "light", + light_source = 10, + drop = "hyruletools:red_ore", + groups = {crumbly=1, oddly_breakable_by_hand=1, xp=1, not_in_creative_inventory=1}, +}) + +minetest.register_node("hyrule_mapgen:stalagtite", { + description = "Stalagtite", + drawtype = "plantlike", + tiles = {"hyrule_mapgen_stalagmite0.png"}, + inventory_image = "hyrule_mapgen_stalagmite0.png", + is_ground_content = false, + sunlight_propagates = true, + walkable = false, + paramtype = "light", + selection_box = { + type = "fixed", + fixed = {{-0.3, -0.2, -0.3, 0.3, 0.5, 0.3}} + }, + groups = {crumbly=1, oddly_breakable_by_hand=1}, + sounds = default.node_sound_stone_defaults() +}) + +minetest.register_node("hyrule_mapgen:stalagtite1", { + description = "Stalagtite", + drawtype = "plantlike", + tiles = {"hyrule_mapgen_stalagmite1.png"}, + inventory_image = "hyrule_mapgen_stalagmite1.png", + is_ground_content = false, + sunlight_propagates = true, + walkable = false, + paramtype = "light", + selection_box = { + type = "fixed", + fixed = {{-0.3, -0.2, -0.3, 0.3, 0.5, 0.3}} + }, + groups = {crumbly=1, oddly_breakable_by_hand=1}, +}) + +minetest.register_node("hyrule_mapgen:stalagtite2", { + description = "Stalagtite", + drawtype = "plantlike", + tiles = {"hyrule_mapgen_stalagmite2.png"}, + inventory_image = "hyrule_mapgen_stalagmite2.png", + is_ground_content = false, + sunlight_propagates = true, + walkable = false, + paramtype = "light", + selection_box = { + type = "fixed", + fixed = {{-0.3, -0.2, -0.3, 0.3, 0.5, 0.3}} + }, + groups = {crumbly=1, oddly_breakable_by_hand=1}, + sounds = default.node_sound_stone_defaults() +}) + +minetest.register_node("hyrule_mapgen:stalagtite3", { + description = "Stalagtite", + drawtype = "plantlike", + tiles = {"hyrule_mapgen_stalagmite3.png"}, + inventory_image = "hyrule_mapgen_stalagmite3.png", + is_ground_content = false, + sunlight_propagates = true, + walkable = false, + paramtype = "light", + selection_box = { + type = "fixed", + fixed = {{-0.3, -0.2, -0.3, 0.3, 0.5, 0.3}} + }, + groups = {crumbly=1, oddly_breakable_by_hand=1}, + sounds = default.node_sound_stone_defaults() +}) + +minetest.register_node("hyrule_mapgen:stalagmite0", { + description = "Stalagmite", + drawtype = "plantlike", + tiles = {"hyrule_mapgen_stalagmite0.png^[transformFY"}, + inventory_image = "hyrule_mapgen_stalagmite0.png^[transformFY", + is_ground_content = false, + sunlight_propagates = true, + paramtype = "light", + walkable = false, + selection_box = { + type = "fixed", + fixed = {{-0.3, -0.2, -0.3, 0.3, 0.5, 0.3}} + }, + groups = {crumbly=1, oddly_breakable_by_hand=1}, + sounds = default.node_sound_stone_defaults() +}) + +minetest.register_node("hyrule_mapgen:stalagmite1", { + description = "Stalagmite", + drawtype = "plantlike", + visual_scale = 1.5, + tiles = {"hyrule_mapgen_stalagmite3.png^[transformFY"}, + inventory_image = "hyrule_mapgen_stalagmite3.png^[transformFY", + is_ground_content = false, + sunlight_propagates = true, + walkable = false, + paramtype = "light", + selection_box = { + type = "fixed", + fixed = {{-0.3, -0.2, -0.3, 0.3, 0.5, 0.3}} + }, + groups = {crumbly=1, oddly_breakable_by_hand=1}, + sounds = default.node_sound_stone_defaults() +}) + +minetest.register_node("hyrule_mapgen:stalagmite2", { + description = "Stalagmite", + drawtype = "plantlike", + visual_scale = 1.5, + tiles = {"hyrule_mapgen_stalagmite2.png^[transformFY"}, + inventory_image = "hyrule_mapgen_stalagmite2.png^[transformFY", + is_ground_content = false, + sunlight_propagates = true, + walkable = false, + paramtype = "light", + selection_box = { + type = "fixed", + fixed = {{-0.3, -0.2, -0.3, 0.3, 0.5, 0.3}} + }, + groups = {crumbly=1, oddly_breakable_by_hand=1}, + sounds = default.node_sound_stone_defaults() +}) + +minetest.register_node("hyrule_mapgen:cicicle", { + description = "Ceiling Icicle", + drawtype = "plantlike", + tiles = {"hyrule_mapgen_icicle.png"}, + inventory_image = "hyrule_mapgen_icicle.png", + is_ground_content = false, + sunlight_propagates = true, + walkable = false, + use_texture_alpha = true, + paramtype = "light", + selection_box = { + type = "fixed", + fixed = {{-0.3, -0.2, -0.3, 0.3, 0.5, 0.3}} + }, + groups = {cracky=1, oddly_breakable_by_hand=1}, + sounds = default.node_sound_glass_defaults() +}) + +minetest.register_node("hyrule_mapgen:cicicle2", { + description = "Ceiling Icicle 2", + drawtype = "plantlike", + tiles = {"hyrule_mapgen_icicle2.png"}, + inventory_image = "hyrule_mapgen_icicle2.png", + is_ground_content = false, + sunlight_propagates = true, + walkable = false, + use_texture_alpha = true, + paramtype = "light", + selection_box = { + type = "fixed", + fixed = {{-0.3, -0.2, -0.3, 0.3, 0.5, 0.3}} + }, + groups = {cracky=1, oddly_breakable_by_hand=1}, + sounds = default.node_sound_glass_defaults() +}) + +minetest.register_node("hyrule_mapgen:roots", { + description = "Hanging Roots", + drawtype = "torchlike", + tiles = {"hyrule_mapgen_roots.png"}, + inventory_image = "hyrule_mapgen_roots.png", + is_ground_content = false, + sunlight_propagates = true, + walkable = false, + paramtype = "light", + selection_box = { + type = "fixed", + fixed = {{-0.3, -0.2, -0.3, 0.3, 0.5, 0.3}} + }, + groups = {crumbly=1, oddly_breakable_by_hand=1}, +}) + +minetest.register_node("hyrule_mapgen:roots2", { + description = "Hanging Root", + drawtype = "torchlike", + tiles = {"hyrule_mapgen_roots2.png"}, + inventory_image = "hyrule_mapgen_roots2.png", + is_ground_content = false, + sunlight_propagates = true, + walkable = false, + paramtype = "light", + selection_box = { + type = "fixed", + fixed = {{-0.3, -0.2, -0.3, 0.3, 0.5, 0.3}} + }, + groups = {crumbly=1, oddly_breakable_by_hand=1}, +}) + +tnt.register_tnt({ + name = "hyrule_mapgen:powder_keg", + description = "Powder Keg", + tiles = { + "hyrule_mapgen_keg_top.png", + "hyrule_mapgen_keg_top.png", + "hyrule_mapgen_keg_side.png", + "hyrule_mapgen_keg_side.png", + "hyrule_mapgen_keg_front.png", + "hyrule_mapgen_keg_front.png", + }, + radius = 3, +}) + +minetest.register_node("hyrule_mapgen:statue", { + description = "Gossip Stone", + tiles = { + "hyrule_mapgen_statue_side.png", + "hyrule_mapgen_statue_side.png", + "hyrule_mapgen_statue_side.png", + "hyrule_mapgen_statue_side.png", + "hyrule_mapgen_statue_side.png", + "hyrule_mapgen_statue_front.png" + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + groups = {cracky=1, falling_node=1}, + node_box = { + type = "fixed", + fixed = { + {-0.4375, -0.5, -0.1875, 0.4375, 0.4375, 0.25}, -- NodeBox1 + {-0.375, 0.4375, -0.1875, 0.375, 0.5, 0.25}, -- NodeBox2 + } + }, + on_rightclick = function(pos, node, clicker, item, _) + local wield_item = clicker:get_wielded_item():get_name() + if wield_item == "hyruletools:eye" then + minetest.set_node(pos, {name="hyrule_mapgen:statue_active", param2=node.param2}) + end + end +}) + + +minetest.register_node("hyrule_mapgen:statue_active", { + tiles = { + "hyrule_mapgen_statue_side.png", + "hyrule_mapgen_statue_side.png", + "hyrule_mapgen_statue_side.png", + "hyrule_mapgen_statue_side.png", + "hyrule_mapgen_statue_side.png", + "hyrule_mapgen_statue_active.png" + }, + drop = 'hyrule_mapgen:statue', + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + groups = {cracky=1, falling_node=1}, + light_source = 5, + node_box = { + type = "fixed", + fixed = { + {-0.4375, -0.5, -0.1875, 0.4375, 0.4375, 0.25}, -- NodeBox1 + {-0.375, 0.4375, -0.1875, 0.375, 0.5, 0.25}, -- NodeBox2 + } + }, + on_rightclick = function(pos, node, clicker, item, _) + local wield_item = clicker:get_wielded_item():get_name() + if wield_item == "hyruletools:eye" then + minetest.set_node(pos, {name="hyrule_mapgen:statue", param2=node.param2}) + end + end +}) + + +minetest.register_node("hyrule_mapgen:glowstone", { + description = "glowstone", + drawtype = "allfaces", + tiles = { + "hyrulemapgen_glowstone.png" + }, + use_texture_alpha = true, + groups = {snappy=3, oddly_breakable_by_hand = 1}, + paramtype = "light", + light_source = 14, + sounds = default.node_sound_glass_defaults(), +}) + +minetest.register_node("hyrule_mapgen:volvagia_spawn", { + description = "Volvagia spawner", + tiles = { + "hyrule_mapgen_vspawn.png" + }, + groups = {snappy=3, oddly_breakable_by_hand = 1}, + paramtype = "light", + light_source = 10, + sounds = default.node_sound_glass_defaults(), + on_construct = function(pos) + minetest.after(5, function() + minetest.add_entity({x=pos.x, y=pos.y+0.5, z=pos.z}, "mobs_loz:volvagia") + minetest.sound_play("BrassFleece", {gain=0.3}) + end) + end, + on_rightclick = function(pos, node, clicker, item, _) + local wield_item = clicker:get_wielded_item():get_name() + if wield_item == "hyruletools:sword" then + minetest.set_node(pos, {name="hyrule_mapgen:ganon_spawn", param2=node.param2}) + end + end +}) + +minetest.register_node("hyrule_mapgen:ganon_spawn", { + description = "Ganon spawner", + tiles = { + "hyrule_mapgen_gspawn.png" + }, + groups = {snappy=3, oddly_breakable_by_hand = 1}, + paramtype = "light", + light_source = 10, + sounds = default.node_sound_glass_defaults(), + on_construct = function(pos) + minetest.place_schematic({x=pos.x-6, y=pos.y-1, z=pos.z-6}, minetest.get_modpath("hyrule_mapgen").."/schematics/ganon_dungeon.mts", random, {}, true) + minetest.after(5, function() + minetest.add_entity({x=pos.x+3, y=pos.y+1, z=pos.z+3}, "mobs_loz:ganon") + end) + end, +}) + +minetest.register_node("hyrule_mapgen:bongo_spawn", { + description = "Bongo Bongo spawner", + tiles = { + "hyrule_mapgen_wspawn.png" + }, + groups = {snappy=3, oddly_breakable_by_hand = 1}, + paramtype = "light", + light_source = 10, + sounds = default.node_sound_glass_defaults(), + on_construct = function(pos) + minetest.after(5, function() + minetest.add_entity({x=pos.x, y=pos.y+1, z=pos.z}, "mobs_loz:bongobongo") + end) + end, + on_rightclick = function(pos, node, clicker, item, _) + local wield_item = clicker:get_wielded_item():get_name() + if wield_item == "hyruletools:sword" then + minetest.set_node(pos, {name="hyrule_mapgen:ganon_spawn", param2=node.param2}) + end + end +}) + +minetest.register_node("hyrule_mapgen:dodongo_spawn", { + description = "King Dodongo spawner", + tiles = { + "hyrule_mapgen_dspawn.png" + }, + groups = {snappy=3, oddly_breakable_by_hand = 1}, + paramtype = "light", + light_source = 10, + sounds = default.node_sound_glass_defaults(), + on_construct = function(pos) + minetest.after(5, function() + minetest.add_entity({x=pos.x, y=pos.y+1, z=pos.z}, "mobs_loz:dodongo_boss") + end) + end, + on_rightclick = function(pos, node, clicker, item, _) + local wield_item = clicker:get_wielded_item():get_name() + if wield_item == "hyruletools:sword" then + minetest.set_node(pos, {name="hyrule_mapgen:ganon_spawn", param2=node.param2}) + end + end +}) + +minetest.register_node("hyrule_mapgen:boulder", { + description = "Boulder", + tiles = { + "hyrule_mapgen_boulder.png", + }, + drawtype = "nodebox", + paramtype = "light", + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 1.0625, 0.5}, -- NodeBox1 + {-0.5, -0.375, -0.625, 0.5, 0.9375, 0.625}, -- NodeBox2 + {-0.625, -0.375, -0.5, 0.625, 0.9375, 0.5}, -- NodeBox3 + {-0.5, -0.25, -0.6875, 0.5, 0.8125, 0.6875}, -- NodeBox4 + {-0.6875, -0.25, -0.5, 0.6875, 0.8125, 0.5}, -- NodeBox5 + {-0.5625, -0.25, -0.5625, 0.5625, 0.8125, 0.5625}, -- NodeBox6 + } + }, + collision_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 1.0625, 0.5}, -- NodeBox1 + {-0.5, -0.375, -0.625, 0.5, 0.9375, 0.625}, -- NodeBox2 + {-0.625, -0.375, -0.5, 0.625, 0.9375, 0.5}, -- NodeBox3 + {-0.5, -0.25, -0.6875, 0.5, 0.8125, 0.6875}, -- NodeBox4 + {-0.6875, -0.25, -0.5, 0.6875, 0.8125, 0.5}, -- NodeBox5 + {-0.5625, -0.25, -0.5625, 0.5625, 0.8125, 0.5625}, -- NodeBox6 + } + }, + groups = {explody=1}, + sounds = default.node_sound_stone_defaults() +}) + +minetest.register_node("hyrule_mapgen:snowball", { + description = "Snow Boulder", + tiles = { + "default_snow.png", + }, + drawtype = "nodebox", + paramtype = "light", + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 1.0625, 0.5}, -- NodeBox1 + {-0.5, -0.375, -0.625, 0.5, 0.9375, 0.625}, -- NodeBox2 + {-0.625, -0.375, -0.5, 0.625, 0.9375, 0.5}, -- NodeBox3 + {-0.5, -0.25, -0.6875, 0.5, 0.8125, 0.6875}, -- NodeBox4 + {-0.6875, -0.25, -0.5, 0.6875, 0.8125, 0.5}, -- NodeBox5 + {-0.5625, -0.25, -0.5625, 0.5625, 0.8125, 0.5625}, -- NodeBox6 + } + }, + collision_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 1.0625, 0.5}, -- NodeBox1 + {-0.5, -0.375, -0.625, 0.5, 0.9375, 0.625}, -- NodeBox2 + {-0.625, -0.375, -0.5, 0.625, 0.9375, 0.5}, -- NodeBox3 + {-0.5, -0.25, -0.6875, 0.5, 0.8125, 0.6875}, -- NodeBox4 + {-0.6875, -0.25, -0.5, 0.6875, 0.8125, 0.5}, -- NodeBox5 + {-0.5625, -0.25, -0.5625, 0.5625, 0.8125, 0.5625}, -- NodeBox6 + } + }, + groups = {explody=1}, + sounds = default.node_sound_dirt_defaults() +}) + +minetest.register_node("hyrule_mapgen:bucket_milk", { + tiles = { + "mobs_bucket_milk2.png", + }, + drawtype = "mesh", + mesh = "bottle.obj", + paramtype = "light", + selection_box = { + type = "fixed", + fixed = { + {-0.25, -0.5, -0.25, 0.25, -0.4375, 0.25}, -- NodeBox1 + {-0.3125, -0.4375, -0.25, 0.3125, 0, 0.25}, -- NodeBox2 + {-0.25, -0.4375, -0.3125, 0.25, 0, 0.3125}, -- NodeBox3 + {-0.25, 0, -0.1875, 0.25, 0.0625, 0.1875}, -- NodeBox4 + {-0.1875, 0.0625, -0.125, 0.1875, 0.125, 0.125}, -- NodeBox5 + {-0.125, 0.125, -0.125, 0.125, 0.25, 0.125}, -- NodeBox6 + {-0.125, 0.25, -0.1875, 0.125, 0.3125, 0.1875}, -- NodeBox7 + {-0.1875, 0.25, -0.125, 0.1875, 0.3125, 0.125}, -- NodeBox8 + {-0.125, 0.3125, -0.125, 0.125, 0.375, 0.125}, -- NodeBox9 + {-0.125, 0.0625, -0.1875, 0.125, 0.125, 0.1875}, -- NodeBox10 + {-0.1875, 0, -0.25, 0.1875, 0.0625, 0.25}, -- NodeBox11 + } + }, + collision_box = { + type = "fixed", + fixed = { + {-0.25, -0.5, -0.25, 0.25, -0.4375, 0.25}, -- NodeBox1 + {-0.3125, -0.4375, -0.25, 0.3125, 0, 0.25}, -- NodeBox2 + {-0.25, -0.4375, -0.3125, 0.25, 0, 0.3125}, -- NodeBox3 + {-0.25, 0, -0.1875, 0.25, 0.0625, 0.1875}, -- NodeBox4 + {-0.1875, 0.0625, -0.125, 0.1875, 0.125, 0.125}, -- NodeBox5 + {-0.125, 0.125, -0.125, 0.125, 0.25, 0.125}, -- NodeBox6 + {-0.125, 0.25, -0.1875, 0.125, 0.3125, 0.1875}, -- NodeBox7 + {-0.1875, 0.25, -0.125, 0.1875, 0.3125, 0.125}, -- NodeBox8 + {-0.125, 0.3125, -0.125, 0.125, 0.375, 0.125}, -- NodeBox9 + {-0.125, 0.0625, -0.1875, 0.125, 0.125, 0.1875}, -- NodeBox10 + {-0.1875, 0, -0.25, 0.1875, 0.0625, 0.25}, -- NodeBox11 + } + }, + groups = {cracky=1, oddly_breakable_by_hand=1,}, + sounds = default.node_sound_glass_defaults(), + drop = "mobs:bucket_milk" +}) + +minetest.override_item("mobs:bucket_milk", { + on_place= function(itemstack, placer, pointed_thing) + if pointed_thing == nil then return end + local pos = pointed_thing.above + minetest.set_node(pos, {name="hyrule_mapgen:bucket_milk"}) + itemstack:take_item() + return itemstack + end +}) + +minetest.register_node("hyrule_mapgen:bucket", { + tiles = { + "bucket2.png", + }, + drawtype = "mesh", + mesh = "bottle.obj", + paramtype = "light", + selection_box = { + type = "fixed", + fixed = { + {-0.25, -0.5, -0.25, 0.25, -0.4375, 0.25}, -- NodeBox1 + {-0.3125, -0.4375, -0.25, 0.3125, 0, 0.25}, -- NodeBox2 + {-0.25, -0.4375, -0.3125, 0.25, 0, 0.3125}, -- NodeBox3 + {-0.25, 0, -0.1875, 0.25, 0.0625, 0.1875}, -- NodeBox4 + {-0.1875, 0.0625, -0.125, 0.1875, 0.125, 0.125}, -- NodeBox5 + {-0.125, 0.125, -0.125, 0.125, 0.25, 0.125}, -- NodeBox6 + {-0.125, 0.25, -0.1875, 0.125, 0.3125, 0.1875}, -- NodeBox7 + {-0.1875, 0.25, -0.125, 0.1875, 0.3125, 0.125}, -- NodeBox8 + {-0.125, 0.3125, -0.125, 0.125, 0.375, 0.125}, -- NodeBox9 + {-0.125, 0.0625, -0.1875, 0.125, 0.125, 0.1875}, -- NodeBox10 + {-0.1875, 0, -0.25, 0.1875, 0.0625, 0.25}, -- NodeBox11 + } + }, + collision_box = { + type = "fixed", + fixed = { + {-0.25, -0.5, -0.25, 0.25, -0.4375, 0.25}, -- NodeBox1 + {-0.3125, -0.4375, -0.25, 0.3125, 0, 0.25}, -- NodeBox2 + {-0.25, -0.4375, -0.3125, 0.25, 0, 0.3125}, -- NodeBox3 + {-0.25, 0, -0.1875, 0.25, 0.0625, 0.1875}, -- NodeBox4 + {-0.1875, 0.0625, -0.125, 0.1875, 0.125, 0.125}, -- NodeBox5 + {-0.125, 0.125, -0.125, 0.125, 0.25, 0.125}, -- NodeBox6 + {-0.125, 0.25, -0.1875, 0.125, 0.3125, 0.1875}, -- NodeBox7 + {-0.1875, 0.25, -0.125, 0.1875, 0.3125, 0.125}, -- NodeBox8 + {-0.125, 0.3125, -0.125, 0.125, 0.375, 0.125}, -- NodeBox9 + {-0.125, 0.0625, -0.1875, 0.125, 0.125, 0.1875}, -- NodeBox10 + {-0.1875, 0, -0.25, 0.1875, 0.0625, 0.25}, -- NodeBox11 + } + }, + groups = {cracky=1, oddly_breakable_by_hand=1,}, + sounds = default.node_sound_glass_defaults(), + drop = "bucket:bucket_empty" +}) + +minetest.override_item("bucket:bucket_empty", { + on_place= function(itemstack, placer, pointed_thing) + if pointed_thing == nil then return end + local pos = pointed_thing.above + minetest.set_node(pos, {name="hyrule_mapgen:bucket"}) + itemstack:take_item() + return itemstack + end +}) + +minetest.register_node("hyrule_mapgen:bucket_river_water", { + tiles = { + "bucket_river_water2.png", + }, + drawtype = "mesh", + mesh = "bottle.obj", + paramtype = "light", + selection_box = { + type = "fixed", + fixed = { + {-0.25, -0.5, -0.25, 0.25, -0.4375, 0.25}, -- NodeBox1 + {-0.3125, -0.4375, -0.25, 0.3125, 0, 0.25}, -- NodeBox2 + {-0.25, -0.4375, -0.3125, 0.25, 0, 0.3125}, -- NodeBox3 + {-0.25, 0, -0.1875, 0.25, 0.0625, 0.1875}, -- NodeBox4 + {-0.1875, 0.0625, -0.125, 0.1875, 0.125, 0.125}, -- NodeBox5 + {-0.125, 0.125, -0.125, 0.125, 0.25, 0.125}, -- NodeBox6 + {-0.125, 0.25, -0.1875, 0.125, 0.3125, 0.1875}, -- NodeBox7 + {-0.1875, 0.25, -0.125, 0.1875, 0.3125, 0.125}, -- NodeBox8 + {-0.125, 0.3125, -0.125, 0.125, 0.375, 0.125}, -- NodeBox9 + {-0.125, 0.0625, -0.1875, 0.125, 0.125, 0.1875}, -- NodeBox10 + {-0.1875, 0, -0.25, 0.1875, 0.0625, 0.25}, -- NodeBox11 + } + }, + collision_box = { + type = "fixed", + fixed = { + {-0.25, -0.5, -0.25, 0.25, -0.4375, 0.25}, -- NodeBox1 + {-0.3125, -0.4375, -0.25, 0.3125, 0, 0.25}, -- NodeBox2 + {-0.25, -0.4375, -0.3125, 0.25, 0, 0.3125}, -- NodeBox3 + {-0.25, 0, -0.1875, 0.25, 0.0625, 0.1875}, -- NodeBox4 + {-0.1875, 0.0625, -0.125, 0.1875, 0.125, 0.125}, -- NodeBox5 + {-0.125, 0.125, -0.125, 0.125, 0.25, 0.125}, -- NodeBox6 + {-0.125, 0.25, -0.1875, 0.125, 0.3125, 0.1875}, -- NodeBox7 + {-0.1875, 0.25, -0.125, 0.1875, 0.3125, 0.125}, -- NodeBox8 + {-0.125, 0.3125, -0.125, 0.125, 0.375, 0.125}, -- NodeBox9 + {-0.125, 0.0625, -0.1875, 0.125, 0.125, 0.1875}, -- NodeBox10 + {-0.1875, 0, -0.25, 0.1875, 0.0625, 0.25}, -- NodeBox11 + } + }, + groups = {cracky=1, oddly_breakable_by_hand=1,}, + sounds = default.node_sound_glass_defaults(), + drop = "bucket:bucket_river_water" +}) + +minetest.override_item("bucket:bucket_river_water", { + on_use = function(itemstack, placer, pointed_thing) + if pointed_thing == nil then return end + local pos = pointed_thing.above + minetest.set_node(pos, {name="hyrule_mapgen:bucket_river_water"}) + itemstack:take_item() + return itemstack + end +}) + +minetest.register_node("hyrule_mapgen:bucket_lava", { + tiles = { + "bucket_lava2.png", + }, + drawtype = "mesh", + mesh = "bottle.obj", + paramtype = "light", + selection_box = { + type = "fixed", + fixed = { + {-0.25, -0.5, -0.25, 0.25, -0.4375, 0.25}, -- NodeBox1 + {-0.3125, -0.4375, -0.25, 0.3125, 0, 0.25}, -- NodeBox2 + {-0.25, -0.4375, -0.3125, 0.25, 0, 0.3125}, -- NodeBox3 + {-0.25, 0, -0.1875, 0.25, 0.0625, 0.1875}, -- NodeBox4 + {-0.1875, 0.0625, -0.125, 0.1875, 0.125, 0.125}, -- NodeBox5 + {-0.125, 0.125, -0.125, 0.125, 0.25, 0.125}, -- NodeBox6 + {-0.125, 0.25, -0.1875, 0.125, 0.3125, 0.1875}, -- NodeBox7 + {-0.1875, 0.25, -0.125, 0.1875, 0.3125, 0.125}, -- NodeBox8 + {-0.125, 0.3125, -0.125, 0.125, 0.375, 0.125}, -- NodeBox9 + {-0.125, 0.0625, -0.1875, 0.125, 0.125, 0.1875}, -- NodeBox10 + {-0.1875, 0, -0.25, 0.1875, 0.0625, 0.25}, -- NodeBox11 + } + }, + collision_box = { + type = "fixed", + fixed = { + {-0.25, -0.5, -0.25, 0.25, -0.4375, 0.25}, -- NodeBox1 + {-0.3125, -0.4375, -0.25, 0.3125, 0, 0.25}, -- NodeBox2 + {-0.25, -0.4375, -0.3125, 0.25, 0, 0.3125}, -- NodeBox3 + {-0.25, 0, -0.1875, 0.25, 0.0625, 0.1875}, -- NodeBox4 + {-0.1875, 0.0625, -0.125, 0.1875, 0.125, 0.125}, -- NodeBox5 + {-0.125, 0.125, -0.125, 0.125, 0.25, 0.125}, -- NodeBox6 + {-0.125, 0.25, -0.1875, 0.125, 0.3125, 0.1875}, -- NodeBox7 + {-0.1875, 0.25, -0.125, 0.1875, 0.3125, 0.125}, -- NodeBox8 + {-0.125, 0.3125, -0.125, 0.125, 0.375, 0.125}, -- NodeBox9 + {-0.125, 0.0625, -0.1875, 0.125, 0.125, 0.1875}, -- NodeBox10 + {-0.1875, 0, -0.25, 0.1875, 0.0625, 0.25}, -- NodeBox11 + } + }, + groups = {cracky=1, oddly_breakable_by_hand=1,}, + sounds = default.node_sound_glass_defaults(), + drop = "bucket:bucket_lava", + light_source = 6, +}) + +minetest.override_item("bucket:bucket_lava", { + on_use = function(itemstack, placer, pointed_thing) + if pointed_thing == nil then return end + local pos = pointed_thing.above + minetest.set_node(pos, {name="hyrule_mapgen:bucket_lava"}) + itemstack:take_item() + return itemstack + end +}) + +minetest.register_node("hyrule_mapgen:bucket_water", { + tiles = { + "bucket_water2.png", + }, + drawtype = "mesh", + mesh = "bottle.obj", + paramtype = "light", + selection_box = { + type = "fixed", + fixed = { + {-0.25, -0.5, -0.25, 0.25, -0.4375, 0.25}, -- NodeBox1 + {-0.3125, -0.4375, -0.25, 0.3125, 0, 0.25}, -- NodeBox2 + {-0.25, -0.4375, -0.3125, 0.25, 0, 0.3125}, -- NodeBox3 + {-0.25, 0, -0.1875, 0.25, 0.0625, 0.1875}, -- NodeBox4 + {-0.1875, 0.0625, -0.125, 0.1875, 0.125, 0.125}, -- NodeBox5 + {-0.125, 0.125, -0.125, 0.125, 0.25, 0.125}, -- NodeBox6 + {-0.125, 0.25, -0.1875, 0.125, 0.3125, 0.1875}, -- NodeBox7 + {-0.1875, 0.25, -0.125, 0.1875, 0.3125, 0.125}, -- NodeBox8 + {-0.125, 0.3125, -0.125, 0.125, 0.375, 0.125}, -- NodeBox9 + {-0.125, 0.0625, -0.1875, 0.125, 0.125, 0.1875}, -- NodeBox10 + {-0.1875, 0, -0.25, 0.1875, 0.0625, 0.25}, -- NodeBox11 + } + }, + collision_box = { + type = "fixed", + fixed = { + {-0.25, -0.5, -0.25, 0.25, -0.4375, 0.25}, -- NodeBox1 + {-0.3125, -0.4375, -0.25, 0.3125, 0, 0.25}, -- NodeBox2 + {-0.25, -0.4375, -0.3125, 0.25, 0, 0.3125}, -- NodeBox3 + {-0.25, 0, -0.1875, 0.25, 0.0625, 0.1875}, -- NodeBox4 + {-0.1875, 0.0625, -0.125, 0.1875, 0.125, 0.125}, -- NodeBox5 + {-0.125, 0.125, -0.125, 0.125, 0.25, 0.125}, -- NodeBox6 + {-0.125, 0.25, -0.1875, 0.125, 0.3125, 0.1875}, -- NodeBox7 + {-0.1875, 0.25, -0.125, 0.1875, 0.3125, 0.125}, -- NodeBox8 + {-0.125, 0.3125, -0.125, 0.125, 0.375, 0.125}, -- NodeBox9 + {-0.125, 0.0625, -0.1875, 0.125, 0.125, 0.1875}, -- NodeBox10 + {-0.1875, 0, -0.25, 0.1875, 0.0625, 0.25}, -- NodeBox11 + } + }, + groups = {cracky=1, oddly_breakable_by_hand=1,}, + sounds = default.node_sound_glass_defaults(), + drop = "bucket:bucket_water" +}) + +minetest.override_item("bucket:bucket_water", { + on_use = function(itemstack, placer, pointed_thing) + if pointed_thing == nil then return end + local pos = pointed_thing.above + minetest.set_node(pos, {name="hyrule_mapgen:bucket_water"}) + itemstack:take_item() + return itemstack + end +}) + +minetest.register_node("hyrule_mapgen:magic_tree", { + description = "magic tree trunk", + tiles = { + "hyrule_mapgen_magic_tree_top.png", + "hyrule_mapgen_magic_tree_top.png", + "hyrule_mapgen_magic_tree.png", + "hyrule_mapgen_magic_tree.png", + "hyrule_mapgen_magic_tree.png", + "hyrule_mapgen_magic_tree.png" + }, + paramtype = "facedir", + groups = {tree=1, choppy=2, flammable=2, oddly_breakable_by_hand = 1,}, + on_place = minetest.rotate_node +}) + +minetest.register_node("hyrule_mapgen:magic_leaves", { + description = "magic leaves", + drawtype = "allfaces_optional", + tiles = { + "hyrule_mapgen_magic_leaves.png" + }, + groups = {snappy=3, flammable=1, leafdecay=3, oddly_breakable_by_hand = 1, leaves=1,}, + paramtype = "light", + walkable = false, +}) + +if minetest.setting_getbool("3d_leaves") then +minetest.override_item("hyrule_mapgen:magic_leaves", { + drawtype = "mesh", + mesh = "leaf.obj", + tiles = {"hyrule_mapgen_magic_leaves2.png"}, + paramtype = "light", +}) +end + +minetest.register_node("hyrule_mapgen:canopy_leaves", { + description = "canopy leaves", + drawtype = "allfaces_optional", + tiles = { + "default_leaves.png" + }, + groups = {snappy=3, flammable=1, leaves=1, oddly_breakable_by_hand = 1, not_in_creative_inventory=1}, + paramtype = "light", + walkable = false, +}) + +minetest.register_node("hyrule_mapgen:palm_tree", { + description = "palm tree trunk", + tiles = { + "hyrule_mapgen_palm_tree_top.png", + "hyrule_mapgen_palm_tree_top.png", + "hyrule_mapgen_palm_tree.png", + "hyrule_mapgen_palm_tree.png", + "hyrule_mapgen_palm_tree.png", + "hyrule_mapgen_palm_tree.png" + }, + paramtype = "facedir", + groups = {tree=1, choppy=2, flammable=2, oddly_breakable_by_hand = 1, not_in_creative_inventory=1}, + on_place = minetest.rotate_node +}) + +minetest.register_node("hyrule_mapgen:palm_leaves", { + description = "palm leaves", + drawtype = "plantlike", + tiles = { + "hyrule_mapgen_palm_leaf.png" + }, + inventory_image = "hyrule_mapgen_palm_leaf.png", + visual_scale = 6, + wield_scale = {x=0.5, y=0.5, z=0.5}, + groups = {snappy=3, flammable=1, leafdecay=3, oddly_breakable_by_hand = 1, leaves=1, not_in_creative_inventory=1}, + paramtype = "light", + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5} + }, +}) + +minetest.register_node("hyrule_mapgen:coconut", { + description = "coconut", + drawtype = "plantlike", + tiles = { + "hyrule_mapgen_coconut.png" + }, + wield_image = "hyrule_mapgen_coconut.png", + inventory_image = "hyrule_mapgen_coconut.png", + groups = {snappy=3, flammable=1, oddly_breakable_by_hand = 1, not_in_creative_inventory=1}, + paramtype = "light", + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.2, -0.3, -0.2, 0.2, 0.3, 0.2} + }, + on_use = minetest.item_eat(2) +}) + +minetest.register_node("hyrule_mapgen:wild_tree", { + description = "wild tree trunk", + tiles = { + "hyrule_mapgen_wild_tree_top.png", + "hyrule_mapgen_wild_tree_top.png", + "hyrule_mapgen_wild_tree.png", + "hyrule_mapgen_wild_tree.png", + "hyrule_mapgen_wild_tree.png", + "hyrule_mapgen_wild_tree.png" + }, + paramtype = "facedir", + groups = {tree=1, choppy=2, oddly_breakable_by_hand = 1, flammable=2,}, + on_place = minetest.rotate_node +}) + +minetest.register_node("hyrule_mapgen:wild_leaves", { + description = "wild tree leaves", + drawtype = "plantlike", + tiles = { + "hyrule_mapgen_wild_leaves.png" + }, + wield_image = "hyrule_mapgen_wild_leaves.png", + inventory_image = "hyrule_mapgen_wild_leaves.png", + groups = {snappy=3, flammable=1, oddly_breakable_by_hand = 1, leafdecay=3, leaves=1,}, + paramtype = "light", + walkable = false, +}) + +if minetest.setting_getbool("3d_leaves") then +minetest.override_item("hyrule_mapgen:wild_leaves", { + drawtype = "mesh", + mesh = "leaf.obj", + tiles = {"hyrule_mapgen_wild_leaves2.png"}, + paramtype = "light", +}) +end + +minetest.register_node("hyrule_mapgen:magicsapling", { + description = "Magic Sapling", + drawtype = "plantlike", + visual_scale = 1.0, + tiles = {"hyrule_mapgen_magic_sapling.png"}, + inventory_image = "hyrule_mapgen_magic_sapling.png", + wield_image = "hyrule_mapgen_magic_sapling.png", + paramtype = "light", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3} + }, + groups = {snappy = 2, dig_immediate = 3, flammable = 2, + attached_node = 1, sapling = 1}, +}) + +minetest.register_node("hyrule_mapgen:palmsapling", { + description = "Palm Sapling", + drawtype = "plantlike", + visual_scale = 1.0, + tiles = {"hyrule_mapgen_palm_sapling.png"}, + inventory_image = "hyrule_mapgen_palm_sapling.png", + wield_image = "hyrule_mapgen_palm_sapling.png", + paramtype = "light", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3} + }, + groups = {snappy = 2, dig_immediate = 3, flammable = 2, + attached_node = 1, sapling = 1}, +}) + +minetest.register_node("hyrule_mapgen:bigsapling", { + description = "Big Sapling", + drawtype = "plantlike", + visual_scale = 1.0, + tiles = {"hyrule_mapgen_big_sapling.png"}, + inventory_image = "hyrule_mapgen_big_sapling.png", + wield_image = "hyrule_mapgen_big_sapling.png", + paramtype = "light", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3} + }, + groups = {snappy = 2, dig_immediate = 3, flammable = 2, + attached_node = 1, sapling = 1}, +}) + +minetest.register_node("hyrule_mapgen:wildsapling", { + description = "Wild Sapling", + drawtype = "plantlike", + visual_scale = 1.0, + tiles = {"hyrule_mapgen_wild_sapling.png"}, + inventory_image = "hyrule_mapgen_wild_sapling.png", + wield_image = "hyrule_mapgen_wild_sapling.png", + paramtype = "light", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3} + }, + groups = {snappy = 2, dig_immediate = 3, flammable = 2, + attached_node = 1, sapling = 1}, +}) + +minetest.register_node("hyrule_mapgen:tower_spawner", { + description = "Tower Monster Spawner", + drawtype = "airlike", + walkable = false, + pointable = false, + groups = {not_in_creative_inventory=1}, + on_blast = function(pos, intensity) + end, + sunlight_propagates = false, + paramtype = "light", + buildable_to = true, + is_ground_content = false, +}) + +minetest.register_node("hyrule_mapgen:wall_ring", { + description = "Wall Ring", + tiles = { + "default_obsidian.png", + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + groups = {cracky=2}, + node_box = { + type = "fixed", + fixed = { + {-0.0625, 0.25, 0.3125, 0.125, 0.5, 0.5}, -- NodeBox1 + {0.125, 0, 0.375, 0.1875, 0.375, 0.5}, -- NodeBox2 + {-0.125, 0, 0.375, -0.0625, 0.375, 0.5}, -- NodeBox3 + {-0.125, 0, 0.375, 0.1875, 0.0625, 0.5}, -- NodeBox4 + } + }, + is_ground_content = false, + sounds = default.node_sound_metal_defaults() +}) + +minetest.register_node("hyrule_mapgen:barrel", { + description = "Barrel", + tiles = { + "hyrule_mapgen_barrel_top.png", + "hyrule_mapgen_barrel_top.png", + "hyrule_mapgen_barrel.png", + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.4, -0.5, 0.5, 0.5, 0.5}, -- NodeBox1 + {-0.5, -0.5, -0.5, -0.375, 0.5625, 0.5}, -- NodeBox2 + {0.375, -0.5, -0.5, 0.5, 0.5625, 0.5}, -- NodeBox3 + {-0.5, -0.5, -0.5, 0.5, 0.5625, -0.375}, -- NodeBox4 + {-0.5, -0.5, 0.375, 0.5, 0.5625, 0.5}, -- NodeBox5 + } + }, + groups = {choppy=1}, + sounds = default.node_sound_wood_defaults(), + is_ground_content = false, + on_place = minetest.rotate_node +}) + +minetest.register_node("hyrule_mapgen:bars", { + description = "Steel Bars", + tiles = { + "default_steel_block.png", + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + groups = {cracky=7,}, + node_box = { + type = "fixed", + fixed = { + {0.25, -0.5, -0.0625, 0.375, 0.5, 0.0625}, + {-0.375, -0.5, -0.0625, -0.25, 0.5, 0.0625}, + {-0.0625, -0.5, -0.0625, 0.0625, 0.5, 0.0625}, + } + }, + is_ground_content = false, + sounds = default.node_sound_metal_defaults() +}) + +minetest.register_node("hyrule_mapgen:drain", { + description = "Floor Drain", + tiles = { + "hyrule_mapgen_drain.png", + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + walkable = false, + groups = {not_in_creative_inventory=1,}, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.49, 0.5}, + } + }, + is_ground_content = false, +}) + +minetest.register_node("hyrule_mapgen:bones", { + description = "Bones", + tiles = { + "hyrule_mapgen_bones.png", + }, + inventory_image = "hyrule_mapgen_bones.png", + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + walkable = false, + groups = {not_in_creative_inventory=1,}, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.49, 0.5}, + } + }, + is_ground_content = false, +}) + +minetest.register_node("hyrule_mapgen:skull", { + description = "Skull", + is_ground_content = false, + tiles = { + "hyrule_mapgen_skull_top.png", + "hyrule_mapgen_skull_top.png", + "hyrule_mapgen_skull_side.png", + "hyrule_mapgen_skull_side.png^[transformFX", + "hyrule_mapgen_skull_back.png", + "hyrule_mapgen_skull_front.png" + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + groups = {cracky=1, oddly_breakable_by_hand=1, not_in_creative_inventory=1}, + node_box = { + type = "fixed", + fixed = { + {-0.3125, -0.5, -0.3125, 0.3125, 0.125, 0.3125}, -- NodeBox1 + } + }, + sounds = default.node_sound_wood_defaults() +}) + +minetest.register_node("hyrule_mapgen:chain", { + description = "Wall Chain", + tiles = { + "hyrule_mapgen_chain1.png", + }, + inventory_image = "hyrule_mapgen_chain1.png", + drawtype = "signlike", + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + groups = {cracky=3, not_in_creative_inventory=1,}, + sounds = default.node_sound_metal_defaults(), + is_ground_content = false, + selection_box = { + type = "wallmounted", + } +}) + +minetest.register_node("hyrule_mapgen:cracks", { + description = "Wall Cracks", + tiles = { + "hyrule_mapgen_cracks.png", + }, + inventory_image = "hyrule_mapgen_cracks.png", + drawtype = "signlike", + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + use_texture_alpha = true, + is_ground_content = false, + groups = {cracky=1, not_in_creative_inventory=1,}, + sounds = default.node_sound_stone_defaults(), + selection_box = { + type = "wallmounted", + }, + drop = "" +}) + +minetest.register_node("hyrule_mapgen:painting", { + description = "Castle Painting", + tiles = { + "hyrule_mapgen_painting.png", + }, + inventory_image = "hyrule_mapgen_painting.png", + drawtype = "signlike", + paramtype = "light", + visual_scale = 2.5, + paramtype2 = "wallmounted", + walkable = false, + is_ground_content = false, + use_texture_alpha = true, + groups = {cracky=1, not_in_creative_inventory=1,}, + sounds = default.node_sound_wood_defaults(), + selection_box = { + type = "wallmounted", + }, +}) + +minetest.register_node("hyrule_mapgen:painting2", { + description = "Knight Painting", + tiles = { + "hyrule_mapgen_painting2.png", + }, + inventory_image = "hyrule_mapgen_painting2.png", + drawtype = "signlike", + paramtype = "light", + visual_scale = 2.5, + paramtype2 = "wallmounted", + walkable = false, + use_texture_alpha = true, + groups = {cracky=1, not_in_creative_inventory=1,}, + sounds = default.node_sound_wood_defaults(), + is_ground_content = false, + selection_box = { + type = "wallmounted", + }, +}) + +minetest.register_node("hyrule_mapgen:chain2", { + description = "Wall Chain 2", + tiles = { + "hyrule_mapgen_chain2.png", + }, + inventory_image = "hyrule_mapgen_chain2.png", + drawtype = "signlike", + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + groups = {cracky=3, not_in_creative_inventory=1,}, + sounds = default.node_sound_metal_defaults(), + selection_box = { + type = "wallmounted", + }, + is_ground_content = false, +}) + +minetest.register_node("hyrule_mapgen:floor_light", { + description = "Floor Light", + tiles = { + "hyrule_mapgen_floorlight.png", + }, + drawtype = "nodebox", + paramtype = "light", + light_source = 5, + paramtype2 = "facedir", + walkable = false, + use_texture_alpha = true, + groups = {not_in_creative_inventory=1,}, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.49, 0.5}, + } + }, + is_ground_content = false, +}) + +minetest.register_node("hyrule_mapgen:floor_light2", { + description = "Floor Light", + tiles = { + "hyrule_mapgen_floorlight2.png", + }, + drawtype = "nodebox", + paramtype = "light", + light_source = 5, + paramtype2 = "facedir", + walkable = false, + use_texture_alpha = true, + groups = {not_in_creative_inventory=1,}, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.49, 0.5}, + } + }, + is_ground_content = false, +}) + +minetest.register_node("hyrule_mapgen:dungeon_carpet", { + description = "Dungeon Carpet", + tiles = { + "hyrule_mapgen_carpet.png", + }, + drawtype = "nodebox", + paramtype = "light", + walkable = false, + is_ground_content = false, + groups = {cracky=1, not_in_creative_inventory=1,}, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.4, 0.5}, + } + }, + drop = "" +}) + +if minetest.setting_getbool("lom_devmode") then +minetest.register_node("hyrule_mapgen:tower_toolchest", { + description = "Tower Toolchest", + tiles = { + "default_chest_top.png", + "default_chest_top.png", + "default_chest_side.png", + "default_chest_side.png", + "default_chest_front.png", + "default_chest_side.png", + }, + groups = {cracky=1,}, + drop = "", + on_rightclick = function(pos, node, clicker, itemstack) + if clicker:get_player_name() ~= "singleplayer" then + minetest.chat_send_player(clicker:get_player_name(), "Toolchests only work in Singleplayer") + elseif not minetest.setting_getbool("lom_devmode") then + minetest.chat_send_player(clicker:get_player_name(), "Requires 'lom_devmode' to be 'true'") + else + minetest.remove_node(pos) + minetest.env:add_item(pos, "hyrule_mapgen:tower_dev") + minetest.env:add_item(pos, "hyrule_mapgen:lightshaft") + minetest.env:add_item(pos, "hyrule_mapgen:lightshaft2") + minetest.env:add_item(pos, "hyrule_mapgen:dungeon_carpet") + minetest.env:add_item(pos, "hyrule_mapgen:dungeon_trapdoor") + minetest.env:add_item(pos, "hyrule_mapgen:tower_generator") + minetest.env:add_item(pos, "hyrule_mapgen:cracks") + minetest.env:add_item(pos, "hyrule_mapgen:chain") + minetest.env:add_item(pos, "hyrule_mapgen:chain2") + minetest.env:add_item(pos, "hyrule_mapgen:fog") + minetest.env:add_item(pos, "hyrule_mapgen:quartz_table") + minetest.env:add_item(pos, "hyrule_mapgen:goddess_statue") + minetest.env:add_item(pos, "hyrule_mapgen:candles") + minetest.env:add_item(pos, "hyrule_mapgen:bones") + minetest.env:add_item(pos, "hyrule_mapgen:skull") + minetest.env:add_item(pos, "hyrule_mapgen:drain") + minetest.env:add_item(pos, "hyrule_mapgen:floor_light") + minetest.env:add_item(pos, "hyrule_mapgen:floor_light2") + minetest.env:add_item(pos, "hyrule_mapgen:bars") + minetest.env:add_item(pos, "hyrule_mapgen:barrel") + minetest.env:add_item(pos, "hyrule_mapgen:painting") + minetest.env:add_item(pos, "hyrule_mapgen:painting2") + minetest.env:add_item(pos, "quartz:wall_immortal") + minetest.env:add_item(pos, "quartz:block_immortal") + minetest.env:add_item(pos, "quartz:pillar_immortal") + end + end, +}) +end + +minetest.register_node("hyrule_mapgen:dungeon_trapdoor", { + description = "Dungeon Trapdoor", + tiles = { + "hyrule_mapgen_trapdoor.png", + }, + drawtype = "nodebox", + paramtype = "light", + walkable = true, + groups = {not_in_creative_inventory=1,}, + on_blast = function(radius, intensity) + end, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.4, 0.5}, + } + }, + drop = "", + is_ground_content = false, + on_rightclick = function(pos, node, clicker, itemstack) + if clicker:get_wielded_item():get_name() == "loot:key" then + itemstack:take_item() + minetest.remove_node(pos) + return itemstack + end + end, +}) + +minetest.register_node("hyrule_mapgen:fog", { + description = "Fog", + tiles = {{ + name = "hyrule_mapgen_fog.png", + animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 1.0}, + }, + "hyrule_mapgen_trans.png", + }, + drawtype = "nodebox", + is_ground_content = false, + paramtype = "light", + light_source = 1, + walkable = false, + pointable = false, + use_texture_alpha = true, + groups = {cracky=1, not_in_creative_inventory=1,}, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.4, 0.5}, + } + }, + drop = "" +}) + +minetest.register_node("hyrule_mapgen:quartz_table", { + description = "Quartz Table", + tiles = { + "quartz_wall.png", + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = false, + groups = {cracky=4, not_in_creative_inventory=1}, + node_box = { + type = "fixed", + fixed = { + {-0.5, 0.4375, -0.5, 0.5, 0.5, 0.5}, -- NodeBox1 + {-0.4375, 0.25, -0.4375, 0.4375, 0.4375, 0.5}, -- NodeBox2 + {0.3125, -0.5, -0.5, 0.5, -0.4375, -0.3125}, -- NodeBox3 + {-0.5, -0.5, -0.5, -0.3125, -0.4375, -0.3125}, -- NodeBox4 + {-0.4375, -0.5, -0.4375, -0.3125, 0.25, -0.3125}, -- NodeBox5 + {0.3125, -0.5, -0.4375, 0.4375, 0.25, -0.3125}, -- NodeBox6 + } + }, + sounds = default.node_sound_stone_defaults() +}) + +minetest.register_node("hyrule_mapgen:candles", { + description = "Candles", + tiles = { + "hyrule_mapgen_candle.png", + }, + drawtype = "mesh", + mesh = "candles.obj", + paramtype = "light", + paramtype2 = "facedir", + selection_box = { + type = "fixed", + fixed = { + {-0.2, -0.5, -0.2, 0.2, -0.2, 0.2}, + } + }, + groups = {choppy=1, not_in_creative_inventory=1,}, + sounds = default.node_sound_wood_defaults(), + drop = "xdecor:candle 2", + is_ground_content = false, +}) + +minetest.register_node("hyrule_mapgen:goddess_statue", { + description = "Goddess Statue", + tiles = { + "hyrule_mapgen_goddess_statue.png", + }, + drawtype = "mesh", + mesh = "goddess_statue.obj", + paramtype = "light", + paramtype2 = "facedir", + selection_box = { + type = "fixed", + fixed = { + {-0.2, 0, -0.2, 0.2, 2, 0.2,}, + {-0.5, -0.5, -0.5, 0.5, 0, 0.5,}, + } + }, + collision_box = { + type = "fixed", + fixed = { + {-0.2, 0, -0.2, 0.2, 2, 0.2,}, + {-0.5, -0.5, -0.5, 0.5, 0, 0.5,}, + } + }, + visual_scale = 0.5, + is_ground_content = false, + groups = {cracky=1, not_in_creative_inventory=1,}, + sounds = default.node_sound_stone_defaults(), +}) + + +minetest.register_node("hyrule_mapgen:lightshaft", { + description = "lightshaft", + tiles = { + "hyrule_mapgen_lightshaft.png", + }, + drawtype = "mesh", + mesh = "lightshaft.obj", + use_texture_alpha = true, + walkable = false, + paramtype = "light", + paramtype2 = "facedir", + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0, 0.5, 0.5,}, + } + }, + visual_scale = 0.5, + is_ground_content = false, + light_source = 5, + groups = {not_in_creative_inventory=1,}, + sounds = default.node_sound_glass_defaults(), + drop = "" +}) + +minetest.register_node("hyrule_mapgen:lightshaft2", { + description = "lightshaft", + tiles = { + "hyrule_mapgen_lightshaft.png", + }, + drawtype = "mesh", + mesh = "lightshaft2.obj", + use_texture_alpha = true, + walkable = false, + paramtype = "light", + paramtype2 = "facedir", + selection_box = { + type = "fixed", + fixed = { + {-0.5, 0.5, -0.5, 0.5, 0.5, 0.5}, + } + }, + visual_scale = 0.5, + light_source = 5, + groups = {not_in_creative_inventory=1,}, + climbable = true, + is_ground_content = false, + sounds = default.node_sound_glass_defaults(), + drop = "" +}) + +minetest.register_node("hyrule_mapgen:double_ladder", { + description = "Double Ladder", + tiles = { + "default_wood.png", + }, + walkable = true, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + node_box = { + type = "fixed", + fixed = { + {-0.4375, -0.5, 0.4375, -0.3125, 0.5, 0.5}, -- NodeBox1 + {0.3125, -0.5, 0.4375, 0.4375, 0.5, 0.5}, -- NodeBox2 + {-0.5, 0.3125, 0.375, 0.5, 0.4375, 0.5}, -- NodeBox3 + {-0.5, 0.0625, 0.375, 0.5, 0.1875, 0.5}, -- NodeBox4 + {-0.5, -0.1875, 0.375, 0.5, -0.0625, 0.5}, -- NodeBox5 + {-0.5, -0.4375, 0.375, 0.5, -0.3125, 0.5}, -- NodeBox6 + {-0.4375, -0.5+1, 0.4375, -0.3125, 0.5+1, 0.5}, -- NodeBox1 + {0.3125, -0.5+1, 0.4375, 0.4375, 0.5+1, 0.5}, -- NodeBox2 + {-0.5, 0.3125+1, 0.375, 0.5, 0.4375+1, 0.5}, -- NodeBox3 + {-0.5, 0.0625+1, 0.375, 0.5, 0.1875+1, 0.5}, -- NodeBox4 + {-0.5, -0.1875+1, 0.375, 0.5, -0.0625+1, 0.5}, -- NodeBox5 + {-0.5, -0.4375+1, 0.375, 0.5, -0.3125+1, 0.5}, -- NodeBox6 + } + }, + collision_box = { + type = "fixed", + fixed = { + {-0.4375, -0.5, 0.4375, -0.3125, 0.5, 0.5}, -- NodeBox1 + {0.3125, -0.5, 0.4375, 0.4375, 0.5, 0.5}, -- NodeBox2 + {-0.5, 0.3125, 0.375, 0.5, 0.4375, 0.5}, -- NodeBox3 + {-0.5, 0.0625, 0.375, 0.5, 0.1875, 0.5}, -- NodeBox4 + {-0.5, -0.1875, 0.375, 0.5, -0.0625, 0.5}, -- NodeBox5 + {-0.5, -0.4375, 0.375, 0.5, -0.3125, 0.5}, -- NodeBox6 + {-0.4375, -0.5+1, 0.4375, -0.3125, 0.5+1, 0.5}, -- NodeBox1 + {0.3125, -0.5+1, 0.4375, 0.4375, 0.5+1, 0.5}, -- NodeBox2 + {-0.5, 0.3125+1, 0.375, 0.5, 0.4375+1, 0.5}, -- NodeBox3 + {-0.5, 0.0625+1, 0.375, 0.5, 0.1875+1, 0.5}, -- NodeBox4 + {-0.5, -0.1875+1, 0.375, 0.5, -0.0625+1, 0.5}, -- NodeBox5 + {-0.5, -0.4375+1, 0.375, 0.5, -0.3125+1, 0.5}, -- NodeBox6 + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.4375, -0.5, 0.4375, -0.3125, 0.5, 0.5}, -- NodeBox1 + {0.3125, -0.5, 0.4375, 0.4375, 0.5, 0.5}, -- NodeBox2 + {-0.5, 0.3125, 0.375, 0.5, 0.4375, 0.5}, -- NodeBox3 + {-0.5, 0.0625, 0.375, 0.5, 0.1875, 0.5}, -- NodeBox4 + {-0.5, -0.1875, 0.375, 0.5, -0.0625, 0.5}, -- NodeBox5 + {-0.5, -0.4375, 0.375, 0.5, -0.3125, 0.5}, -- NodeBox6 + {-0.4375, -0.5+1, 0.4375, -0.3125, 0.5+1, 0.5}, -- NodeBox1 + {0.3125, -0.5+1, 0.4375, 0.4375, 0.5+1, 0.5}, -- NodeBox2 + {-0.5, 0.3125+1, 0.375, 0.5, 0.4375+1, 0.5}, -- NodeBox3 + {-0.5, 0.0625+1, 0.375, 0.5, 0.1875+1, 0.5}, -- NodeBox4 + {-0.5, -0.1875+1, 0.375, 0.5, -0.0625+1, 0.5}, -- NodeBox5 + {-0.5, -0.4375+1, 0.375, 0.5, -0.3125+1, 0.5}, -- NodeBox6 + } + }, + sounds = default.node_sound_wood_defaults(), + climbable = true, + is_ground_content = false, + groups = {choppy=1, not_in_creative_inventory=1}, + drop = "default:ladder_wood 2" +}) + +minetest.register_node("hyrule_mapgen:tower_dev", { + description = "Tower Builder Node", + tiles = {"hyrule_mapgen_dev.png",}, + drawtype = "glasslike", + walkable = false, + groups = {cracky=1, not_in_creative_inventory=1}, + on_blast = function(pos, intensity) + end, + sunlight_propagates = false, + is_ground_content = false, + paramtype = "light", + on_rightclick = function(pos, node) + minetest.place_schematic({x=pos.x-15,y=pos.y+3,z=pos.z-15}, minetest.get_modpath("hyrule_mapgen").."/schematics/tower_ground.mts", 0, {}, true) + end, +}) + +minetest.register_node("hyrule_mapgen:tower_generator", { + description = "Tower Generator node", + tiles = {"hyrule_mapgen_dev.png^[colorize:blue:100",}, + drawtype = "glasslike", + walkable = false, + pointable = true, + groups = {not_in_creative_inventory=1}, + on_blast = function(pos, intensity) + end, + drops = "", + sunlight_propagates = false, + is_ground_content = false, + paramtype = "light", +}) diff --git a/mods/hyrule_mapgen/schematics/tower_1.mts b/mods/hyrule_mapgen/schematics/tower_1.mts new file mode 100644 index 0000000000000000000000000000000000000000..7f2d609245aacbdede7ca12ef591ce4bb04a791c GIT binary patch literal 2096 zcmZuvc~leU7oDOAf>^37<;NmOX;qBUlnR1{qJr28SfQd2NGF*g37KT#%p?#fMJuZn zXsZGuODom|gs=t6A__uLwy+2U3rf|9ltog(9})tM0>=|i=a2c$cfa@Ez4yK6<>%`K zEC<#BD}i;V0eTNVnl=!4MFK_DvQHGF#<#YqeYm%E42!b(c7>YuGg*qj~=Q3cFOC>On2caki ztW|%fGeH&?Fi{6_7MIQ9GF}TaReyp|zDhiGf${A;gvDSII1>yZ$SQFvHr(mepStK9 z1gvmE)o0x4^|1)Q)$COZc}$kd5*IL5XD84wl}`v30ESE62^6CR&M?Z27c>I8(n>V$zhAq~VZ7y;f_N8k7abY2tEnJ`WO=IT)kVpVfj%~GWj zFkX_(fpM71Lve!ox)7khkVl{>f;*`efD9N3U>t{4Hwar81(kt-I1ZSpGb|044q`l* z0Nz_7prI%mXTnGbV5puzSFIWX<8L#q35+fFVVau+4SS|q#NhF zw_BHwdE|vX_5Jh4yP_Xlyee{H?rO{Uqml!Kl%|#yHoa#GXu=n8j@=7ml5;Q#sKHNN z?F!mIG9``AFK%NW@8w3Enebmm5&h~SIj;QlM3nQBhoK$CDnd4Fd?AgOg%z|Zgz;te zj|Xzf&Zm%oceT$A4Qw#GCht+^>_OykWAghcYid06Q$K5=HwXXy{~hJ^5ggM|?~T2O zrL4OTQ*3CuPsB#kl{ULcoF|X2Z>yq+r(5QbDBVkEZ%2_uWdtWTf3V1QnrwMYSumB+BVN*FD?1nkJ1I zX@#k};k##X{Wil>y*0MM=W;XU+e)KPC`yJ}8Q;07@8- zDf>(W<>;n!L6rg7vG$Y0nu49SRde%J{@J3t*5kV}l@2FJX&8LmA#(M)a-B?-S?Q{) zdG0G*?pMAvWk{|c)KGN)P@us`%Qx!LauByDK68CI*SFgFYvgQUsTSfzS{0ctkjVRo zqx;y;vEO^4Nw>vA-8*pc@* z$)dmyCqB(hkJK!D?(oNx;J}Q6W@WgbI$(D4K$6H_Le>ivI&YG3{B$FepSpXx3`s}i z8&2y@STt-CE63}zkBYFMzM0zw&a|2i_miGSIBAM{YQ<={IL0;KQ{tA^sM_m;{!+Z% zYHVc2>PGJh(_(tx5o@EE=;a#6KDX4@{?8+3$KdY|azjKj#0TgHccj(&MauKv+xXy5 zcj>paJ4BU5rT5KsAf6YlfNa5UDA&$(#qdt_3oTLh-?}MT_LFf{?`-W%*RnZwc)kM( zvCBva?#M7N`_KVEUW=AkW{Ep8p$v*wz1QTSy8t&4(Y5B;&!)Oqp?dBGV6 zlP_go?5qwbQYyry+kM;j#ym9Z|HpCG?3>=h%_|*subJi8Q@cr>G(Q`P;@ece{ffIm zF6(90dFkKqzqB^@n@wUgg$(+1ZVajBy5cZ7ER08b*>JBkCiF@uKkm+MQv8dfr=RE1 z>f&h4V5^i?Gg3TjSeAP@E78a`aYAfTnfb|(EEac6)cCQ9)EfTrg)2UGxvs{8^*vEi z&A6?t%Sm(NwZlcVtwrS~wK~P_Ti7P;?yW1`iZ$KWUpvI@$sW4iKlUqmx}lL2_bh=j w$baVT?9G5kg!9DqfzLlY=ChQCU=)lNz6!SdgBYXO)y#RFs;-Ac88IoROHBXT-o;k&>F6 zUu2b>n3s~1${>`InwD6aQ({$;UzD5?4>A`+V^Lyqb}@r6Ol3}DN=j-`e0hF;3WFS~ z9Vw-G>8bg7@g+rx1u6OYMGWGo@+JA@K%FV6WemJ9)4=vJ2&1Y4yOlu#RWK(rJ)@*J zBQdRnK^9d8Vl2?>sYQuE^BBZohUcahr^XlL7nj6?H8Y5!>Vt$qF@rR!a7un@5->C& z{$!9ul|;D0h=C&~KflB(JGHW6&fB@&lV%(6xXNDMGCOVZ+t1a%U(eOq@X`5`_l&J) zZD;a{6b7oKNOQ~!&3ZWHYvIKwLF_pJ-d8snhxyHmzrJ7IUB-8fb?ter+VNqMc1_ko-GKgh-ESN+`4>zQ)1AW%cKDppWkFXJ4DjOUsTnxqH6KY?vsALD?b(=o%PGAHSF~2r8Vo6o;iMB4vzBF z&kMZ&6c^s`mfhf}8+!U&gy4S$EWklpW#9XS&+C6BpRJp?B(YdkDZg`DrrunZi9GLr z-TjvN>_>Qa;Lc^|62sH$gJp$`5)Up9;Oe&GWw1{YW>pd-A#{0+n`|muz-}7Cb=Q(>l-1h=A0ApYl zU>rVvfK9-3kbwevM|dF04JD9agc3wzFqsI-1z`a96J|4D7(^%VML%%?2*VSo0Tl`W zc`%niWuRP=fWf7cXeh|xYy@=1Z@zz%tfm5+rUKRz02^e7pgazM!)AimFv#L^2uvP_ zPJwwGE`$P$CgEh52XWYpAZUXAqvJ-vkd9S>Arcd0(;yas3I*{<0Wc!KD(FqA@DpA* z38rB$19&VNFgutEQ4o~C;D-PU$G3t(DiuOW0tBG~MpOD=BnV-VxG2b`B8X-)3do0k zHq+Ilp_mO*cd!JOXg;DMJTkV?kM2_!gc&qCmqP~wxKUP1DG51Jv1Bwhl{WvV6tl8_k&Otpr=`o0x@8W z4=k8elL8}r%!`GZGoc8=|qC~=i!~_|c}oTWL|gt&nIIEx8!AQBtla7o{9f!Q!N zJAp!nI9y=P_#-X~LBKN2V%%>bBw?Y1P!JOwm}1M1YbwMC=1-Q3hr%Ji%0hG2A_ezpoVWeCK<)Zpyt2Dp#5NIpiGGR6UB|!o3JAQ2D!k3 zZ}GvbLpYoe3PQ#b8=N`lAJ5ORnZNAheW~-mSQUF^M{YK*WVR@Kv%dBh=o24tOy{=; z=SYjDZ!DkbpwCEoHY0)}V^|*8@)Z|jA##^9@G@iN>rMTVrWFZyi-hub1I0Ls`t{8n z)Ku^2=`Ol_k5TsGvZY=a{coWmQ%Lf-Bf|;+S_~B%`LSP3{)w-$m1-URYpLG`K94 zUKQtr$FqgDMhfMbQ|&IbE9%Xs4=6pgZKI2C_eAuX%+T5elm$DI4}>xxI^>rVOGwpZi})B3A3msPC~bZsy3!HMQbRVDC+ ztjB2`Po$&U%5}rWg(IK;LY5IPWum!gY)|+ z63Bi{kf@N{nC|qHu|Mq5l$q}i(2*|>knodRpj}Z zF&M4D!Gutw?*!?N3PcuKy0va$PS<1W&H`4ea86L*1P1^z!&HJjyL0*MW=e*nehbM zwk+m#vm|`zmGH~8D!-Y+G=J%!S#v?6LNaPOSDdo7R6IcPZe>LbZ!kg1v{EIX=k(%7 z`p^P6`aLdFNkpo}CC&ADisK_HOu{ge6cHyVA18cv$nC}ku}8hdn9^~2u}A#s@+G{@YDEJY=X($yW^4)z&#OJS@J@I7d9%|uzRdOr#3f+a zGF*xHyrr!*F7@>`8gjU!-}*j#>2Q3ttlO~dNlSnQKED2mzqpX&)bD3>VJV*^H!tHG zT)f)j*|C=G-!(^hDNEa~vY1g4e7d^ni?~%+H2QZM&Ms5t#jP_q!5EduRUJopMF)gNm2yV?#pK^Axy={_%)&6N$Kw6lV9Zfcy3mZMdt;6aEW=XLCC-~E@=5XWSGr04FXs2*_`!&2wEI1JM&*E~y$HY5I zDEIp1uN84)#6Be@S8Sm0y7Tc*b?X~joqr>dqgJ*VSu%3vTav^7Id#_a$8I@RZ;v|I zVr+V@FwAtct9o^Aze=sU%erv0dp*9qCK`8lrS)SyJu*-Iiz<&7Hb(diKC|3y>Xoh1 zMbfQK;5$by>MA2-dvl)i1mPjtQId;~3WimW!M2B0py9mU*bGb6-IshY5RAv5wi*Yc?vISr?0(BnRJbOHpKD-z*Q$SPRLLITF=c z=IKI@eaURE$E|8%Ot&KRH4*hrNVl)L6ke{gLsfUI)Bzu`yvhEs(`=Vr{H`YAP?=7T zwrHPZ+lAkhSM^I;drT~5HHJ*nnU~s~L4KcS_NAi}CTQh<6wKWmslK=4YZqtU(dzx% zp8j4q7Ef<9d)Bt~xo~GNY#E4AEmeiW(_xN|8J5{W`q?5JpjEI@< zmce#xy6^1Di7-+ohJuUr4-9;8E|BN4@#gTF^*b9A6Cx8&nQb7Io--Ic;d>>?Q1=h} z8k3u){M~{kwnS`Yb>hy#W3CNH+YYAk_iC~1Ru1&8?u>c)aSb~fmVjruz6P_@qS F{{UT;L_Yuk literal 0 HcmV?d00001 diff --git a/mods/hyrule_mapgen/schematics/tower_4.mts b/mods/hyrule_mapgen/schematics/tower_4.mts new file mode 100644 index 0000000000000000000000000000000000000000..3e428df1f091dc3fdd3b4e9c31deae991182a854 GIT binary patch literal 1792 zcmZuudpJ~S96l90n-yh%ieDCvq@B9AV&&$W#3z!9% z0|dZ4_VWUk05f401}qBW!x$b#3P8E^5QxQQb1@u70h3Q~C<{el>Nd$1z&L^hYWo3Zf7D^JwCOn0HRxERHVFz@ z0}DQB2oM-&BG`u}3{Wl?Cxsx9z>=vBANt@i;XoYt<^zY$M0hx0HkI`;ptflQgK_Q9 z(_%8X`~dA|e5?&vI`!=r2b+kj7YCC>xfZj%*b0(UDZ9O=XQ1e%pR3NySwEUQ_OH7k ziXi`S#%-P1k@@i#yK`JRGLLw*_-`({GkD6kkUB9)`iJ>52tQQaT;{EC-&JjOAYEN; zz25G2UEomg?5uZ}p8438BjyUt!#DQ+%FHv@mm6HSYmHup)j{G)YuV}&INCvo8aHEu&h;Jy7?gJA715qns(Y( zT{?UlG?jDYl-6BfC*pn6*EF-xj-y)Bl%_7bmM5C$wmv-Zif-q_%%Sm#C_+imsVpNW z8a-w+8FU!!?~hKoe(&-cGrkOzC_);``uBrXYH^O}Rg24u9t{QUp8u$|AeD;kEn{cj zPteod`_xr(3N7LvY0ngsF4nEj43Y!AtU8@4udc0d|>+0pJ1R|@zO4Yw?W zx_f)uO16rHE0P`@Q}QKhjQ>eN2MTGLA>26in(g7H0J9m z)H9MKE-b2N()rlu%}rH|4a&NGer4bir_)*=wsscTzKwqPv3!%zJD`2;#*$md71Zj0 z`qv9uWwjfe@`$%v0(VD_#3<89L>sYRM4e-Uq&nk!O;)c%U!1XEXOi=21uN^h4)?H>64me0K{ z#Mi0b+i$(^YI(i6kqx_cwaF%PT3I>6hGu2Opt*dMf{W$S^=9t=7g}Q!;}j*OM3p(dDbO@ zh1IG)d3rG6?UQt#JJL`L^k&c811;xWk*C?TLhSZbA%h4Igs`a!XCYDy%iCQbq zf(wfJ#|z&SBqfs%i6T>>g0;^tXcSMCXGy+lQg7Cvuo;%y>ttT9KxxUy6S1>}k-@AP zabG|xwaJjkMpnW@mlhB?RU$Z08@x;0IL1&+SQSB8; zFilstt?__-Z3VH^d{my`8&|GNCUc&gyz3$E%jXadzA>?NAg%ks!+PPXP4_@WC+7|@ zR^GDH+HLN6`do@jQ(D-G9F8hI)v(Q#_B{M)O%-M=nGt4~_@b>5HF5=y_b{nx4_wyQ zdUd;m$vQ1H9Tt}|Wbv1EkCp4ztn5r*9PTj|ozwj1@AhYz5xFO84@&}uPUz_;IIYmR RDzt>p5KSg#)|rjP{tpVxNm>8^ literal 0 HcmV?d00001 diff --git a/mods/hyrule_mapgen/schematics/tower_5.mts b/mods/hyrule_mapgen/schematics/tower_5.mts new file mode 100644 index 0000000000000000000000000000000000000000..026e6b058678244321137fe19e4f289be4734adc GIT binary patch literal 1784 zcmZ{idpJ~S9LLW-@mO7!$tC0x+Cs)IYI@jc7ol{qX^bISF6YddJ?9LeNEf9^ zS4+8+gpk>ukwJKLnPfxJG9#DRl(ZyKl1ti=Y!A=w`@DaBzwht&`@Wy|-L%bb6QBl| z0h)kW^z;IZfjJPD0Q7zpK?D`y45N53ALL>fPEZgE=zo%hToi?f&${j>Jq$w8&#EaK z*$IhI%9)Lj2tk1)Bw&*iEX!G6$36oI+G{_t3pkY{#;}*GsUM-6fOkjPfwbBm(O6P zTTF^`Q5>h7gE+c7`Z=cj*p=p9Z2HfMHU@@1)koY`6^zJH~RcDr! z4{T}3m0DqCI#sOjB?^xKZln|#u*`_k_xZ`jm(Wu3C4Aiu`5meZA*m9#s}NRn8k|3|8{%QWA| ztJXu)M%I|2E8J)W$#%SOO}cEixpRm)x@Bk+7Vm-;wcjqYGb`?2E|F-JbuZ>&d&!Kk z*nl#ITZzjZrFGDLhN#i)QV|oTsr%JD=w+=P)V3{pHwNdMnZ&Xpw~CWv()24@VQN6G z57NI4OV3kh`YHbOR5rN(B(^n{Cc^X9(eKZx=4&6L4=-XhIyG*q+4BDH#zCLx0_ICE zdSDUr-0xk;3AxQ3sd^1j<8aT5Chxn+yZg=1VB+bf)y#Ic3-n%>Zu-cu$1Cfau55h+ zyv~K$06)U!NSIvFExY%~LF`Tq7oV_I16-7}0mHRor{9*_h=pO7}?N*&huS_pd6^ zlbggVPI>w8M&68i`iXIuSVchvv**zdeu{mp<1xG#W%Slmy~6Ap;q#DH3D!^eF9?%? zx|^fRuNw8Ro7O+Re8E))|HaFhD60-7w!2^JFE`37Vs>^}P4u{lyO-HL4fw7)e@}`m ze>gMI7riOu4Pd3MHWMqe^Q{XrWL*llUA>y$Dq)yCqv!IR__EBp33u5Vaa$XdlbBj7 z&qW?}ET~qvHPrm@K@pzBop=aGnfFwU{pfqe_w>y+A2j#1EA1fUVZ)Cs!^g2E)&Cpm zw;7DAZ@p@_*j|)hKAcXrXr*b4CwQB%l9);H{`wybVxj-sXBgf)`pp&R3t2+*^>T$H zEog0vjFmRF(8J+jUW=fzXIB$!d%>EwLd$Vz-}fc*mP?19Iv1A8HL~19nOG(>U9tL# z+GSGz+@X|aUH|A6rRxqH0)ui}d>15=HOcWOpyG|U1ZUZX#SbmxQ(CXG7#d~BsgXwx zJZN5f&<(m#_;X#Bci)k=QwbGjw)OPa9gCMJI1>Lsi-K#mpohEB#sPV4G|g~#@r!W_ z2d`6aXQk3S)TDLX(zjn)6I)_DZc1E5&F`i=*`kVkCP1nN3;6l zjGX!mdP}ncmP?t-oR&m2OIe-Qb^1=bbM{%4ABtP!$|+%5URqzE@Y23#xBd)Lc`Mp6 HZKCrZC(kq$ literal 0 HcmV?d00001 diff --git a/mods/hyrule_mapgen/schematics/tower_6.mts b/mods/hyrule_mapgen/schematics/tower_6.mts new file mode 100644 index 0000000000000000000000000000000000000000..2f8e9ec326087e86432b2beeab76dd155b2df003 GIT binary patch literal 2087 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 literal 0 HcmV?d00001 diff --git a/mods/hyrule_mapgen/schematics/tower_8.mts b/mods/hyrule_mapgen/schematics/tower_8.mts new file mode 100644 index 0000000000000000000000000000000000000000..1cf3f1c1e99b63c5b1ec1f545a520956679e8b67 GIT binary patch literal 1972 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 literal 0 HcmV?d00001 diff --git a/mods/hyrule_mapgen/schematics/tower_ground.mts b/mods/hyrule_mapgen/schematics/tower_ground.mts new file mode 100644 index 0000000000000000000000000000000000000000..aee6fa91c77a217131a8bad4cb8f4d0d02d0f186 GIT binary patch literal 3618 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 literal 0 HcmV?d00001 diff --git a/mods/hyrule_mapgen/schematics/tower_template.mts b/mods/hyrule_mapgen/schematics/tower_template.mts new file mode 100644 index 0000000000000000000000000000000000000000..00d11dacbe5c03c696f0636f07de0b745e8f0b19 GIT binary patch literal 809 zcmeYb3HD`RVUTCwWRS0i0U(DtF|&w4w6HX>sHDm&DJMTUJ3ccvH@~PPF^546DqN76 zlapA45Ep@pmnY`rAVh^zQqvMkb4sjo5>rxAi{i`k^HUh)GAfHob5i4T6ARK)^Q=-z z^U_oE^Wsa25(`rD^NSdGVVX+vi;^=Kq|ub;mnH!Q*}PmXs^+>o8Qhxta=td{c=*p?|D|$ zan?8fZnM|@`*(eDmFd^GUwd_*?Rae$s(6I!` z^4gZQn?XjYL8a{eVo2EqN4=XWTzu?arn~p)oojgB&NKdgVfmllRP~4X^XtF=+uQY~xi9^9T8`cHT=^|a|F11vbH8{o@9pg0 zX=jdzGoXQ<#-hFM^XfmnzgVSs^1xa4jeF}#q_*GOwIQp--lKomU`S{SSYf&nYU5P}a95)(t>f{nl6-n9$= z$$w$v*2EQo1u+Jl&mW}`*Virb$#C2@}BTE1P%(n2*dq?YJAEyRI zmp#GwA}Ag32=DMYn9ad#&mSVQxpaUcRxRj3?}F=_E|hh3zIE~febe2lQ)JZzFA9Va z<`kJofD%<|t`>AZ0VV2267m1D6_HTH|8)o9RVHM{Ki|P!Q(HaFKV@cnFtVxDzI!O{ zq|iL`@c3-uqOyl#hGIDJ)^|XO3QANEEgtk`WC@5C2PG=Fp(50rzZ?R0wB63v$&*C6_E4(jf-s=h%i}`l?s5D0}CCVQ|C!0 z8?5u29RqROL0nv31JDy@>mtDM;Q&Zmxo$F>XUygqVmcY~Gg=X^ss|VOCk6wA5i1M%p<)gtA8;o2szUi9i2=;=Qd`gPs#{A-9*_xRpxJh@}w+9uBp*EaFJe$7DZ z{1pAGMcSId>51Q{@csAgUlm06c`URF-RWdZFm##?Ez|MgpkeZmMWHH!p~G}CuAP{q zwe#9d(pJNL4?LQ|D&GJQE%TkJ3~o}{qO5UkWmx4K!eouGErU{3ygTZXm5OLtFmf%N z1A(fxxVA}rR}d`=f}w+Jo3)LNPQ3!WJ#w3G8!d|#-meEEr@^*maQ-dg4~vWuOF%Jy QPXGV_07*qoM6N<$f-J1?&j0`b literal 0 HcmV?d00001 diff --git a/mods/hyrule_mapgen/textures/hyrule_mapgen_bones.png b/mods/hyrule_mapgen/textures/hyrule_mapgen_bones.png new file mode 100644 index 0000000000000000000000000000000000000000..1ce333604e95c82359f0064ad5349aec9dbbabac GIT binary patch literal 412 zcmV;N0b~A&P)LN80_a zOv{NZfT7)!rHaOEI-=QX1MuWcIXv!&+^$MvXCVETXAIL4C!I?H5QPDsAMXI<;~(P* z&vm4#q=YI8#WKxS8@peXYk*-|;&P_m zwo%ApSem&)-9VvOUOz7UIg^Jw&aZAnT&%7yVPc_JCJF_;^FZ{5DM}R$tyWI}@|&ys{#vqpdrjR6{}Df4qudIPsF?cz0000y3}%UZ xczIZ#?bs&{;Zuhm-05A;v$)Yhs>9h{fH7!>ZCkB7i#Y=jc)I$ztaD0e0sv+;B~t(Z delta 94 zcmbQqIFoULQ~1_Nf6hBFCKz6tnzrBsL#Qib+tk_Xj9PwYPF^Coto`Zb=kYusU@%MM y!^_Y5Y{x#82%kFi;Lg+KJc}DGq&l4K1sHj++1^OAn6`}p2s~Z=T-G@yGywqW<0zs4 diff --git a/mods/hyrule_mapgen/textures/hyrule_mapgen_bridge_side.png b/mods/hyrule_mapgen/textures/hyrule_mapgen_bridge_side.png index 80ff01e442aabbf8e35822342478c2f8ba249479..93bfaa51cad559fa018709b6bd442bf43ef787a1 100644 GIT binary patch delta 322 zcmV-I0log|0`dZoIe#QcL_t(I%k9uDOG8lrfZ_Li?c=Hp24c|Qf-)SUWr#&skOhN5 zK~2Jbm}O0DCc}bY(;_;ADJnRGSp={9xI5>bWAGaWKW~(C(w@M+K&7!2jI!m+F5&C$$9Cmj$h=1RE=qUrhFtOoauf}Ju zi`E96F?{t$;b^~x?Z-H0(c17m90#qWBG?gkuRV-0tgkF!o#XAk&ErQ*6h%~)<}g}g z`!UzIFBoGe&lmCDBmeq9TW1*!22|HdIA;;r97bz$QN-$E#PnN|+U`QTFzfK-yx%O{bB-zJr0*dK9z(-l7TA@!bICWCd3v#V$E152}e UF-;TqMgRZ+07*qoM6N<$f+-=C!vFvP delta 313 zcmV-90mlCF0_g&fIe!~TL_t(I%k9vwO9NpXfbr-3@%8308CWcql_4C$iipu{5Okm> z!9UEhCJO^Wu-Pqwh%ko+SB9YA>Ac(b?tKmZ2^NE&_{0bP{rd|Hz)3HQ0ClKw)^R$x zGbg<)mSu@`7J&Y6WDa-QF-a1fb!esZha=;U_txU>&L;Wm6n`%Qz*nL1V1JvpmkC}3 zFT#6X#G~FeTI5u!co9B6=g~Xsh;_m3Xo`r?%~nyZcpl&JFv&^Nl&rIYc#jr2*Edgy z2y5+SLI~L3KJZ#8#cak#w@syr@eM>gjWlJwlhSOpkYow#EMA1IjSiJ6i_K-k-{bqk zktydPhB^RXoigR@Vr=U0)2y?6%?i%1CMMJ&)*;YH7ErAiTt1p_U1xg_=o7sX00000 LNkvXXu0mjfgOHg$ diff --git a/mods/hyrule_mapgen/textures/hyrule_mapgen_candle.png b/mods/hyrule_mapgen/textures/hyrule_mapgen_candle.png new file mode 100644 index 0000000000000000000000000000000000000000..f318a8741a5593e18cf1e72188a31e2ecf432f6e GIT binary patch literal 175 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJ#0V1dK=^Fzn&H|6fVg?3oVGw3ym^DWND46K! z;uyklJ^9bKZ=dSfG#&_DOTBV&>!0%nfZ#|2OG%0D|I?>e8z*=e0D(M>?EZ*fy~d2%dglu5Qs&^_6G$k@@=i8@(79ZrRABzmwjt Q0JMz3)78&qol`;+070WaVE_OC literal 0 HcmV?d00001 diff --git a/mods/hyrule_mapgen/textures/hyrule_mapgen_chain1.png b/mods/hyrule_mapgen/textures/hyrule_mapgen_chain1.png new file mode 100644 index 0000000000000000000000000000000000000000..382f89cedf949bce59f42cd7f3839f7806ee71b2 GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP;i!~ zi(`nz>7$ePavd@dar0MU<&J#A%^|9FWufe&3*YP8o3an?baD>%Q1ol^{^KcdzDi&I z`+;&+#;CP>=ce}<#f^UC?ftK!vLay_ zC&SFtk6df7edKCi_36A;ymrp#IVp1Cf7~6tI1l8?JQh6{`+Rcrk9Fr9TT5dZZ-^ev buYbtrzQrJ3MtyY#(3K3Hu6{1-oD!M9-Tkay1(Ww5S_7)wVS`wQzhC;II5&{vlwYQ>$HzE$40L&V<~|rt5XfQ|r@a zGV(3TN@ij3b8Ym#zdD4G=|HYb_(BP-wX6&tO3Izbq7-L-`Dy3drLyU@!HU$#NqzF4 zd(KrS&f70F_d64VrkPZB>U9pM{eRkd?27cfZ?4>5``7Hg4y$$VR-sqdEIT(vX6nxU pe#vUP-ts4#7n-SQ&9-N+V7k+4*?Qo#w*k=244$rjF6*2UngH$uSbhKi literal 0 HcmV?d00001 diff --git a/mods/hyrule_mapgen/textures/hyrule_mapgen_cracks.png b/mods/hyrule_mapgen/textures/hyrule_mapgen_cracks.png new file mode 100644 index 0000000000000000000000000000000000000000..ff9552672cc990aaee7643b5e1fe7495bb454e16 GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP;iE) zi(`nz>9Z5haxyClwA!ndMjQy+bRvOwUh3UgNf7-gdszXOUaITAbF@G7q>5r^m b^$!>?Eiyfkz3WQ_(2We9u6{1-oD!M<@@iaW literal 0 HcmV?d00001 diff --git a/mods/hyrule_mapgen/textures/hyrule_mapgen_dev.png b/mods/hyrule_mapgen/textures/hyrule_mapgen_dev.png new file mode 100644 index 0000000000000000000000000000000000000000..7740ab596dfe7c76c3ee475d126d88b1b4246650 GIT binary patch literal 335 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 N6=2vgX`(|M{(p2~N8SJc literal 0 HcmV?d00001 diff --git a/mods/hyrule_mapgen/textures/hyrule_mapgen_goddess_statue.png b/mods/hyrule_mapgen/textures/hyrule_mapgen_goddess_statue.png new file mode 100644 index 0000000000000000000000000000000000000000..c0e487d807ee80121ab0d5b96dc623aa004e02f2 GIT binary patch literal 3296 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 literal 0 HcmV?d00001 diff --git a/mods/hyrule_mapgen/textures/hyrule_mapgen_painting2.png b/mods/hyrule_mapgen/textures/hyrule_mapgen_painting2.png new file mode 100644 index 0000000000000000000000000000000000000000..49b286fb16e8a5a4c0a57b5041f45a3a9fb07b0e GIT binary patch literal 3348 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 VU9vp|PBQ=i002ovPDHLkV1n##gjfIo literal 0 HcmV?d00001 diff --git a/mods/hyrule_mapgen/textures/hyrule_mapgen_skull_top.png b/mods/hyrule_mapgen/textures/hyrule_mapgen_skull_top.png new file mode 100644 index 0000000000000000000000000000000000000000..1458ea6260ab4a94ab40009dc82a93f484faf7cc GIT binary patch literal 227 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 literal 0 HcmV?d00001 diff --git a/mods/loot/textures/loot_pc_side.png b/mods/loot/textures/loot_pc_side.png new file mode 100644 index 0000000000000000000000000000000000000000..464d9999b49ff9184752e1cb0cf484adb0ba1981 GIT binary patch literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP;joN zi(`nz>13N-<*(}5xEQ(@Oi*A3g2TVd-%CE3`qk5%Vdm$Tf0a-19ALk6%Cz@P6s~yyIT#CYg<46{(-q3VO9^Gi7wR9T+ICWd?=54 z3Ex|{WETnxg@tqE5e0-4=-C3Jv#X9+TAZF@L<3s5D4r>mdKI;Vst09t4m AfB*mh literal 0 HcmV?d00001 diff --git a/mods/loot/textures/loot_vegemite_top.png b/mods/loot/textures/loot_vegemite_top.png new file mode 100644 index 0000000000000000000000000000000000000000..b6dda391da50b0eea67628d906189f5fb6af9458 GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP*Ba& z#WBR^)srwy5D8#qU^tt}!jscC{UJ~XgQu&X J%Q~loCIA%z8j1h_ literal 0 HcmV?d00001 diff --git a/mods/mobs_fairy/init.lua b/mods/mobs_fairy/init.lua index ee2b197..a393b61 100644 --- a/mods/mobs_fairy/init.lua +++ b/mods/mobs_fairy/init.lua @@ -12,6 +12,7 @@ if mobs.mod and mobs.mod == "redo" then armor = 130, collisionbox = {-0.1,-0.1,-0.1, 0.1,0.1,0.1}, visual = "mesh", + glow = 12, mesh = "fairy2.b3d", textures = { {"fairy.png"}, diff --git a/mods/mobs_loz/armos.lua b/mods/mobs_loz/armos.lua index c64a913..96168f6 100644 --- a/mods/mobs_loz/armos.lua +++ b/mods/mobs_loz/armos.lua @@ -1,6 +1,28 @@ +minetest.register_node("mobs_loz:armos_statue", { + description = "Armos Statue", + tiles = { + "mobs_armos_frozen.png", + }, + visual_scale = 0.5, + drawtype = "mesh", + mesh = "armos.b3d", + paramtype = "light", + paramtype2 = "facedir", + selection_box = { + type = "fixed", + fixed = {{-0.35, -0.5, -0.35, 0.35, 1.3, 0.35},} + }, + collision_box = { + type = "fixed", + fixed = {{-0.35, -0.5, -0.35, 0.35, 1.3, 0.35},} + }, + groups = {cracky=3,}, + sounds = default.node_sound_stone_defaults(), +}) + mobs:register_mob("mobs_loz:armos", { - type = "animal", + type = "monster", passive = false, attack_type = "dogfight", reach = 2, @@ -8,7 +30,7 @@ mobs:register_mob("mobs_loz:armos", { hp_min = 10, hp_max = 27, armor = 100, - collisionbox = {-0.5, 0, -0.5, 0.5, 1.5, 0.5}, + collisionbox = {-0.35, -0.5, -0.35, 0.35, 1.3, 0.35}, visual = "mesh", mesh = "armos.b3d", textures = { diff --git a/mods/mobs_loz/darknut.lua b/mods/mobs_loz/darknut.lua index 6e99c56..aa72640 100644 --- a/mods/mobs_loz/darknut.lua +++ b/mods/mobs_loz/darknut.lua @@ -52,4 +52,60 @@ mobs:register_mob("mobs_loz:darknut", { }, }) -mobs:register_egg("mobs_loz:darknut", "Darknut", "default_stone.png", 1) \ No newline at end of file +mobs:register_egg("mobs_loz:darknut", "Darknut", "default_stone.png", 1) + +mobs:register_mob("mobs_loz:darkernut", { + type = "monster", + passive = false, + attack_type = "dogfight", + reach = 2.5, + damage = 3, + hp_min = 60, + hp_max = 87, + armor = 100, + collisionbox = {-0.7, -0, -0.7, 0.7, 2, 0.7}, + visual_size = {x=1.3, y=1.3}, + visual = "mesh", + mesh = "darknut.b3d", + textures = { + {"mobs_darkernut.png"}, + }, + makes_footstep_sound = true, + view_range = 10, + walk_velocity = 1.5, + run_velocity = 2, + drops = { + {name = "loot:key", + chance = 5, min = 1, max = 1}, + {name = "default:sword_diamond", + chance = 20, min = 1, max = 1}, + }, + on_die = function(self) + local pos = self.object:getpos() + if math.random(1,7) == 2 then + minetest.env:add_entity(pos, "hyruletools:heart_entity") + minetest.env:add_entity(pos, "hyruletools:heart_entity") + end + minetest.env:add_entity(pos, "experience:orb") + minetest.env:add_entity(pos, "experience:orb") + minetest.env:add_entity(pos, "experience:orb") + end, + water_damage = 0, + lava_damage = 5, + light_damage = 0, + fear_height = 6, + animation = { + speed_normal = 12, + speed_run = 15, + stand_start = 15, + stand_end = 25, + walk_start = 30, + walk_end = 50, + run_start = 30, + run_end = 50, + punch_start = 1, + punch_end = 15, + }, +}) + +mobs:register_egg("mobs_loz:darkernut", "Darkernut", "default_obsidian.png", 1) \ No newline at end of file diff --git a/mods/mobs_loz/deku_baba.lua b/mods/mobs_loz/deku_baba.lua index 0727fcc..5fbd184 100644 --- a/mods/mobs_loz/deku_baba.lua +++ b/mods/mobs_loz/deku_baba.lua @@ -26,6 +26,61 @@ mobs:register_mob("mobs_loz:deku_baba", { walk_velocity = 0.01, run_velocity = 0.05, jump = false, + drops = { + {name = "loot:key", + chance = 1, min = 1, max = 1}, + }, + on_die = function(self) + local pos = self.object:getpos() + if math.random(1,2) == 2 then + minetest.env:add_entity(pos, "hyruletools:heart_entity") + end + minetest.env:add_entity(pos, "experience:orb") + end, + water_damage = -1, + lava_damage = 5, + light_damage = 0, + fear_height = 3, + animation = { + speed_normal = 12, + speed_run = 30, + stand_start = 1, + stand_end = 19, + walk_start = 1, + walk_end = 19, + run_start = 35, + run_end = 55, + punch_start = 20, + punch_end = 35, + }, +}) + +mobs:register_egg("mobs_loz:deku_baba", "Deku Baba", "default_dry_grass.png", 1) + +mobs:register_mob("mobs_loz:deku_baba_dry", { + type = "monster", + passive = false, + attack_type = "dogfight", + reach = 4, + damage = 4, + hp_min = 20, + hp_max = 37, + armor = 100, + collisionbox = {-0.3, 0, -0.2, 0.2, 1.2, 0.2}, + visual = "mesh", + mesh = "dekubaba.b3d", + textures = { + {"mobs_dekubaba_dry.png"}, + }, + blood_texture = "default_dry_grass.png", + makes_footstep_sound = false, + sounds = { + random = "mobs_dirtmonster", + }, + view_range = 5, + walk_velocity = 0.01, + run_velocity = 0.05, + jump = false, drops = { {name = "mobs_loz:nut", chance = 1, min = 1, max = 3}, @@ -55,4 +110,4 @@ mobs:register_mob("mobs_loz:deku_baba", { }, }) -mobs:register_egg("mobs_loz:deku_baba", "Deku_Baba", "default_dry_grass.png", 1) \ No newline at end of file +mobs:register_egg("mobs_loz:deku_baba_dry", "Dry Deku Baba", "wool_orange.png", 1) \ No newline at end of file diff --git a/mods/mobs_loz/gibido.lua b/mods/mobs_loz/gibido.lua new file mode 100644 index 0000000..92217fa --- /dev/null +++ b/mods/mobs_loz/gibido.lua @@ -0,0 +1,46 @@ + +mobs:register_mob("mobs_loz:gibido", { + type = "monster", + passive = false, + reach = 2, + damage = 3, + attack_type = "dogfight", + hp_min = 20, + hp_max = 30, + armor = 100, + collisionbox = {-0.4, -1, -0.4, 0.4, 0.7, 0.4}, + visual = "mesh", + mesh = "character.b3d", + drawtype = "front", + textures = { + {"mobs_gibido.png"}, + }, + on_die = function(self) + local pos = self.object:getpos() + if math.random(1,3) == 2 then + minetest.env:add_entity(pos, "hyruletools:heart_entity") + end + minetest.env:add_entity(pos, "experience:orb") + end, + makes_footstep_sound = true, + walk_velocity = 1, + run_velocity = 1.4, + water_damage = 1, + lava_damage = 5, + light_damage = 1, + view_range = 5, + animation = { + speed_normal = 15, + speed_run = 15, + stand_start = 0, + stand_end = 79, + walk_start = 168, + walk_end = 187, + run_start = 168, + run_end = 187, + punch_start = 200, + punch_end = 219, + }, +}) + +mobs:register_egg("mobs_loz:gibido", "Gibido", "wool_grey.png", 1) \ No newline at end of file diff --git a/mods/mobs_loz/init.lua b/mods/mobs_loz/init.lua index f99e564..3f1e8b9 100644 --- a/mods/mobs_loz/init.lua +++ b/mods/mobs_loz/init.lua @@ -30,6 +30,7 @@ dofile(path.."/armos.lua") dofile(path.."/wolfos.lua") dofile(path.."/darknut.lua") dofile(path.."/tektite.lua") +dofile(path.."/gibido.lua") dofile(path.."/biri.lua") dofile(path.."/keese.lua") dofile(path.."/skulltula.lua") diff --git a/mods/mobs_loz/leever.lua b/mods/mobs_loz/leever.lua index 7fe94b0..acbb606 100644 --- a/mods/mobs_loz/leever.lua +++ b/mods/mobs_loz/leever.lua @@ -17,8 +17,8 @@ mobs:register_mob("mobs_loz:leever", { }, makes_footstep_sound = true, view_range = 7, - walk_velocity = 1, - run_velocity = 1.5, + walk_velocity = 1.5, + run_velocity = 2.2, jump_height = 0, drops = { {name = "hyruletools:green_rupee", @@ -79,4 +79,86 @@ mobs:register_mob("mobs_loz:leever", { }, }) -mobs:register_egg("mobs_loz:leever", "Leever", "default_sand.png", 1) \ No newline at end of file +mobs:register_egg("mobs_loz:leever", "Leever", "default_sand.png", 1) + +mobs:register_mob("mobs_loz:leever_poison", { + type = "monster", + passive = false, + attack_type = "dogfight", + reach = 1.5, + damage = 3, + hp_min = 15, + hp_max = 30, + armor = 110, + collisionbox = {-0.3, -0, -0.3, 0.3, 0.4, 0.3}, + visual_size = {x=1, y=1}, + visual = "mesh", + mesh = "leever.b3d", + textures = { + {"mobs_leever_poison.png"}, + }, + makes_footstep_sound = true, + view_range = 7, + walk_velocity = 2, + run_velocity = 2.5, + jump_height = 3, + drops = { + {name = "hyruletools:green_rupee", + chance = 5, min = 1, max = 3}, + }, + do_custom = function(self) + if not self.active then + minetest.after(15, function() + if self.object ~= nil and self.object:getpos() ~= nil then + local pos = self.object:getpos() + minetest.add_particlespawner({ + amount = 10, + time = 0.5, + minpos = {x=pos.x-0.2, y=pos.y-0.3, z=pos.z-0.2}, + maxpos = {x=pos.x+0.2, y=pos.y+0.5, z=pos.z+0.2}, + minvel = {x=-0.5, y=2, z=-0.5}, + maxvel = {x=0.5, y=4, z=0.5}, + minacc = {x=0, y=-7, z=0}, + maxacc = {x=0, y=-7, z=0}, + minexptime = 2, + maxexptime = 3, + minsize = 1, + maxsize = 2, + collisiondetection = true, + texture = "quartz_wall.png" + }) + self.object:set_properties({physical = false}) + minetest.after(1, function() + self.object:remove() + end) + end + end) + self.active = true + end + end, + on_die = function(self) + local pos = self.object:getpos() + if math.random(1,10) == 2 then + minetest.env:add_entity(pos, "hyruletools:heart_entity") + end + minetest.env:add_entity(pos, "experience:orb") + end, + water_damage = 1, + lava_damage = 5, + light_damage = 0, + fear_height = 3, + animation = { + speed_normal = 12, + speed_run = 15, + stand_start = 20, + stand_end = 40, + walk_start = 3, + walk_end = 16, + run_start = 3, + run_end = 17, + punch_start = 3, + punch_end = 16, + }, +}) + +mobs:register_egg("mobs_loz:leever_poison", "Poisonous Leever", "wool_magenta.png", 1) \ No newline at end of file diff --git a/mods/mobs_loz/models/armos.b3d b/mods/mobs_loz/models/armos.b3d index 026e3a5d45aa32534ce29ff6eebe434d424a7b56..d1e389cb4fb5d66f1a628843c4c80382dd3e0657 100644 GIT binary patch literal 16372 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 literal 16372 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 literal 0 HcmV?d00001 diff --git a/mods/mobs_loz/textures/mobs_wolfos_tower.png b/mods/mobs_loz/textures/mobs_wolfos_tower.png new file mode 100644 index 0000000000000000000000000000000000000000..6963e9472caf4e53aefe3928aad2ef3604949c51 GIT binary patch literal 6481 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 rkz9TIu$(}WAC`w8KLq( 0 then tnt.boom(pos, def) + end end, -- unaffected by explosions on_blast = function() end, @@ -647,7 +708,7 @@ minetest.register_abm({ chance = 1, action = function(pos, node) minetest.add_particlespawner({ - amount = 25, + amount = 10, time = 1, minpos = {x=pos.x, y=pos.y+0.4, z=pos.z}, maxpos = {x=pos.x, y=pos.y+0.5, z=pos.z},