Time Nick Message 00:03 sapier ~ tell xyz I fixed that particular unaligned access but I can't be sure there aren't others I haven't encountered yet 00:03 ShadowBot sapier: O.K. 09:15 nore ~tell sapier could you link me to the relevant code please? 09:15 ShadowBot nore: O.K. 11:58 sfan5 who made formspecs so horrible 11:58 sfan5 ? 11:58 proller moron 11:59 proller somebody must rewrite formspec to json 11:59 sfan5 that is not the problem 12:00 celeron55 "horrible" is a rather vague description of a problem 12:02 celeron55 so, can we have a less vague description of a problem? 12:03 sfan5 yes 12:05 sfan5 look how nicely the field aligns: http://i.imgur.com/K6djBiJ.png 12:09 sfan5 also button_exit does not send checkbox fields 12:11 celeron55 fix it 13:08 PilzAdam nore, https://forum.minetest.net/viewtopic.php?pid=133192#p133192 13:08 PilzAdam the 200 range sounds familiar 13:08 nore yep... 13:09 nore how does the sound thing work? I hadn't even thought sound would be affected by this 13:22 celeron55 i am guessing the problem is in the call to updateListener 13:44 sfan5 wtf? 13:44 sfan5 why do we have many throw LuaError(NULL, ...) calls in a function where you have lua_State 13:44 sfan5 (first param to LuaError is supposed to be lua_State) 13:45 sfan5 makes debugging mods harder because you don't get a backtrace 13:47 celeron55 probably because somebody didn't figure that out and just copypasted stuff 13:50 sfan5 pushing in 5 mins: http://ix.io/b5W 14:09 nore pushing in 15 mins if nobody objects: https://github.com/Novatux/minetest/commit/9ded524b291cf3d6989afc4d86b0e2f1b4a5598a 14:14 Hiradur speaking of sound... openal soft's hrtf would be nice 14:52 sapier https://github.com/minetest/minetest/commit/03297acbf4efba9a19a7f31950cb6f2bc3c65ec8 I don't really understand the bug but wasn't there a way to fix this without doing multiple back and forward conversions? 14:54 sapier the code does wide_to_narrow(wstrgettext(chartowchar_t(gettext()))) ... previous one did gettext() only ... despite of a lot of timing changes I don't see how this is supposed to fix a bug 15:10 celeron55 that definitely should not be needed, why was it pushed? 15:11 celeron55 i am guessing something is still wrong in setting up locales on some platform 15:11 celeron55 but the commit message doesn't give any hint about which 15:12 celeron55 instead it just monkey-patches aroun dit 15:12 celeron55 around it* 15:12 celeron55 well that was a wrong term 15:12 celeron55 ugly workaround anyway 15:25 nore ok, pushing the sound fix... it has been much more than 15 mins... 15:50 restcoser stresstesting ruins mod:http://i.imgur.com/JFWC462.jpg 15:51 restcoser i guess i can call it stable 15:51 restcoser max 400ms/chunk 16:54 Selat As I understand this https://forum.minetest.net/viewtopic.php?id=4807 added 6D rotations support. Can I determine direction of node without Lua? (i.e. using only information from ContentFeatures). 16:57 nore Selat, direction is stored in param2 16:58 celeron55 you check from ContentFeatures whether it has CPT2_FACEDIR, and then if so, the value is in param2 16:58 kahrl or simply call MapNode::getFaceDir() 16:58 Selat I meant 6D facedir. 16:59 celeron55 that's the thing 16:59 celeron55 what do you expect? 16:59 Selat If i'm not mistaken CPT2_FACEDIR is only for horizontal rotations. 17:00 kahrl no 17:00 celeron55 6D facedir just extends the value to more rotations 17:00 Selat And how can I check whether it extended or not? 17:00 celeron55 it always is 17:00 celeron55 the old values are a subset of the new ones 17:01 nore 0-3 are the old ones, 0-23 the new ones 17:01 nore you have axisdir = int(param2/4), and rotation within it = param2 mod 4 17:02 Selat Maybe we are talking about different things. How can I check whether node can have 6 or 4 directions? 17:02 nore you can't, they always have 24 IIRC 17:03 kahrl if it has CPT2_FACEDIR, it can have 24, otherwise it can have 1 17:03 celeron55 actually CPT2_WALLMOUNTED has positioning too 17:03 kahrl right 17:03 celeron55 it has six possibilities, which the 6d facedir change didn't change at all 17:04 Selat Example: torch have 6 directions and chest only 4. How can I check this number? 17:05 celeron55 chest has 24 directions; it's the 6d facedir 17:05 celeron55 torch is wallmounted (CPT2_WALLMOUNTED) 17:06 Selat So to have 6 possible directions node must be wallmounted? 17:06 Selat For example pistons. 17:06 celeron55 yes, and it only works for nodes with certain properties (can't remember what exactly) 17:06 kahrl I assume pistons use 6d facedir as well 17:07 celeron55 just use the 6d facedir if you don't have a clear reason to use something else 17:07 kahrl so they can have 24 directions, except some of them look and work the same 17:08 Selat Sorry, but I can't understand what is 6D facedir. ContentParamType2 have only wallmounted and facedir. 17:08 kahrl facedir == 6d facedir 17:08 celeron55 you're the one who started talking about 6d facedirs :P 17:09 Selat When I set paramtype2 to facedir it can have only 4 directions. 17:09 celeron55 (note that dimensions don't equal directions) 17:09 celeron55 it can have 24 (0...23) 17:10 celeron55 those are the every possible direction and rotation you possibly can place a cube so that it still is axis-aligned 17:39 sfan5 who decided it would be a good idea for 127.0.0.1 always having all privs (non-revokeable)? 17:40 sfan5 that makes local testing a pain in the ass 17:40 celeron55 umm what 17:40 celeron55 in non-singleplayer? 17:40 celeron55 only singleplayer should have automatic privileges 17:46 troller all privs = cheats 17:46 celeron55 yeah now we need proller comments 17:47 troller survival game cant have cheats on h j k keys 17:47 celeron55 those privileges aren't given on singleplayer unless you specifically configure it so 17:48 celeron55 so, more non-problems? 17:57 sfan5 celeron55: non-singleplayer 17:58 sfan5 wait wut 17:58 sfan5 I don't even 17:58 sfan5 what? 17:58 sfan5 it works fine now 18:02 celeron55 is there still the ancient logic where the "name" setting determines an implicit administrator? 18:02 sapier yes 18:03 celeron55 can that be what sfan5 stumbled on 18:03 sfan5 name is not set 18:04 celeron55 combined with the client writing the config on shutdown, it can make quite arbitrary behavior sometimes 18:04 sfan5 I use seperate config files 19:04 ShadowNinja sfan5: That's intentional. I forget why, but I think it avoids duplicate tracebacks. /me checks 19:05 sfan5 if you have duplicate tracebacks that is not the place to 'fix' it 19:07 ShadowNinja sfan5: The error handler generates a backtrace. Passing a lua_Stack generates another one. 19:07 sfan5 I cannot reproduce that 19:08 sfan5 the error I had did not produce any stacktrace at all 19:08 ShadowNinja sfan5: Add your patch and cause a LuaError to be thrown in a Lua -> C++ call. 19:09 sfan5 please paste me some example output 19:12 ShadowNinja Alright, one minute. Can you check this? http://ix.io/b5d 19:17 sfan5 seems fine 19:19 Selat Currently there is no support of facedir-like nodes placing but for 6 directions? 19:20 ShadowNinja sfan5: http://pastebin.ubuntu.com/7097329/ 19:20 ShadowNinja Second one's empty though. 19:21 sfan5 well 19:21 sfan5 why do we have 2 in the first case? 19:21 sfan5 the bug I had had 0 backtraces without my patch 19:23 kahrl Selat: minetest.rotate_and_place 19:25 Selat So for each such node I'll have to write script that will rotate it? 19:25 kahrl Selat: just add on_place = minetest.rotate_node to the node definition 19:28 Selat Maybe it's a good complement for facedir and wallmounted? I think such type of rotation is widely used. 19:28 kahrl what do you mean? 19:28 ShadowNinja sfan5: LuaError::LuaError() can't get the traceback, see http://pastebin.ubuntu.com/7097386/ 19:29 ShadowNinja (with http://ix.io/b6a) 19:29 Selat Add it to ContentParamType2. 19:29 kahrl it = ? 19:30 ShadowNinja sfan5: Specifically what caused no error? 19:30 ShadowNinja s/error/traceback/ 19:30 sfan5 I think it was return false in on_rightclick 19:31 Selat facedir-like rotation with 6 directions. I understand that 6D facedir supports it, but auto-rotating may be very usefull for modding. 19:36 ShadowNinja sfan5: Returning false in on_rightclick isn't an error? 19:37 Selat I think it' better to remove from engine "wallmounted" and process "auto-rotating" in some builtin scripts. 19:37 sfan5 ShadowNinja: I'm not sure, try return true 19:40 kahrl Selat: you can't remove wallmounted without providing a viable alternative (6d facedir isn't one) 19:41 Selat Hmm.. Wallmounted isn't subset of facedir so it's bad idea. 19:41 ShadowNinja sfan5: Hmmm, yes, no traceback. But your patch doesn't add one either. 19:42 sfan5 ShadowNinja: I notices that too 19:42 ShadowNinja http://pastebin.ubuntu.com/7097456/ 19:43 sfan5 anyway: why do we have two stacktraces in the first place? 19:44 ShadowNinja sfan5: Because LuaError::LuaError generates one if you pass it a lua_State. 19:44 ShadowNinja And the error handler generates one too. 19:45 sfan5 then one of them shouldn't generate one 19:46 ShadowNinja sfan5: Which is what happened before... 19:46 sfan5 why do we have a lua_State param to LuaError then 19:46 sfan5 ? 19:47 ShadowNinja sfan5: I believe it was used somethere. 19:48 ShadowNinja sfan5: The return value of on_place/on_rightclick isn't collected until after lua_pcall returns and the stack has unwound. 19:48 sfan5 then why does LuaError generate a stacktrace too? 19:49 ShadowNinja sfan5: Because it's used somewhere... 19:49 ShadowNinja I'll have to check before your commit to see where. 19:49 sfan5 mh 19:49 sfan5 so LuaError is used somewhere where there is no stacktrace generator 19:50 sfan5 apparently it is too hard to just use the stacktrace function there where LuaError is used 19:50 sfan5 s/LuaError/LuaError's lua_state/ 19:50 ShadowNinja grep -r 'Error(L' src/script/ src/script/lua_api/l_object.cpp: throw LuaError(L, "skybox expects 6 textures"); 19:51 ShadowNinja Perhaps the parameter should be removed. 19:51 ShadowNinja That function should be passing NULL too. 19:52 Selat What about adding something like nodes hierarchy? And callbacks of all base nodes will be called first. 19:52 ShadowNinja sfan5: Is it O.K. if I revert your commit and remove the lus_State parameter? Then add a more informative error message for on_place/rightclick. 19:53 sfan5 ShadowNinja: yes 19:54 Selat This will prevent code duplication. 20:00 ShadowNinja I'll push my serializeStructToString changes too. 20:15 sapier is someone messing around with serverlist right now? 20:15 sapier nope ... forget about it 20:47 ShadowNinja sfan5: This should give you a more informative error: http://ix.io/b6u 20:48 PilzAdam http://ix.io/b6u/diff too 20:48 sfan5 TIL 20:48 sfan5 ShadowNinja: seems fine 22:41 ShadowNinja Where was that thing that we set up where you could make a donation for a particular issue? It didn't get mentioned anywhere but this channel so it was never used, but maybe it would if we mentioned it on the donations page. 22:42 ShadowNinja There was also a debate about the distribution of rewards. We could have it all go to an account used for the website and the like, it's unlikely that anyone's going to make a significant ammount anyway. 22:58 iqualfragile ook, so paramat is creating some seriously awsome mapgens, why not try to integrate them (or at least a selection) into core? (or are there plans about that allready?) 23:00 ShadowNinja iqualfragile: The core should provide a way for mods to make good mapgens, which it already does. It should also provide it's own, good, mapgen. But we shouldn't have Lua mods in the core. Those belong in games. 23:01 iqualfragile ShadowNinja: i know, i meant: rewriting them into native code 23:01 troller and lua mapgens 10x+ slower than c++ 23:01 iqualfragile i do not think 10 times is accurate 23:02 troller more than 10 23:02 iqualfragile with luajit it should be somewhere around 1.2 to 5 23:02 troller test it 23:02 ShadowNinja iqualfragile: I beleive paramat has made some suggections for the core mapgen, and more helpfull ones would be appreciated. 23:02 ShadowNinja iqualfragile: Look at his nick... 23:02 ShadowNinja troller: Not helpfull. 23:02 iqualfragile oht its proller? 23:02 troller also lua mapgen single threaded 23:02 iqualfragile ShadowNinja: what are helpfull ones? 23:03 iqualfragile i think mapgen is hard to decide on by comite 23:03 iqualfragile why not just let him do his thing and produce a great new mapgen for core? 23:04 troller c++ mg make one block per 50-200ms, paramat's lua per 2000-4000 ms 23:04 ShadowNinja iqualfragile: kwolekr is already working on v7. A maogen in the core should provide extensive capablities for mods to change it. 23:05 troller you cant make cube world with v7 23:05 iqualfragile he is working on that for the better part of a year allready 23:05 ShadowNinja troller: Real stats: minetest.env:set_node: 6854.4ms -- VoxelManip: 153.5ms -- Mapgen in core: 60ms (estimated) 23:05 iqualfragile and i have to admit that i do not see too much progress on it 23:06 iqualfragile paragen is a lot more complex then core mapgen v6/7 23:06 ShadowNinja He's been busy I suppose. 23:06 ShadowNinja If paramat's good at C++ he might be able to help developing it. 23:06 ShadowNinja hmmmm: ^ 23:07 troller i tried flexrealm day ago, it generate block per 2000+ms 23:07 troller it use vm. 23:08 troller its - real stats. 23:09 iqualfragile paramat stated that watershed takes about 2 secs per block, improvable in my opinion 23:09 hmmmm iqualfragile, I have been encouraging paramat to move some of his own mapgens to the core 23:09 troller core i7 can generate 8 blocks in one time by core mapgen, and only one by lua 23:09 hmmmm they are nice 23:10 hmmmm the problem is the biomes 23:10 iqualfragile explain please 23:10 hmmmm that's the main reason why mapgen v7 isn't making any progress 23:10 hmmmm there are several fundamentally different strategies to biome generation 23:11 hmmmm one is the thing that everybody has been using so far, voronoi diagram of points on a 2d plane of heat and humidity 23:11 hmmmm that's how paramat's biomes work and pretty much every biome mod ever 23:12 hmmmm the problem with this is that it can't take into account terrain shape when determining biome 23:12 hmmmm so a desert might actually be a very hilly region next to an ocean 23:12 hmmmm tihs is a problem that needs to be solved for meaningful progress to be made in mapgen v7 23:13 ShadowNinja hmmmm: If you haven't found a solution in so long then mabe it's better to have odities like deserts next to oceans than to never finish it. 23:14 hmmmm i'd rather do it right or not do it at all 23:14 hmmmm i had a distinct vision in mind for mapgen v7 23:15 iqualfragile i do not quite seem to see the problem: 1) choose some random direction for wind 2) generate terain (height) 3) offset height by some blocks in wind direction (or choose some litle bit smarter tactic) and influence humidity 23:15 iqualfragile done :D 23:15 hmmmm uh.. sure 23:15 ShadowNinja iqualfragile: Some things are easy to say and hard to code... 23:15 hmmmm you go do that then 23:16 ShadowNinja If they even end up working. 23:16 iqualfragile thats how it works in real life 23:16 sapier iqualfragile can you have a look if mod download fails for you too? 23:17 iqualfragile sure 23:17 iqualfragile yep, minetest crashes 23:17 iqualfragile 3) needs to be changed a bit 23:17 sapier hmm it doesn't crash for me but I get a 0 bytes file 23:17 ShadowNinja iqualfragile: Real life is more complicated than that, and you can't wait a few million years for the earth to form. 23:18 iqualfragile as the actual height is not all that relevant but you just need a true/false map containing if a mountain is higher then cloud height at this position 23:20 iqualfragile (which would make clouds rain in front of the mountain, making that have a higher humidity and obviously reduce the humidity behind the mountain 23:20 iqualfragile ) 23:21 iqualfragile you could use another map containing if the terrain is higher/lower then sea level to increase humidity in wind directon behind it 23:21 iqualfragile would that realy be hard to code? 23:21 hmmmm anyway my idea was to have biomes in the way minecraft does 23:21 hmmmm like ocean is a biome 23:21 sapier prior doing global warming simulations within minetest can we first fix moddownload? ;-) 23:21 hmmmm there's a mountain biome 23:21 hmmmm and so on and so forth 23:22 hmmmm i know how minecraft does this as well 23:22 hmmmm it's just fundamentally incompatible with the way map generation works in minetest 23:23 iqualfragile i do not think having mountain/ocean (in general terrain height influencing) "biomes" in the same category as vegetation/material influencing biomes (those are real biomes btw) in the same category 23:24 iqualfragile sapier: sure, one sec 23:25 iqualfragile wtf did i just write 23:26 iqualfragile i do not think having mountain/ocean (in general terrain height influencing) "biomes" in the same category as vegetation/material influencing biomes (those are real biomes btw) is a smart idea. 23:26 iqualfragile better. 23:30 iqualfragile hmmmm: thoughts? 23:30 hmmmm iqualfragile: at the end of the day, a vertical node column has a specific biome associated with it and it can't be both at the same time, the way this system is set up. 23:31 hmmmm what about hills vs. mountains (not based on height alone, but rather terrain variance)? 23:31 iqualfragile what about it? 23:31 hmmmm you don't want to differentiate between the two? 23:33 paramat hiya :) 23:33 hmmmm a biome, for me, isn't just a certain area for certain types of vegetation 23:33 iqualfragile hi paramat we were talking about you 23:33 hmmmm the word 'biome' itself means a lot more. 23:33 hmmmm i think he came here because he saw biomes being discussed in the logs 23:33 paramat yeah i saw on logs 23:34 paramat hehe 23:34 paramat iqualfragile, the only person who should convert my mapgens to c++ is me :) but im not interested at the moment 23:34 paramat feeling a bit burnt out from 1 year obsessive modding 23:35 NakedFury but thats terrain modding, perhaps switch to another modding type? 23:35 hmmmm what might be interesting is to indeed have two different types of biomes... one climate related, and one terrain related 23:35 paramat currently i prefer to use lua and the amazing LVM 23:36 hmmmm maybe a terrain related one could be like 3 bits of the biome value and then the bottom 5 can be vegetation 23:36 iqualfragile hmmmm: in case one would just stick with the one bit height map hills would most likely not matter, as they probably wont surpass cloud height 23:36 hmmmm no idea what you mean by the cloud height thing.. 23:36 iqualfragile in case you would add a few bits for details the answer is obvious 23:37 hmmmm terrain base biomes, hrmm 23:37 hmmmm I originally, very very early on, had this same concept 23:38 hmmmm there were "ice mountains" and "mountains" or "ice planes" and so on 23:38 hmmmm in Minecraft, there isn't a combination of each biome 'attribute' per se 23:38 hmmmm they're just their own distinct biomes 23:38 paramat Peacock and i consider the core should provide powerful tools for lua mapgen, so games can have their own, slightly slower mapgens 23:38 iqualfragile i know, but why not be better then minecraft? 23:39 hmmmm minecraft's generation/biome strategy is completely different and fundamentally incompatible. 23:39 iqualfragile paramat: sure can you provide an idea how the api should look like? that might help a lot 23:40 troller c++ mg mod api ;) 23:40 paramat iqualfragile, we already have it, VOXMYNIPS 23:41 hmmmm ...lol, vox my nips 23:41 paramat althogh 4s per chunk is a little slow for a server ... 23:41 hmmmm what the hell 23:41 troller but now your mapgens terribly slow 23:41 paramat yeah 6s per chunk now feel slow to me hehe 23:41 hmmmm the thing about lua mapgens is that lua is slower to begin with, so whenever you add a lot of heavy logic you slow the whole thing down 23:41 hmmmm there's no replacement for an in-core mapgen 23:41 paramat yes 23:42 iqualfragile paramat: what are your thoughts on generating maps in two fundamentally different steps, the first one for height, the 2nd one for surface material, vegetation and stuff? (for details read the logs) 23:42 hmmmm which is why you really should add your flagship mapgen to the core 23:42 paramat i can make a fast mapgen only through lua simplicity, some of mine are 2spc 23:42 paramat yeah sorry still catching up on logs 23:43 hmmmm I can't come up with a decent way to calculate terrain variance without taking samples of a kernel 23:44 paramat mapgen in 2 steps is v6/v7, i do it all in one go using the 3D noise 'density' to define layers 23:44 paramat ^ hmmmm did v5 do that? 23:44 iqualfragile might be a bit hard to implement if you realy want to compleetly define humidity via terrain features (lakes, mountains, oceans, hills) 23:45 hmmmm v5 had no biomes lol 23:45 iqualfragile because you would need to generate a huge radius of terrain to aproximate humidity at any given point 23:45 paramat i might convert a mapgen to c++ in future, just don't feel like it right now :) 23:45 iqualfragile but shouldnt generating terrain be fast? 23:46 iqualfragile additionally you would only need to do that once and could save them for the future (might need a slight change to map format) 23:47 paramat "paragen is a lot more complex then core mapgen v6/7" nope 23:47 paramat my mapgens are extremely simple, and use simple lua language 23:47 iqualfragile the alternative would be to generate 2d perlin noise for humidity and just influence it a bit by regional terrain features 23:48 paramat yeah i sometimes reduce humidity with altitude 23:48 iqualfragile paramat: in that case: congratulations, the results still look quite complex, which is good 23:48 hmmmm hmm 23:48 iqualfragile paramat: nah, the idea was to choose a random (but fixed) wind direction and influence the surrounding humidity 23:49 iqualfragile (because clouds stop and rain in front of mountains and the air has less to no humidity left behind mountains) 23:49 hmmmm if the biome system were to remain completely separated from the map generation process, it would make the terrain biome determining-algorithm have to rescan the entire block and block neighbors 23:49 iqualfragile finished reading logs? 23:49 iqualfragile hmmmm: not quite 23:49 hmmmm you sure have it figured out don't you 23:49 iqualfragile you could generate the heightmap the when you generate the terrain 23:50 hmmmm you don't really understand what the problem is i'm referring to 23:50 iqualfragile ok, sorry, rethingking 23:50 iqualfragile ok, i still understand it the same way, care to explain? 23:50 hmmmm I wonder if I can calculate terrain variance by doing things like a fast gaussian blur 23:51 hmmmm i need to think about things for a while, give me a minute.. 23:52 hmmmm basically, calculating variance is an O(n) operation 23:52 hmmmm if you were to calculate variance for the entire block that's O(n * m) 23:52 iqualfragile only problem (i see) left to solve is determining the terrain height realy quick (or just not do that, generate the full terrain (in paralel, should be possible) and save it for later modifications) 23:52 hmmmm the idea is to change variance calculation to O(1) 23:52 hmmmm maybe it could be statistical variance, maybe it can be something that approximates the same behavior 23:53 iqualfragile we are now talking about the same problem, right? 23:53 hmmmm i don't know, I'm talking to myself more or less 23:53 iqualfragile sure, just carry on 23:54 celeron55 hmmmm: what kind of variance are you looking for? 23:54 hmmmm i don't know. statistical variance or whatever 23:54 hmmmm i just said, some way to determine how much the terrain varies from column to column in an O(1) way 23:54 celeron55 but, like, the map generator is likely to create the variance in a quite simple way 23:55 celeron55 so trying to figure out the internal variance input of the mapgen from the final output of it is kind of insane 23:55 hmmmm how I would do this if I didn't need to be optimal is to just get the height values in some set radius and then calculate variance of those samples 23:55 celeron55 (i've said this a long time before too; just reminding) 23:55 hmmmm yeah, I know, that's why I said it's difficult to keep them separate systems 23:56 celeron55 i think just designing a reasonable interface between them would work well 23:56 celeron55 but dunno really 23:56 iqualfragile wouldnt it be enought to check if the perlin_noise - heightramp = border and choose the highest match on terrain generation? 23:56 hmmmm celeron, early on what I tried to do is make the turbulence selector noise act as the terrain variance values as well 23:57 hmmmm it didn't give good results 23:57 hmmmm (you know, the noise that modulates the noise?) 23:57 hmmmm s/turbulence/persistence/ 23:57 celeron55 how were the results bad? 23:58 sapier I wonder if it'd be more simple to do biomes the other way round. meaning not specifying them on mapgen but simulating them in runtime 23:58 celeron55 i can kind of guess though 23:58 iqualfragile sapier: wat? 23:58 hmmmm lack of good correlation between actual terrain variance and selected biomes 23:58 hmmmm sapier, you need to be able to figure out the biome to select the top nodes/filler nodes 23:58 hmmmm at the very least 23:58 hmmmm also vegetation and whatever 23:59 hmmmm anyway these are all old ideas pretty much 23:59 sapier that's what I meant ... not generating vegetation on mapgen but simulating their spread in runtime 23:59 hmmmm I've thought things through, I've tried a whole bunch of stuff, it just doesn't work well