[Mod] Hallelujah Mountains [cloudlands]

User avatar
DrFrankenstone
Member
Posts: 231
Joined: Tue May 24, 2016 05:36
GitHub: treer
Location: Australia
Contact:

[Mod] Hallelujah Mountains [cloudlands]

by DrFrankenstone » Post

Image

Hallelujah Mountains for Minetest v5.0+

AKA Cloudlands — giant rocks floating suspended in magnetic eddies, occasionally with giant trees growing out.

This can be run with or without a normal terrain mapgen, allowing either pure skylands or an exotic addition to the existing landscape, making use of Minetest's ability to handle heights.

Configurable settings include the altitude islands appear, the ability to restrict where they spawn, whether giant trees can appear, etc.

It's a single file with no hard dependencies for easy integration into modpacks or games, e.g. as an exotic biome.

The islands are not homogenous, there will be areas without any, while smaller islands tend to follow eddy fields, often emanating out from much larger and rarer islands.

Hallelujah Mountains maps, like the link above, can be generated by Amidstest provided you know the seed of the world.

Mod dependencies: None.

Minetest version: Requires v5.0+

Recommends:
  • Vines, or something that contains vines, such as plantlife_modpack or MineClone2. These will grow off the sides of the islands, climate permitting, allowing you to climb, while looking picturesque at the same time!
  • Nether enables players to build portals to Hallelujah Mountains, allowing secret entrances into floating kingdoms, or the island altitude to be configured way up high while still having a means to get there. Stones to build these portals can only be found in the Nether.
  • Extra ways to explore
Ores tip: If you decide ores like iron and diamond should be obtainable from island stone, and are playing Minetest Game, go into Settings->Advanced Settings->Mods->cloudlands, set the "Altitude of Islands" to be 1300 (or higher), and Enable "Generate ores inside islands". This works because Minetest Game also generates the deep-underground ores in stone above 1025 to ensure they can be found in mgV7 Floatlands. Ores can be added in other games or at other altitudes by adding adjusted copies of the game's calls to minetest.register_ore().

License: LGPL 2.1+

Download: git, Github or master.zip

Video: Minetest Mod Review: Cloudlands

In combination with skybox and plantlife mods, this it becomes a wallpaper generator...
Image

Image

Vines:
Image

Image

Giant trees can sometimes be found growing on islands.
Image

Image
Attachments
using skybox mod, with the ice-plains spikes of MineClone2
using skybox mod, with the ice-plains spikes of MineClone2
sunrise banner small.jpg (121.47 KiB) Viewed 11393 times
plantlife_modpack
plantlife_modpack
ponds small.jpg (145.81 KiB) Viewed 11393 times
MineClone2 at dusk
MineClone2 at dusk
moonlight wallpaper small.jpg (151.4 KiB) Viewed 11393 times
Last edited by DrFrankenstone on Sun Feb 16, 2020 02:12, edited 39 times in total.

User avatar
texmex
Member
Posts: 1753
Joined: Mon Jul 11, 2016 21:08
GitHub: tacotexmex
In-game: tacotexmex

Re: [Mod] Hallelujah Mountains [cloudlands]

by texmex » Post

This looks amazing! Those small pond islands are very cute. Love the fact that the mod is so selfcontained.
Last edited by texmex on Mon Jun 11, 2018 19:35, edited 1 time in total.

User avatar
Wuzzy
Member
Posts: 4786
Joined: Mon Sep 24, 2012 15:01
GitHub: Wuzzy2
IRC: Wuzzy
In-game: Wuzzy
Contact:

Re: [Mod] Hallelujah Mountains [cloudlands]

by Wuzzy » Post

Does not work with MCL2 a6bb31f2a604050c054572f70bfce8dc404519be, MT 0.4.16, cloudlands 6c5bff30201a5286d89f4d96026cb8a624365797. Crashes after flying around a bit.

Code: Select all

WARNING[Main]: Map::getNodeMetadata(): Block not found
WARNING[Main]: Map::removeNodeMetadata(): Block not found
ACTION[Server]: singleplayer granted (server, shout, fly, password, bring, kick, teleport, ban, debug, zoom, announce, noclip, maphack, weather_ma      nager, privs, fast, basic_privs, help_reveal, give, protection_bypass, rollback, settime, interact) privileges to singleplayer
ERROR[Main]: ServerError: AsyncErr: Lua: finishGenRuntime error from mod 'cloudlands' in callback environment_OnGenerated(): /home/wuzzy/.minetest      /mods/cloudlands/cloudlands.lua:685: attempt to call field 'get_biome_data' (a nil value)
ERROR[Main]: stack traceback:
ERROR[Main]:       /home/wuzzy/.minetest/mods/cloudlands/cloudlands.lua:685: in function 'renderCores'
ERROR[Main]:       /home/wuzzy/.minetest/mods/cloudlands/cloudlands.lua:903: in function </home/wuzzy/.minetest/mods/cloudlands/cloudlands.lua:873      >
ERROR[Main]:       /usr/share/minetest/builtin/game/register.lua:412: in function </usr/share/minetest/builtin/game/register.lua:392>
ACTION[Server]: [doc] Wrote player data into /home/wuzzy/.minetest/worlds/Cloud2/doc.mt.
WARNING[Server]: Undeclared global variable "name" accessed at ...test/games/mineclone2/mods/ENTITIES/mobs_mc/villager.lua:658
ACTION[Server]: singleplayer leaves game. List of players:
ACTION[Main]: [doc] Server shuts down. Player data is about to be saved.
ACTION[Main]: [doc] Wrote player data into /home/wuzzy/.minetest/worlds/Cloud2/doc.mt.
ERROR[Main]: Invalid boolean setting in /home/wuzzy/.minetest/mods/cloudlands//settingtypes.txt "cloudlands_generate_ores      (Generate ores inside islands - patches of dirt, sand etc.) bool false^M"
ERROR[Main]: Invalid integer setting in /home/wuzzy/.minetest/mods/cloudlands//settingtypes.txt "cloudlands_vine_coverage      (Vine coverage %) int 30 0 100^M"

User avatar
DrFrankenstone
Member
Posts: 231
Joined: Tue May 24, 2016 05:36
GitHub: treer
Location: Australia
Contact:

Re: [Mod] Hallelujah Mountains [cloudlands]

by DrFrankenstone » Post

Wuzzy wrote:Does not work with MCL2 a6bb31f2a604050c054572f70bfce8dc404519be, MT 0.4.16
Looks like the ability to get_biome_data() was added in Sep 2017, and is in Minetest 0.5.x, but not 4.16/4.17.

That's a bit of a bummer, I'll mark it as a 0.5 mod for now. I'll also see if there's a way to obtain biome data in 4.16, and if it's building on any other features exclusive to 0.5.

User avatar
texmex
Member
Posts: 1753
Joined: Mon Jul 11, 2016 21:08
GitHub: tacotexmex
In-game: tacotexmex

Re: [Mod] Hallelujah Mountains [cloudlands]

by texmex » Post

obtain biome data in 4.16
Many have tried, many have failed :)

User avatar
TumeniNodes
Member
Posts: 2941
Joined: Fri Feb 26, 2016 19:49
GitHub: TumeniNodes
IRC: tumeninodes
In-game: TumeniNodes
Location: in the dark recesses of the mind
Contact:

Re: [Mod] Hallelujah Mountains [cloudlands]

by TumeniNodes » Post

Nice, I love it.
Works best imho with mapgen flat. Cool water falls to drown the peasants below.
I'm definitely gonna tinker with this
Nice work
A Wonderful World

User avatar
DrFrankenstone
Member
Posts: 231
Joined: Tue May 24, 2016 05:36
GitHub: treer
Location: Australia
Contact:

Re: [Mod] Hallelujah Mountains [cloudlands]

by DrFrankenstone » Post

The latest version of Amidstest maps Hallelujah Mountains. If you're exploring in god mode then this makes it much easier to scout interesting locations than flying in random directions.

There's also an improved version of Hallelujah Mountains out as well. It adds minor fixes, frozen ponds, and the ability to restrict where islands can spawn based off biomes.

Image
Attachments
Amidstest displaying a map of Hallelujah Mountains.
Amidstest displaying a map of Hallelujah Mountains.
amidstest2.png (62.27 KiB) Viewed 11393 times

User avatar
Mantar
Member
Posts: 584
Joined: Thu Oct 05, 2017 18:46
Contact:

Re: [Mod] Hallelujah Mountains [cloudlands]

by Mantar » Post

Getting some errors on current minetest master:

Code: Select all

"018-11-27 15:11:06: ERROR[Main]: Invalid boolean setting in /home/mantar/.minetest/mods/cloudlands//settingtypes.txt "cloudlands_use_lowland_biomes        (Use lowland biomes) bool false
"018-11-27 15:11:06: ERROR[Main]: Invalid boolean setting in /home/mantar/.minetest/mods/cloudlands//settingtypes.txt "cloudlands_generate_ores        (Generate ores inside islands - patches of dirt, sand etc.) bool false
"018-11-27 15:11:06: ERROR[Main]: Invalid integer setting in /home/mantar/.minetest/mods/cloudlands//settingtypes.txt "cloudlands_vine_coverage        (Vine coverage %) int 30 0 100
Lead dev of Exile, git repo: https://codeberg.org/Mantar/Exile

User avatar
DrFrankenstone
Member
Posts: 231
Joined: Tue May 24, 2016 05:36
GitHub: treer
Location: Australia
Contact:

Re: [Mod] Hallelujah Mountains [cloudlands]

by DrFrankenstone » Post

I'm having some difficulty reproducing this. Are those all of the invalid setting errors you're seeing?

I don't have Minetest running on a linux box at the moment and it may be a windows/linux difference... you can confirm it's not caused by the extra \r on the end of the values by running:

Code: Select all

cd /home/mantar/.minetest/mods/cloudlands
sed -i 's/\r//g' settingtypes.txt
and see if that fixes it (let me know if it does, cos that's a bug).

Otherwise, if you PM me these files I can check them:

Code: Select all

    mods/cloudlands/settingtypes.txt, 
    mods/cloudlands/world.mt
    minetest.conf

User avatar
Mantar
Member
Posts: 584
Joined: Thu Oct 05, 2017 18:46
Contact:

Re: [Mod] Hallelujah Mountains [cloudlands]

by Mantar » Post

DrFrankenstone wrote:I'm having some difficulty reproducing this. Are those all of the invalid setting errors you're seeing?
Yeah, that's all of them, at least for this mod.
I don't have Minetest running on a linux box at the moment and it may be a windows/linux difference... you can confirm it's not caused by the extra \r on the end of the values by running:

Code: Select all

cd /home/mantar/.minetest/mods/cloudlands
sed -i 's/\r//g' settingtypes.txt
and see if that fixes it (let me know if it does, cos that's a bug).
Well what do you know, that was it! Weird, I didn't think lua would care about CR/LF nonsense, I'm pretty sure python doesn't. The errors are gone, and the settings show up in the advanced->mods section.

Oh are the vines supposed to be this short when using plantlife_modpack?
Attachments
TinyVines.jpg
TinyVines.jpg (301.07 KiB) Viewed 11393 times
Lead dev of Exile, git repo: https://codeberg.org/Mantar/Exile

User avatar
DrFrankenstone
Member
Posts: 231
Joined: Tue May 24, 2016 05:36
GitHub: treer
Location: Australia
Contact:

Re: [Mod] Hallelujah Mountains [cloudlands]

by DrFrankenstone » Post

Mantar wrote:Weird, I didn't think lua would care about CR/LF nonsense, I'm pretty sure python doesn't. The errors are gone, and the settings show up in the advanced->mods section.
Thanks for trying that, I'll convert the file in cloudlands and raise a ticket that Minetest parses differently depending on OS. (Googling made me suspect Lua's file-reading functions may behave differently, and the regex used to parse bools and int ranges happens to not permit a \r in the value part)
Mantar wrote:Oh are the vines supposed to be this short when using plantlife_modpack?
They do start short like that, but those are 'alive' vine-ends and they grow pretty quickly. In hindsight, I should have made islands should spawn with already fully grown vines :/

User avatar
Mantar
Member
Posts: 584
Joined: Thu Oct 05, 2017 18:46
Contact:

Re: [Mod] Hallelujah Mountains [cloudlands]

by Mantar » Post

Cool. I just thought something was up since it didn't look like those gorgeous screenshots upthread. This is an excellent mod, man.
Lead dev of Exile, git repo: https://codeberg.org/Mantar/Exile

User avatar
Wuzzy
Member
Posts: 4786
Joined: Mon Sep 24, 2012 15:01
GitHub: Wuzzy2
IRC: Wuzzy
In-game: Wuzzy
Contact:

Public Service Announcement

by Wuzzy » Post

WARNING!
This mod contains obfuscated code. Don't trust it.

Excerpt from the “source code”:

Code: Select all

local function addDetail_secrets__shhh_dont_tell_people(w,x,y,z,A,B)if x.biome~=nil and x.radius>18 and x.depth>20 and x.radius+x.depth>60 then local C=math_floor(x.x/x.type.territorySize)local D=math_floor(x.z/x.type.territorySize)local E=x.temperature<=5 and x.x%3==0 and noise_surfaceMap:get2d({x=x.x,y=x.z-8})>=0;local F=x.humidity>=60 and x.temperature>=50;if(C+D)%2==0 and(E or F)then local G=7;local H=5;local I=12;local J=ALTITUDE+x.y-I;local K=G*G;local function L(M,N,O,P,Q,R)local S=vector.direction(M,N)local T={}if S.x>0 then T.x=-1 else T.x=1 end;if S.z>0 then T.z=-1 else T.z=1 end;local U={}local function V(W,X,Y)if y[W]==nodeId_air then local Z={}local _;local function a0(a1)return a1~=nodeId_air and a1~=j and(a1==Y or Y==nil)end;if a0(y[W+T.x])and X.x+T.x>=A.x and X.x+T.x<=B.x then if T.x>0 then _=2 else _=3 end;Z[#Z+1]={solid_vi=W+T.x,facing=_}end;if a0(y[W+T.z*z.zstride])and X.z+T.z>=A.z and X.z+T.z<=B.z then if T.z>0 then _=4 else _=5 end;Z[#Z+1]={solid_vi=W+T.z*z.zstride,facing=_}end;local a2=nil;if#Z==1 then a2=Z[1]elseif#Z==2 then local a3=math.abs(S.x)/(math.abs(S.x)+math.abs(S.z))if randomNumbers[(X.x+X.y+X.z)%256]<=a3 then a2=Z[1]else a2=Z[2]end end;if a2~=nil and(Y==nil or Y==y[a2.solid_vi])and y[a2.solid_vi]~=j then local a4=a2.solid_vi;local a5=1;while X.y+a5<=B.y+1 and y[a4+a5*z.ystride]~=nodeId_air and y[W+a5*z.ystride]==nodeId_air and(Y==nil or Y==y[a4+a5*z.ystride])do a5=a5+1 end;U[#U+1]=function(w)local a6=y[a4+(a5-1)*z.ystride]if a6~=j and a6~=nodeId_air and y[W]==nodeId_air then w[#w+1]={pos={x=X.x,y=X.y+a5-1,z=X.z},node={name=nodeName_vine,param2=a2.facing}}end end end end end;local a7={}local function a8(X,O,P,a1,a9)local aa={}local ab=-1;for ac=X.y,X.y+P-1 do if ac>=A.y and ac<=B.y then if ab==-1 then ab=z:index(X.x,ac,X.z)else ab=ab+z.ystride end;for ad,ae in ipairs(O)do local af=X.x+ae.x;local ag=X.z+ae.z;if af>=A.x and af<=B.x and ag>=A.z and ag<=B.z then local W=ab+ae.x+ae.z*z.zstride;if y[W]==nodeId_air then if a9~=nil then aa[#aa+1]=function()a9(X,W,af,ac,ag)end end else y[W]=a1;a7[#a7+1]=W end end end end end;for ad,ah in ipairs(aa)do ah()end end;local function ai(X,aj,ak,al)local function am(an,ao,ap,aq,ar)if aq>an.y and aq+1<=B.y then V(ao+z.ystride,{x=ap,y=aq+1,z=ar})else V(ao,{x=ap,y=aq,z=ar},Q)end end;local as=am;local at=j;if not ak or nodeId_vine == nodeId_ignore then as=nil end;if al and s~=nodeId_ignore then at=s end;a8(X,O,P,at,as)if aj and Q~=nil then a8({x=X.x,y=X.y-1,z=X.z},O,1,Q,as)end end;local au=x.humidity>=VINES_REQUIRED_HUMIDITY and x.temperature>=VINES_REQUIRED_TEMPERATURE;if R==nil then R=0 end;local av=round(vector.distance(M,N))local aw=vector.divide(vector.subtract(N,M),av)local X=vector.new(M)local ax=vector.new(M)ai(M,0>=R,false)for ay=1,av do ax.x=ax.x+aw.x;if round(ax.x)~=X.x then X.x=round(ax.x)ai(X,ay>=R,au,ay<=R-1 and ay>=R-2)end;ax.y=ax.y+aw.y;if round(ax.y)~=X.y then X.y=round(ax.y)ai(X,ay>=R,au,ay<=R-1 and ay>=R-2)end;ax.z=ax.z+aw.z;if round(ax.z)~=X.z then X.z=round(ax.z)ai(X,ay>=R,au,ay<=R-1 and ay>=R-2)end end;for ad,az in ipairs(U)do az(w)end;for ad,aA in ipairs(a7)do if y[aA]==j then y[aA]=nodeId_air;surfaceData[aA]=nodeId_air end end end;local function aB(af,ac,ag,a1)if af>=A.x and af<=B.x and ag>=A.z and ag<=B.z and ac>=A.y and ac<=B.y then y[z:index(af,ac,ag)]=a1 end end;local function aC(X)return X.x>=A.x and X.x<=B.x and X.z>=A.z and X.z<=B.z and X.y>=A.y and X.y<=B.y end;local aD=math_max(x.z-G,A.z)local aE=math_max(x.x-G,A.x)local aF=math_min(x.x+G,B.x)local aG=math_max(J,A.y)local aH=z:index(aE,aG,aD)for ag=aD,math_min(x.z+G,B.z)do for af=aE,aF do local aI=(af-x.x)*(af-x.x)+(ag-x.z)*(ag-x.z)if aI<K then local aJ=1-aI/K;for ac=math_max(A.y,J+math_floor(1.4-aJ)),math_min(B.y,J+1+math_min(H-1,math_floor(0.8+H*aJ)))do y[aH+(ac-aG)*z.ystride]=nodeId_air end end;aH=aH+1 end;aH=aH+z.zstride-(aF-aE+1)end;local Q;if x.biome.node_top==nil then Q=nil else Q=minetest.get_content_id(x.biome.node_top)end;if F then local aK=vector.new(x.type.territorySize*math.floor(x.x/x.type.territorySize)+math.floor(0.5+x.type.territorySize/2),J,x.type.territorySize*math.floor(x.z/x.type.territorySize)+math.floor(0.5+x.type.territorySize/2))local aL=vector.new(x.x,J,x.z)local S=vector.direction(aL,aK)local aM=4;if S.z<0 then aM=-aM end;aL.z=aL.z+aM;aL.x=aL.x+2;S=vector.direction(aL,aK)if vector.length(S)==0 then S=vector.direction({x=0,y=0,z=0},{x=2,y=0,z=1})end;local aN=vector.add(vector.multiply(S,x.radius),{x=0,y=-4,z=0})local aO=4+math.floor(0.5+x.radius*0.3)local O={{x=0,z=0},{x=-1,z=0},{x=1,z=0},{x=0,z=-1},{x=0,z=1}}L(aL,vector.add(aL,aN),O,2,Q,aO)local aP=x.x;local aQ=x.z-aM*0.75;aB(aP,J,aQ,i)if nodeId_gravel~=nodeId_ignore then aB(aP,J-1,aQ,nodeId_gravel)end;if s~=nodeId_ignore then aB(x.x-6,J+3,x.z-1,s)aB(x.x+4,J+4,x.z+3,s)aB(x.x+6,J+1,x.z-3,s)end else if(o~=nodeId_ignore or n~=nodeId_ignore)and k~=nodeId_ignore and l~=nodeId_ignore then local aR=vector.new(x.x-3,J,x.z-7)local aS=vector.add(aR,{x=0,y=0,z=1})local aT=vector.add(aR,{x=8,y=8,z=0})local aU=vector.add(aT,{x=0,y=0,z=-1})local aV=vector.add(aU,{x=-16,y=16,z=0})L(aV,aU,{{x=0,z=0}},3,Q,0)L(aT,aR,{{x=0,z=0}},2,Q,0)local O={{x=0,z=0},{x=1,z=0},{x=0,z=2},{x=0,z=1},{x=1,z=1}}L(aS,aS,O,2,Q,0)aB(x.x+2,J,x.z+5,k)aB(x.x+2,J,x.z+4,l)aB(x.x+2,J,x.z+2,k)aB(x.x+2,J,x.z+1,l)aB(x.x+4,J,x.z+2,k)aB(x.x+4,J,x.z+1,l)if m~=nodeId_ignore then w[#w+1]={pos={x=x.x,y=J+2,z=x.z+6},node={name=minetest.get_name_from_content_id(m),param2=4}}end;if p~=nodeId_ignore then aB(x.x-4,J+1,x.z+5,p)end;if q~=nodeId_ignore then aB(x.x-6,J+1,x.z,q)end;if r~=nodeId_ignore then aB(x.x-5,J,x.z+2,r)end;if s~=nodeId_ignore then aB(x.x+4,J+4,x.z-3,s)end;local aW;local aX=nil;local aY=nil;if n~=nodeId_ignore then local X={x=x.x-3,y=J+1,z=x.z+6}local aZ=minetest.get_name_from_content_id(n)local a_=minetest.get_node(X).name;if a_~=aZ and not a_:find("chest")then minetest.set_node(X,{name=aZ})end;if aC(X)then y[z:index(X.x,X.y,X.z)]=n;aY=minetest.get_inventory({type="node",pos=X})end end;if o~=nodeId_ignore then local X={x=x.x-2,y=J+1,z=x.z+6}aW=X;if minetest.get_node(X).name~=t then minetest.set_node(X,{name=t})end;if aC(X)then y[z:index(X.x,X.y,X.z)]=o;if not u then aX=minetest.get_inventory({type="node",pos=X})end end end;if aX~=nil or aY~=nil then local b0="yvjr"if x.biome.node_filler~=nil then local b1=string.lower(x.biome.node_filler)..string.lower(x.biome.node_top)if string.match(b1,"ice")or string.match(b1,"snow")or string.match(b1,"frozen")then b0="pjl"end end;local b2=a("klmhbsa:ivvr_dypaalu")if u then b2=a("tjs_ivvrz:dypaalu_ivvr")end;local b3=ItemStack(b2)local b4={}b4.title=a("Dlkklss Vbawvza")b4.text=a("Aol hlyvzaha pz svza.\n\n".."Vby zhschnl haaltwaz aoyvbnovba aol upnoa zhclk tvza vm aol\n".."wyvcpzpvuz.\n".."                                    ---====---\n\n".."Aopz pzshuk pz opnosf lewvzlk huk aol dlhaoly kpk uva aylha\n".."aol aluaz dlss. Dl ohcl lushynlk h zolsalylk jyhn pu aol "..b0 ..",\n".."iba pa pz shivyvbz dvyr huk aol jvukpapvu vm zvtl vm aol whyaf\n".."pz iljvtpun jhbzl mvy jvujlyu.\n\n".."Xbpal h qvbyulf pz ylxbpylk. Uvivkf dpss svvr mvy bz olyl.\n\n".."TjUpzo pz haaltwapun av zaylunaolu aol nspklyz.\n\n".."                                    ---====---")local b5="Zvtl vm aol mbu vm Tpuljyhma dhz wpjrpun hwhya ovd pa ".."dvyrlk huk alhzpun vba hss paz zljylaz. P ovwl fvb luqvflk :)".."\n\n".."'uvivkf mvbuk pa! P dhz zv ohwwf hivba aoha, P mpuhssf ruld ".."zvtlaopun hivba aol nhtl aol wshflyz kpku'a ruvd.' -- Uvajo 2012 ".."(ylkkpa.jvt/y/Tpuljyhma/jvttluaz/xxlux/tpujlyhma_h_wvza_tvyalt/)".."\n\n".."Mlls myll av pucvscl aol lnn, vy Ilya, pu vaoly tvkz."if u then b4.text=b4.title.."\n\n"..b4.text end;b4.owner=a("Ilya Zohjrslavu")b4.author=b4.owner;b4.description=a("Kphyf vm Ilya Zohrslavu")b4.page=1;b4.page_max=1;b4.generation=0;b3:get_meta():from_table({fields=b4})if aX==nil then if aY~=nil then aY:add_item("main",b3)end else aX:add_item("books",b3)local dummyPlayer={}dummyPlayer.get_player_name=function()return"server"end;minetest.registered_nodes[t].on_metadata_inventory_put(aW,"books",1,b3,dummyPlayer)end end;if aY~=nil then local b6;local function addIfFound(b7,b8)for ad,b9 in ipairs(b7)do if minetest.registered_items[b9]~=nil then b6=ItemStack(b9 .." "..b8)aY:add_item("main",b6)break end end end;addIfFound({"mcl_tools:pick_iron","default:pick_steel"},1)addIfFound({"binoculars:binoculars"},1)addIfFound({"mcl_core:wood","default:wood"},10)addIfFound({"mcl_torches:torch","default:torch"},3)end end end end end end;
This is impossible to read. Even if you fix the intendations, the variable names are mostly just one letter long, so this will require some reverse engineering, and that's time I don't want to waste. I noticed there are a few strings that can be decoded with ROT19.

Why is the source code obfuscated? What dirty secrets do you have to hide? Answer me, DrFrankenstone!

User avatar
firefox
Member
Posts: 1709
Joined: Wed Jan 14, 2015 07:34
In-game: Red_Fox
Location: Xanadu

Re: [Mod] Hallelujah Mountains [cloudlands]

by firefox » Post

BEST MOD EVAAA!!!111!!!1!!!11

no really, i like it. the shapes and formations are awesome.
✨🏳️‍🌈♣️✨

User avatar
Mantar
Member
Posts: 584
Joined: Thu Oct 05, 2017 18:46
Contact:

Re: Public Service Announcement

by Mantar » Post

Wuzzy wrote:Why is the source code obfuscated? What dirty secrets do you have to hide? Answer me, DrFrankenstone!
It's hiding spoilers about a secret feature of the mod.
Lead dev of Exile, git repo: https://codeberg.org/Mantar/Exile

User avatar
texmex
Member
Posts: 1753
Joined: Mon Jul 11, 2016 21:08
GitHub: tacotexmex
In-game: tacotexmex

Re: Public Service Announcement

by texmex » Post

Mantar wrote:
Wuzzy wrote:Why is the source code obfuscated? What dirty secrets do you have to hide? Answer me, DrFrankenstone!
It's hiding spoilers about a secret feature of the mod.
So it seems. I guess that’s the issue with open game development, all spoilers are available in the code. At the same time, open source code should be as legible as possible.

User avatar
Wuzzy
Member
Posts: 4786
Joined: Mon Sep 24, 2012 15:01
GitHub: Wuzzy2
IRC: Wuzzy
In-game: Wuzzy
Contact:

Re: [Mod] Hallelujah Mountains [cloudlands]

by Wuzzy » Post

Well, it should be a no-brainer, but in case it isn't:
I just like to clarify that source code that was deliberately obfuscated is never open source or free software. The definitions of open source and free software explicitly state that obfuscated code does not count because it is impractical to use.

wziard
Member
Posts: 127
Joined: Mon Oct 29, 2018 19:12

Re: [Mod] Hallelujah Mountains [cloudlands]

by wziard » Post

Ideally the author should provide the unobfuscated source as well. Complete with instructions on how to compile it into the obfuscated source (probably some lua minifier?) .

Maybe the author could put the source of the obfuscated part in a zipfile named 'SPOILER-source-of-easter-egg.zip'

This way paranoid people could check what it contains, and other people could take their word for it and enjoy the surprise by not opening the zip.

sofar
Developer
Posts: 2146
Joined: Fri Jan 16, 2015 07:31
GitHub: sofar
IRC: sofar
In-game: sofar

Re: [Mod] Hallelujah Mountains [cloudlands]

by sofar » Post

Obfuscated code is not allowed on contentdb and the forums. Please consider removing it.

User avatar
DrFrankenstone
Member
Posts: 231
Joined: Tue May 24, 2016 05:36
GitHub: treer
Location: Australia
Contact:

Re: Public Service Announcement

by DrFrankenstone » Post

The source was available to anyone requesting it, though that section's existence was a bit of a spoiler so I never advertised it.

Now the cat's out of the bag, there's a branch in the git repo called "this_is_a_spoiler"

(to clarify, picking at the code in that section wasn't spoiling or cheating, it was an alternate path to finding any alleged secrets and was arranged to give some early successes. Though with the git branch now, the effort can no longer reward you with knowledge nobody else has)
Wuzzy wrote:Why is the source code obfuscated? What dirty secrets do you have to hide? Answer me, DrFrankenstone!
The obfuscation is there to protect you from the terrible secret of space.

(I know you don't believe this and don't think you need protecting, but what you don't know - the thing you don't understand, is that space has a secret. A terrible secret)
Last edited by DrFrankenstone on Tue Feb 26, 2019 08:40, edited 1 time in total.

User avatar
Wuzzy
Member
Posts: 4786
Joined: Mon Sep 24, 2012 15:01
GitHub: Wuzzy2
IRC: Wuzzy
In-game: Wuzzy
Contact:

Re: [Mod] Hallelujah Mountains [cloudlands]

by Wuzzy » Post

Well, I don't think it makes even sense to hide source code for spoiler reasons. The whole logic behind this does not make sense.
If you read source code of anything, you should automatically assume that you will be spoiled. I mean, it's the source code! The biggest spoiler of all. Duh! xD
It's like skipping ahead in a book or movie. You could, in theory, do it, but everyone knows its going to spoil. ;)

I also don't like the idea of putting the “real” code in a separate branch. But this is more for practical reasons than anything else. This just makes your mod pointlessly more complicated.

User avatar
rubenwardy
Moderator
Posts: 6972
Joined: Tue Jun 12, 2012 18:11
GitHub: rubenwardy
IRC: rubenwardy
In-game: rubenwardy
Location: Bristol, United Kingdom
Contact:

Re: [Mod] Hallelujah Mountains [cloudlands]

by rubenwardy » Post

It also draws attention to it, for example here we are talking about it
Renewed Tab (my browser add-on) | Donate | Mods | Minetest Modding Book

Hello profile reader

User avatar
Wuzzy
Member
Posts: 4786
Joined: Mon Sep 24, 2012 15:01
GitHub: Wuzzy2
IRC: Wuzzy
In-game: Wuzzy
Contact:

Re: [Mod] Hallelujah Mountains [cloudlands]

by Wuzzy » Post

Streisand effect confirmed! xD

ShadMOrdre
Member
Posts: 1118
Joined: Mon Dec 29, 2014 08:07
Location: USA

Re: [Mod] Hallelujah Mountains [cloudlands]

by ShadMOrdre » Post

Just a random question/statement regarding the obfuscation....

There are mods posted here which are are in different languages, for the obvious reason, of course, that the author speaks that language.

But, technically, to non native speakers of those languages, the code is thus obfuscated, not by intentional obfuscation, but by merely being unreadable.

I do seem to recall that there is a suggestion or outright forum rule that mods be posted in english, but I may be wrong. Please don't read anything into that either, it is just an innocent question/statement.

So.....

User avatar
Linuxdirk
Member
Posts: 3217
Joined: Wed Sep 17, 2014 11:21
In-game: Linuxdirk
Location: Germany
Contact:

Re: [Mod] Hallelujah Mountains [cloudlands]

by Linuxdirk » Post

ShadMOrdre wrote:There are mods posted here which are are in different languages, [...], to non native speakers of those languages, the code is thus obfuscated, [...]
This is the most ridiculous comment I've ever read about obfuscated code!

Post Reply

Who is online

Users browsing this forum: Ahrefs [Bot], Semrush [Bot] and 20 guests