From 15ecd3e90646eb00f938380db5032a08a7a8d4bb Mon Sep 17 00:00:00 2001 From: Amaz1 Date: Sat, 3 May 2014 08:16:37 +0100 Subject: [PATCH] Added moon gravity, and a few other bits. --- menu/icon.png | Bin 2598 -> 2909 bytes mods/.moonrealm/functions.lua | 5 - .../textures/mapgen_compressed_dust.png | Bin 0 -> 554 bytes mods/mapgen/textures/mapgen_dust.png | Bin 554 -> 304 bytes mods/moon/init.lua | 216 ++++++++++++++++++ 5 files changed, 216 insertions(+), 5 deletions(-) create mode 100644 mods/mapgen/textures/mapgen_compressed_dust.png create mode 100644 mods/moon/init.lua diff --git a/menu/icon.png b/menu/icon.png index 26711183155bea468cb352799853932f93461fe5..403b86e442c16a76435f5289f670407467495fea 100644 GIT binary patch delta 2902 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 Al>h($ delta 2589 zcmV+&3gY$M7N!)CB!2{RLP=Bz2nYy#2xN!=014emL_t(&-tC$RP*Zmv$Foa<5WtWi z)@{4HQ@6^tR0Wc}+>mg{6$l1G2#}D2BjFH)R_g&3RHR;2@uXJUibrj$t<=iuYPIg# zL#wUbnL4hm>uy(jOlNnjV7IOL?*BcPlt3t<_F!lFX1?3x^Vxvd>X2_BC?89_t9$@jxl-j!_Rj)f{wBoSl6{RL<^6 zY2zTfBM@1e0-DRne8K&`}2-WoLyE@W*IKbu;Hn8k&ahuZ(pZ$RFhN z2<`08Vr&5=bbpGC3V4#|d2yuyAIoNOdNS7z1|O*D%Qz5Ku&>8C*e6DZ0V^A+%Q?e> z_gB{DK+wN8@LHlmZbocjQ1Xv%U?lK;>Te)L%gvCRgU`#IA=hLT+|R`}?xDEiG53yo z1M#_ICncCdFG_4&6z$-n{+;oR3U~6q7Tbfbi>*Q1Vt);xk)zfCW#PK>*74nSrz6pD zZoHRfzBwMcHN0N2HTasaC}?i9ffYFF3^YahRr?M>fbD z0iTdT*6Z&elT>q{X$G>F_?l28S$TM7Wh&ZhMX)6c(Dk?wy?@U{_pT{$nr}h- zYRTW}5SFtzLL0|Lw)MJlHV4`bgTd2R2SQ%Yfq$Yt5cZe&gTQM}Mk1qy2bm=VZH;2= zZcZZL5qP}$KK$!q2EP7S=h43}rGLK$W=szqpQsOcLu?6xdQLFJGQr;UcVt6!eTDk7c22l-f!`c=}x@&s@e;@zXlpGr*q0i46atQ*cx3( zr+<|6^Q=}Ls!!hP=QSI`kW$Kls)_?y83%bbHfoOwhAmo0mjJ5D5F|T7aq@_4NO)fc zs;oio^8BEyg{i@mU+{_9T$i$#`-QqT%w2xSyPr4h;NgkNAUxI(iq1JatSMn*_G{z( zYMJ$KlS%xP08%>_#SH>nI+x^^f!+_b*nhu08ZJ^F_S~RT){Kw|KEVwJR)EG7`aV7W zO(al*kCdPdY$XPcH}V;c#DJ$JUW)8_69-atIH4nCZ5nh4k9E-rpnm}xD1Y#|@cv}l; znP(#X26rAEhm3iAXsgHL;I>@obrJaTYPJ_(?TWj|bRL8F+A%0tAn<9xUhpjjKK{c@ z(CU6N7nvkb+PrYMUirqzgJfqG?0@26Za3fmw0S)eIm`G^mxW{7x)dDPR0dUM0Vc}z zn5Id`zTMtk>Fk^F=sqOIS0CxTQfPI{U6}0*_s;;We;%yHrqvoK9b++L6(4n{B1e=e zv&in`Z{|Z)HWo|TC>+}2Kt`SkQ&P+*YIzRz+s>k(X%{BN=R>7U#oH%R2Y;>j=a)0F zyJIqHNX_h7sl=6oRj?TY{4>y}zrI+G#>KHnC?AW$rv*dy{Qk1+5g@TD9F+^AaO6od zoaJUrRvMsd=s?{Qry2M@(cf!p*I}Ym2XmPkpIp$A)z8MU7h_RZ8iI`rqw)R=r3_0~ zy9JaqW@HBX^ygiLFxKCVlz;kgl)fC{6TF<-u6;ZsreA=Tz{}HKlrWS168uL z3%`oZWMa`VTW0AYQ7B-xm5@|i%=wYULL7O*4xO8^ zGUm*fkV+v}%Fx+n@_(!ht+$@FVA-Q`9DT}+YNrL0NV;fi*AL2bf2A@#gemG=bgppV zsa6x>)hZYY3?BFq8So`aCWTI$;8h!K^KF=<&_iQwLG{Ly-wC`=^vYj;sm8-Fd+uy6 z_}em&5hsHDe_!`EKnE>db@;ZxY0d0-!;?C64bpK2!VhQQ>wilxI)^kM5{eN!gn_y( zr*8{BZ{E|0BJ-foQiQ{stjN|TVtRV&Ao$vbx*-gZn>ni{Vn<10#EreJsqX&Z(4HTJ+aDSo+MT_>17~H<%AVk?tNYnChU}L#w@hWRvSo-K<5BU71c}Ul$ zyTuamO|@jw@_!+3rwxj*C~KnNIDHWsSRNmboZK83jHEbov=GS^G1*)R?!+(O$+Ij{#WEw{)^HAk1#)W;= zg9avTpq2D{i@gLwsSF8cWH$DjG+G7lO#hRm#>T40B$-|!2r9*;$ zu&*4eD&ua%Q9`#y`uh$8ixu#_ep)9HPHl~)D7To5^{kw1vMb3uR( zGcz01mL}#rca|BK_Sg6Xr(5PT%_%o6YC*4A!++nLF1h#aAM$fwHbuo8okmHZRBNEs zX$N(sKE2uLLPJe4PVaOLx$3WPDZtF^yRTc-g0lvBNX(D+{D7jS-XoLm!Yj}$_=xc|EWn4n*WnMnv#kiFbXNrHCu9I&pt9gKI*RdR`4q?SD~{}bJI-H z#ebR@(Po}{N64snBvqi`iEPOc@7Cq~x`$2+U+~A)=fagX;W`07Rwx-eX;eN0Hz|1e z77hQ?CHCkW=l3`m@b{jvqsbiAYfj)_%~ytHjr!-x1|gqUqUN_-G=iQr)x!T+5(GU( zD*m!jlP>-qMrGJ!b3*u9qn!7Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RY1{xAOIya1_o&W#=yh%hsR5;6B zlHG3WFbsn~%XX5cLAqDoD-UbxU+G*F_O_E7BM?ZD6y4|Nr+M#ry$-BD=Ok*a;he)chltEGetdjPMXfb*&V=JQ5D`*J^xkpKv2EMz|Bycv zwbrP$&TGvKLI|^U{|DH6pW*f1M}c@e9zRzY>|@)yuCtY`HBw5L8OyRvyTD(9loByU s)^(l#s!B?UZQEFu1px0os*3lXf4d`3pip2|iU0rr07*qoM6N<$g1p`K761SM literal 0 HcmV?d00001 diff --git a/mods/mapgen/textures/mapgen_dust.png b/mods/mapgen/textures/mapgen_dust.png index 48970371808be1b12a8e66fe673df6d2dee68959..84b86cd2cddfa3b6443f78dd846a6b47da781d37 100644 GIT binary patch delta 248 zcmV*Aqsi$Oo)BfsS>b1fX&*C6S#$Qu4mDq zdiOOU_X_eo<7Nby5M?Cu@%P>OW;X#Nf^lFLrn3pbbm#>&Bc2e2A6#t%9)W-W$7M&| z?s?8JJOXSh^vrw@+XW%#ule!JW94fUtS@~75+0HV%eeq0000w#S4{PdQ>0A`{wv!tp5J-^}-RI}0dGC3>UO4B7F#^zg$IR%x0}w*M zdrxbP5CQq;2IoHN&TaU92=Z6n;V;JPkEgni%N1yfa2l~M}ldCroI;Ko-N z$->vy7wfump64WLt>K)*IfsbMGk$!0Ohv6Va?XU~I1mw1O7z}w&arLV>|y_qKNPjr zsI|^(%?v^avvvOm*n6Mh_1;H;csw3IR~YPL+q$l^m8~^WN|+hTvP`?cUxJhpF-F#P qo&TyzN{MaTSe69(xD_nv>dBTt}EU{;C%0000 0.99 then + local pos = player:getpos() + if pos.y > YMIN and pos.y < YMAX then + player:set_physics_override(1, 0.6, 0.2) + else + player:set_physics_override(1, 1, 1) -- speed, jump, gravity + end + end + end +end) + + +-- Space apple tree + +function moonrealm_appletree(pos) + local x = pos.x + local y = pos.y + local z = pos.z + for j = -2, -1 do + local nodename = minetest.get_node({x=x,y=y+j,z=z}).name + if nodename ~= "moonrealm:soil" then + return + end + end + for j = 1, 5 do + local nodename = minetest.get_node({x=x,y=y+j,z=z}).name + if nodename ~= "moonrealm:air" then + return + end + end + for j = -2, 4 do + if j >= 1 then + for i = -2, 2 do + for k = -2, 2 do + local nodename = minetest.get_node({x=x+i,y=y+j+1,z=z+k}).name + if math.random() > (math.abs(i) + math.abs(k)) / 16 then + if math.random(13) == 2 then + minetest.add_node({x=pos.x+i,y=pos.y+j+1,z=pos.z+k},{name="default:apple"}) + else + minetest.add_node({x=pos.x+i,y=pos.y+j+1,z=pos.z+k},{name="moonrealm:leaves"}) + end + else + minetest.add_node({x=x+i,y=y+j+1,z=z+k},{name="moonrealm:air"}) + minetest.get_meta({x=x+i,y=y+j+1,z=z+k}):set_int("spread", 16) + end + end + end + end + minetest.add_node({x=pos.x,y=pos.y+j,z=pos.z},{name="default:tree"}) + end + print ("[moonrealm] Appletree sapling grows") +end + +-- Vacuum or air flows into a dug hole + +minetest.register_on_dignode(function(pos, oldnode, digger) + local x = pos.x + local y = pos.y + local z = pos.z + for i = -1,1 do + for j = -1,1 do + for k = -1,1 do + if not (i == 0 and j == 0 and k == 0) then + local nodename = minetest.get_node({x=x+i,y=y+j,z=z+k}).name + if nodename == "moonrealm:air" then + local spread = minetest.get_meta({x=x+i,y=y+j,z=z+k}):get_int("spread") + if spread > 0 then + minetest.add_node({x=x,y=y,z=z},{name="moonrealm:air"}) + minetest.get_meta(pos):set_int("spread", (spread - 1)) + print ("[moonrealm] MR air flows into hole "..(spread - 1)) + return + end + elseif nodename == "moonrealm:vacuum" then + minetest.add_node({x=x,y=y,z=z},{name="moonrealm:vacuum"}) + print ("[moonrealm] Vacuum flows into hole") + return + end + end + end + end + end +end) +-- ABMs + +-- Air spreads + +minetest.register_abm({ + nodenames = {"moonrealm:air"}, + neighbors = {"moonrealm:vacuum", "air"}, + interval = 11, + chance = 9, + action = function(pos, node, active_object_count, active_object_count_wider) + local spread = minetest.get_meta(pos):get_int("spread") + if spread <= 0 then + return + end + local x = pos.x + local y = pos.y + local z = pos.z + for i = -1,1 do + for j = -1,1 do + for k = -1,1 do + if not (i == 0 and j == 0 and k == 0) then + local nodename = minetest.get_node({x=x+i,y=y+j,z=z+k}).name + if nodename == "moonrealm:vacuum" + or nodename == "air" then + minetest.add_node({x=x+i,y=y+j,z=z+k},{name="moonrealm:air"}) + minetest.get_meta({x=x+i,y=y+j,z=z+k}):set_int("spread", (spread - 1)) + print ("[moonrealm] MR air spreads "..(spread - 1)) + end + end + end + end + end + end +}) + +-- Hydroponic saturation + +minetest.register_abm({ + nodenames = {"moonrealm:hlsource", "moonrealm:hlflowing"}, + neighbors = {"moonrealm:dust", "moonrealm:dustprint1", "moonrealm:dustprint2"}, + interval = 29, + chance = 9, + action = function(pos, node, active_object_count, active_object_count_wider) + local x = pos.x + local y = pos.y + local z = pos.z + for i = -2,2 do + for j = -4,0 do -- saturates out and downwards to pos.y - 4, a 5x5 cube. + for k = -2,2 do + if not (i == 0 and j == 0 and k == 0) then + local nodename = minetest.get_node({x=x+i,y=y+j,z=z+k}).name + if nodename == "moonrealm:dust" + or nodename == "moonrealm:dustprint1" + or nodename == "moonrealm:dustprint2" then + minetest.add_node({x=x+i,y=y+j,z=z+k},{name="moonrealm:soil"}) + print ("[moonrealm] Hydroponic liquid saturates") + end + end + end + end + end + end +}) + +-- Soil drying + +minetest.register_abm({ + nodenames = {"moonrealm:soil"}, + interval = 31, + chance = 27, + action = function(pos, node) + local x = pos.x + local y = pos.y + local z = pos.z + for i = -2, 2 do + for j = 0, 4 do -- search above for liquid + for k = -2, 2 do + if not (i == 0 and j == 0 and k == 0) then + local nodename = minetest.get_node({x=x+i,y=y+j,z=z+k}).name + if nodename == "moonrealm:hlsource" or nodename == "moonrealm:hlflowing" then + return + end + end + end + end + end + minetest.add_node(pos,{name="moonrealm:dust"}) + print ("[moonrealm] Moon soil dries") + end, +}) + +-- Space appletree from sapling + +minetest.register_abm({ + nodenames = {"moonrealm:sapling"}, + interval = 57, + chance = 3, + action = function(pos, node, active_object_count, active_object_count_wider) + moonrealm_appletree(pos) + end, +})