Time Nick Message 01:07 Exio hmmmm: ROFL WAT are u saing 01:07 Exio hmmmm: i dun understnd dat 01:38 Exio i really think the spawn "place" should be based on the seed-in-some-way if not static_spawnpoint is set and you "being able" to get it from lua 01:38 Exio (so some seed == always some place, maybe that is how it actually works, no idea really) 01:38 Exio i should check and try to implement that :P 01:39 Exio oh, this isn't #mt 01:53 VanessaE aw shit 01:54 VanessaE hmmmm: are you here? we've got a mapgen glitch. 01:54 VanessaE http://digitalaudioconcepts.com/vanessa/hobbies/minetest/images/VanessaE_World_Map.png 01:54 VanessaE north end of the map. notice the hard edges between chunks. 01:54 VanessaE map_meta.txt has never been edited on this world. 01:56 VanessaE north end of the 'main' mass of the map I mean, not the outlying stuff. Around x=-448, z=2384 in the world. 02:01 VanessaE don't mind the chunk that looks like stone with exposed minerals, that's not related. I refer to the other chunks to the right of it that clearly don't belong to this map. 02:33 hmmmm vanessae, i really can't help you there 02:33 hmmmm i don't have enough information to go on at all, and i completely doubt it's a "mapgen bug" 02:34 hmmmm there's just no reason for the mapgen to "bug out" 02:34 hmmmm what might've happened is that map_meta.txt became unreadable for some external reason and it tried to use a different seed 02:34 VanessaE I don't see what else it could be, but consider: someone else was reporting the same thing, and I saw just this same thing again on someone else's map just a week or two ago. I dismissed both as local glitches, but since this is the third time it's happened to me, I'm a little suspect now. 02:36 hmmmm adding a /deleteblock command is definitely on my to-do list 02:37 VanessaE indeed, it looks like the seed has been changed 02:37 hmmmm right now, you're able to do it manually from the sqlite3 shell 02:37 VanessaE I'm comparing my current map_meta.txt against my backup from March 1. 02:37 hmmmm mmm 02:37 hmmmm i noticed you disabled v6_biome_blend 02:38 VanessaE I didn't disable anything. 02:38 VanessaE this is how it came out of the box. 02:38 VanessaE I don't ever edit that file. 02:38 VanessaE I also notice that my current map_meta.txt has that flag, along with trees and caves, but on march 1 those flags were not present. 02:39 VanessaE nor were mgv6_np_apple_trees and mgv6_np_humidity 02:39 VanessaE I believe mauvebic said that he notice the same thing - if those flags were missing, the whole file got rewritten 02:40 VanessaE noticed* 02:42 VanessaE the change happened some time between March 6 and March 22 02:42 VanessaE (going from what's in my backups, sorry I don't have better granularity than that) 02:42 VanessaE er march 16 to march 22. 02:43 hmmmm i recall you had some kind of read-only filesystem problem 02:43 hmmmm could've caused it 02:43 VanessaE me? not that I recall? 02:43 hmmmm mmmm.. must be thinking of someone else then 02:43 VanessaE but wait a sec. 02:44 VanessaE even if the that were the case, how could it rewrite the map_meta.txt if the fs is read-only? :) 02:45 VanessaE my march 22 backup matches the current running copy, btw. 02:46 VanessaE March 16: http://pastebin.ubuntu.com/5681707/ 02:46 VanessaE March 22 and current: http://pastebin.ubuntu.com/5681708/ 02:47 VanessaE mauvebic said he found that if he simply deleted those couple of flags from map_meta.txt, the whole file gets rewritten - as if MT considers the file to be corrupt. 02:47 hmmmm maybe it is corrupt 02:47 VanessaE look at those pastes. 02:48 VanessaE he restored from backups and then modified the restored copy to test it 02:48 hmmmm hm 02:48 hmmmm i'll check it out 02:48 hmmmm ahhhhhh 02:48 hmmmm shooooooot 02:49 hmmmm i know what the problem was 02:49 hmmmm it had to do with the update for jungles and apple trees 02:49 VanessaE [04-05 02:29] lemme try something, ill copy the apple_trees and humidty lines over to the map, THEN copy it to new minetest and start that up, see what happens 02:49 VanessaE [04-05 02:35] thats it 02:49 VanessaE [04-05 02:35] the file got overwritten because of the missing lines 02:49 VanessaE ok 02:49 hmmmm well, i promise it won't happen again 02:49 VanessaE sorry I didn't catch it sooner. 02:49 hmmmm you can change your lfags to whatever you'd like 02:50 hmmmm i should think of a better way to handle missing parameters, i guess 02:50 VanessaE can you look at that map image and tell me how to nuke the bad data from the file? 02:51 hmmmm find the coordinates of those blocks that are bad, divide the coordinates by 16, then use the blockpos-to-integer formula to come up with the ID in the database 02:51 * VanessaE changes the seed back to the correct one. 02:52 hmmmm then go into sqlite3 and DELETE FROM blcoks WHERE id=; 02:52 hmmmm blocks* 02:52 VanessaE ehm... 03:07 VanessaE I'm also noticing this: 03:07 VanessaE http://digitalaudioconcepts.com/vanessa/hobbies/minetest/screenshots/screenshot_3713013400.png 03:08 VanessaE the water surface. Why it is two different shades? 03:08 VanessaE (the time was already daylight for several minutes, so it's not a day/night transition) 03:08 VanessaE why it is?? *sigh* 03:08 VanessaE why is it* 03:10 hmmmm i don't know... 03:13 VanessaE oh this is interesting 03:13 VanessaE if I scoop up a bucket of water from the darker region, it is replaced by the infinite water code - and that one new node is light in color like the lighter regions. 03:16 VanessaE and if I spill a bucket of water of either shade onto the lighter shade, that one spot turns dark to match the darker stuff 03:17 VanessaE but both the light and dark regions are being regenerated when I scoop up a bucketful, so both are infinite. 03:18 VanessaE http://digitalaudioconcepts.com/vanessa/hobbies/minetest/screenshots/screenshot_3713627216.png 03:31 VanessaE ok, confirmed that plugging my old seed works (flew around the bad area and let it generate several new chunks, which match the old map data) 03:31 VanessaE so now I have a T-shaped section of weird data :) 03:31 VanessaE or more like lower-case 'r' shape. 03:48 RealBadAngel https://github.com/minetest/minetest/pull/605 03:48 RealBadAngel looks like better try on luajit 03:50 VanessaE oh hell, this actually bundles luajit doesn'it it? 03:50 VanessaE -i 03:50 VanessaE er 03:50 RealBadAngel quick look says so 03:51 RealBadAngel with compile option 03:51 VanessaE this goes against what the luajit team suggests. 03:52 RealBadAngel well, we used to have bundled lua too ;) 03:52 RealBadAngel if it will work i have nothing against it 03:53 VanessaE I'd prefer to use a separate luajit repository honestly. 03:53 VanessaE unless we can always be sure that the bundled one is kept up-to-date. 03:53 RealBadAngel that should be easy 03:54 RealBadAngel when new version will be out, just update our files, thats all 03:55 VanessaE mmmh 03:55 VanessaE I guess 03:55 VanessaE as long as it works properly, I suppose it doesn't matter if it's up-to-date 03:55 VanessaE as long as it doesn't fall far enough behind to break stuff at the next update. 03:56 RealBadAngel from what i can see this solution keeps old lua 03:56 RealBadAngel thats good 03:57 hmmmm yeah, vanessa, no idea. 03:57 hmmmm so what's up with slamming me with all these minor issues? 03:57 RealBadAngel hmmmm, was worrying that luajit is not workin on ALL platforms, so users could just use regular lua there 03:58 VanessaE hmmmm: because you're convenient? ;) 03:58 VanessaE (seriosuly, because you're the mapgen expert) 03:58 hmmmm realbadangel, yeah, it was intended to be that way in the first place 03:58 hmmmm i really want to get luajit in 03:58 VanessaE RealBadAngel: have you tested that patch? 03:58 hmmmm do i use BlindBanana's pull request? 03:58 hmmmm is there a problem with that one? is there somebody else who has a better patch? 03:59 RealBadAngel about water, i think its an issue with flowing/still water, flowing is displayed incorrectly 03:59 VanessaE hmmmm: I think use that other one, by AngelCry 03:59 VanessaE (#605) 03:59 RealBadAngel hmmmm, check out latest one 03:59 hmmmm also speaking of lua 03:59 hmmmm i really need some opinions here 03:59 RealBadAngel havent tested it yet, just woke up and saw it 03:59 hmmmm mapgen.lua was designed for a time when there was a single map generator 03:59 hmmmm what if there were several of them 04:00 hmmmm a mapgen.lua on initialize could "subscribe" itself to a list of mapgens 04:00 hmmmm so the current mapgen.lua would register itself to be called for v6 and indev 04:00 hmmmm but not on singlenode, since that's quite silly 04:00 VanessaE hmmmm: rewrite mapgen.lua to be specific to mapgen v6 (and v5?), rename it accordingly, and make a new one with a new name for v7 04:00 hmmmm and v7 would have something else too 04:01 hmmmm what do you guys think, yes? 04:01 hmmmm it's ultimately necessary, since DecorationDef is going to screw up everything 04:01 RealBadAngel its quite easy 04:02 RealBadAngel depending on setting open different file 04:02 hmmmm also PilzAdam, i need ice and dirt_with_snow blocks in minetest_game 04:02 VanessaE since I don't poke around with the map generator, and since the only real overrides in Lua are by redefining a few functions et.al (rather than directly modifying mapgen.lua), I don't see a problem with rewriting it. 04:02 VanessaE hmmmm: use the nodes, definitions, and textures from the snow biomes mod 04:02 hmmmm don't tell me to use it 04:02 hmmmm i don't bother with the lua side of things at all 04:02 VanessaE nonono, not "the mod" 04:02 VanessaE the pieces thereof. 04:02 hmmmm i know, but i'm not bothering with that at all 04:02 VanessaE ok 04:02 hmmmm that's totally pilzadam's territory 04:03 hmmmm for a couple reasons 04:03 VanessaE I wonder if I should try to duplicate its functionality using plants_lib. 04:03 hmmmm mostly i just want to limit my scope so my obligations aren't sneakily growing 04:03 VanessaE I understand 04:03 hmmmm but also minetest_game is a minefield 04:03 hmmmm and i'm not very interested in doing minetest_game related things in the first place 04:03 VanessaE let's rename it :-) minefield_game ;) 04:04 hmmmm so why are desert sand blocks so orange 04:04 VanessaE random. 04:04 hmmmm i think i brought this up before, but i feel like i'm on mars 04:04 VanessaE I wondered the same thing 04:04 VanessaE and I think it's ugly 04:04 hmmmm for real 04:04 VanessaE desert sand should look like regular sand does now, and regular sand should be lighter, less saturated. 04:04 hmmmm honestly 04:04 hmmmm YES 04:05 hmmmm that is exactly what i was going to say 04:05 hmmmm well, i was going to say "sand should look like it used to" 04:05 VanessaE lemme see what I can throw together in gimp 04:05 hmmmm also, what do you feel about the new dirt and dirt_with_grass textures... i always thought they were too saturated 04:06 VanessaE I think those are fine 04:06 hmmmm when i play on my own, i like to swap them with the original ones 04:09 VanessaE http://digitalaudioconcepts.com/vanessa/hobbies/minetest/images/Screenshot%20-%2004062013%20-%2012:09:07%20AM.png 04:09 VanessaE hmmmm: ^^^^ 04:10 hmmmm yes that's pretty nice 04:10 hmmmm how does it look in the actual game? 04:10 hmmmm not too washed out i hope 04:10 VanessaE Haven't tried yet, lemme save them out and see. 04:11 VanessaE oh NOT BAD. 04:12 hmmmm what should we do with desert stone now, you think? 04:12 VanessaE http://digitalaudioconcepts.com/vanessa/hobbies/minetest/screenshots/screenshot_3716898895.png 04:13 VanessaE desert stone? I'm not sure at all about it. 04:13 hmmmm hrmm 04:13 VanessaE with this change to default sand, default sandstone will need to be lightened a little to follow. 04:13 hmmmm i guess we'll just leave the stone as-is 04:13 hmmmm this is nice though, i really like it 04:14 jojoa1997|Tablet we should alias desert stone to be sand stone 04:14 jojoa1997|Tablet jk the stone is good 04:14 VanessaE http://digitalaudioconcepts.com/vanessa/hobbies/minetest/images/default_desert_sand.png 04:14 VanessaE http://digitalaudioconcepts.com/vanessa/hobbies/minetest/images/default_sand.png 04:17 VanessaE now with this lighter sand, we badly need a "dirty sand" node to aid the transition on seabeds between sand and dirt. 04:18 VanessaE (on land, a "dirty, grassy sand" node is needed) 04:18 hmmmm i'll get something done quick for people to play around with 04:18 jojoa1997|Tablet red sand 04:18 jojoa1997|Tablet i seen some nice deserts 04:19 jojoa1997|Tablet hmmmm what you making? 04:19 hmmmm the mapgen 04:19 jojoa1997|Tablet oh 04:20 jojoa1997|Tablet has anyone made an official to be added entity spawning or flower spawning to minetest 04:23 jojoa1997|Tablet how do i kick someone from my name 04:23 VanessaE hmmmm: more texture file links coming, for your consideration. 04:23 jojoa1997|Tablet it is registered but i am not usinbg that one name 04:25 VanessaE http://digitalaudioconcepts.com/vanessa/hobbies/minetest/images/default_sand_dirty.png 04:25 VanessaE http://digitalaudioconcepts.com/vanessa/hobbies/minetest/images/default_sand_grassy.png 04:25 VanessaE http://digitalaudioconcepts.com/vanessa/hobbies/minetest/images/default_desert_sand_grassy.png 04:25 hmmmm too many different kinds of sand, seriously.... 04:25 hmmmm maybe a mod for smooth transitions 04:26 VanessaE maybe. 04:26 hmmmm and you can insert all of those "edge" biomes on your own 04:26 VanessaE I figured these would be used in-world, but would just drop plain sand or desert sand. 04:27 VanessaE e.g. mapgen-only nodes (except if you wanna screw around with them in creative or so) 04:27 VanessaE that way the user only ever sees one kind of grass and two kinds of sand, like always. 04:28 VanessaE shall I try a lightened sandstone also? 04:28 VanessaE (to match the lighter sand color) 04:28 hmmmm the sandstone was made to match the original sand 04:28 VanessaE right 04:28 hmmmm it'd be nice if there was sandstone that was actually sand stone though 04:29 hmmmm like blocks of sand chizeled into bricks, it's used in desert temples in minecraft 04:29 VanessaE hm, looking at the default texture though, the color is fine, but yeah let's see if we can make this into rough blocks. 04:31 Jojoa1997 what about a block that is a chisler like a furnace cooks 04:36 jojoa1997|Tablet join the regular channel i have imposters there 04:36 VanessaE ooooooooo 04:36 VanessaE hmmmm: you're gonna LOVE this 04:37 VanessaE hmmmm: http://digitalaudioconcepts.com/vanessa/hobbies/minetest/screenshots/screenshot_3718414448.png 04:38 VanessaE brick-like sandstone. 04:38 jojoa1997|Tablet i like it 04:39 VanessaE http://digitalaudioconcepts.com/vanessa/hobbies/minetest/images/default_sandstone.png 04:39 VanessaE the actual texture file. 04:43 hmmmm nice 04:44 hmmmm was kinda hoping for larger bricks, though 04:44 jojoa1997|Tablet show do you add names to accounts 04:44 hmmmm these are really bricky bricks 04:44 VanessaE I thought about that, but I figured larger bricks might look wrong 04:44 hmmmm jojoa, no idea, but it's not a #minetest-dev question 04:44 hmmmm try to stay on topic please 04:45 VanessaE lemme see how it looks with a 1x2 pattern. 04:45 jojoa1997|Tablet sorry wrong channel thought was in #freenode 04:45 hmmmm hrmm 04:45 hmmmm in minecraft, biomes do more than what you probably think 04:45 hmmmm they also select the sky color and grass color 04:46 hmmmm i want to be able to do the sameish thing 04:46 jojoa1997|Tablet in minecraft the grass is tinted 04:46 hmmmm perhaps this will be possible with my colorlike node type in the future 04:49 VanessaE hmmmm: http://digitalaudioconcepts.com/vanessa/hobbies/minetest/screenshots/screenshot_3719113997.png 04:49 VanessaE 1x2 pattern like most other bricks 04:49 hmmmm that does look nice 04:50 jojoa1997|Tablet yeah 04:50 hmmmm so what do we call it, chiseled sandstone? 04:50 VanessaE yeah! 04:50 VanessaE or, sandstone brick for the large one 04:50 jojoa1997|Tablet you knpow with the chisel you could make different types of stone 04:50 VanessaE chiseled sandstone for the smaller bricks 04:50 VanessaE but that's too many types of sandstone. 04:50 jojoa1997|Tablet no 04:51 jojoa1997|Tablet Not if you use a machine to convert to all types 04:52 VanessaE Abe's opinion is that the smaller bricks look better, at least in the screenshot 04:52 jojoa1997|Tablet i like smaller bricks 04:53 VanessaE http://digitalaudioconcepts.com/vanessa/hobbies/minetest/images/default_sandstone2.png 04:53 VanessaE here's the larger bricks one. 04:53 jojoa1997|Tablet show us some single block pics? 04:53 jojoa1997|Tablet like how it would look in the world 04:53 VanessaE jojoa1997|Tablet: see above for the screenshot of the larger bricks in-world. 04:53 jojoa1997|Tablet saw 04:54 VanessaE that house is the only sandstone structure I have handy. 04:54 jojoa1997|Tablet i meant how it would look when you could see all three sides 04:54 VanessaE lemme get a shot of the interior. 04:54 jojoa1997|Tablet haha you modeled your house to be made of sand 04:56 VanessaE http://digitalaudioconcepts.com/vanessa/hobbies/minetest/screenshots/screenshot_3719518141.png 04:56 VanessaE best I can do without making a new structure for the sake the texture test. 04:57 jojoa1997|Tablet on the inside it looks too... 04:57 jojoa1997|Tablet simpl 04:57 jojoa1997|Tablet the inside should look detailed(small bricks) 04:58 VanessaE http://digitalaudioconcepts.com/vanessa/hobbies/minetest/screenshots/screenshot_3719634314.png 04:58 VanessaE the same room, rendered with the 1x4 pattern. 04:58 VanessaE having smaller bricks on one side versus the other would not work in practice. 04:58 jojoa1997|Tablet yeah i like the smaller one better 04:59 jojoa1997|Tablet looks more like stacking sand 04:59 jojoa1997|Tablet also it would add a difference between bricks of stone and clay 04:59 VanessaE hmmmm: opinions? 05:00 hmmmm gosh i dunno 05:00 hmmmm i like both of them 05:00 VanessaE haha 05:00 jojoa1997|Tablet i like both and if we could get a way to make them different ways that would be best 05:00 jojoa1997|Tablet get a chisler and problem solved 05:00 jojoa1997|Tablet one sec 05:00 VanessaE hmmmm: well then there's just one choice: make one of them default sandstone and make the other some kind of chiseled sandstone. 05:00 hmmmm i guess the 1x2 pattern is more like what you'd see used in the pyramids and what not 05:01 hmmmm definitely not... come on... leave sandstone the way it is 05:01 VanessaE (small/1x4 bricks = default, large/1x2 = chiseled) 05:01 VanessaE awwww 05:01 VanessaE spoil my fun :) 05:01 VanessaE ok, pick one as a 'chiseled' variant, the other...I dunno what to do with it 05:02 jojoa1997|Tablet http://www.minecraftwiki.net/wiki/Stonecutter 05:02 jojoa1997|Tablet that would work but call it a chisler 05:03 VanessaE ew, no 05:03 VanessaE this should require only a hand tool to cut 05:03 jojoa1997|Tablet or 05:03 jojoa1997|Tablet we could have a forge block that you have to put a tool in to use 05:03 jojoa1997|Tablet chisel for chiseling and hammer for enchancing tools 05:03 jojoa1997|Tablet there 2 birds with one stone 05:04 VanessaE naw. place a sandstone block, and hit it with a chisel tool to turn it into a chiseled brick block. 05:04 VanessaE that makes the most sense considering the general theme of minetest 05:04 jojoa1997|Tablet hit it again 05:04 jojoa1997|Tablet then what 05:04 jojoa1997|Tablet what if we want to convert back 05:04 VanessaE hit it again, nothing happens, or it becomes a 4x1 brick block, but I don't know if there's a reason to have both kinds of sandstone bricks. 05:05 jojoa1997|Tablet use the forge idea that also allows people to have their "enchanted" enhanced tools 05:05 VanessaE meh 05:05 VanessaE save that forge idea for one of the other games. 05:06 VanessaE I'm focused on 'common'. 05:06 jojoa1997|Tablet wht other games 05:06 jojoa1997|Tablet oh 05:06 jojoa1997|Tablet i was thinking the tool that goes into forge slot (type) is what happens 05:06 VanessaE naw, that's overkill for this. 05:07 VanessaE maybe in the 'build' game it might make sense, but this isn't for that, this is for default. 05:07 VanessaE we don't need a bunch of special machines in default. 05:07 jojoa1997|Tablet eh i ambored 05:07 jojoa1997|Tablet so i get crazy ideas 05:10 jojoa1997|Tablet what i think would be a good feature is a guidbook or something we get at the begining of the world. that way we know all the recipes 05:10 VanessaE that's better suited to a wiki. 05:10 jojoa1997|Tablet but not when someone doesnt knpow where the wiki is 05:10 jojoa1997|Tablet it also would help with other mods aka technic 05:11 jojoa1997|Tablet or pipeworks 05:13 VanessaE stay on topic, jojoa 05:14 jojoa1997|Tablet going to bed way too tired 05:14 VanessaE good n9ight. 05:14 VanessaE -9 05:15 jojoa1997|Tablet night 05:20 VanessaE hmmmm: well anyway, use whichever of those various images you feel are right. WTFPL, etc. 05:35 hmmmm well 05:35 hmmmm i just realized it's basically impossible to do the biome LUT idea 05:36 hmmmm this means that the more biomes you add, the slower the mapgen will get 05:36 VanessaE ew 05:37 hmmmm this leaves it as an open problem for someone to optimize it 05:37 hmmmm which will never happen 05:38 hmmmm from a simpler time when minecraft didn't take height into account at all, it was possible and very easy to do that 05:38 hmmmm i am looking at minecraft's source right now and it seems they have a biome cache, so they don't need to recompute values, but it doesn't _precompute_ values like i wanted to 05:43 hmmmm see, this is hard, minecraft isn't multithreaded but minetest is 05:43 hmmmm so i'd need to lock the cache whenever something requests values from it 05:44 hmmmm which would probably end up taking more time to acquire than it would've to just recompute the point value from scratch 05:54 hmmmm moreover, minecraft's solution to handling the third dimension (height) is very ugly; from what i understand, each biome has its own height class, which calculates its own voroni mapping 05:55 hmmmm doing things in a case-by-case basis like that is unacceptable for us 05:55 hmmmm i really wish it turned out to be as easy as looking at the modulating noise parameters, i really do.. would've saved all this trouble and biome calculations would be an O(1) lookup 05:58 hmmmm i guess this will warrant more investigation if it turns out to be an actual problem later on when people add about 80 biomes and complain about how the mapgen is slower than it originally was 05:59 VanessaE fwiw, moretrees gets by with about 13 biome definitions and seems to do ok if not for the slowness of the tree lighting updates. 05:59 VanessaE so maybe it won't be as bad as you fear 05:59 hmmmm right now it's fantastic, on average 29ms at -O1, but this is without caves or trees spawning 05:59 hmmmm 29ms before lighting and liquid transform i should say 06:00 hmmmm compared to v6's ~45-60ms 06:00 hmmmm it's funny, i'm using 3d noise too, which is pretty heavyweight. 06:22 VanessaE I'm out. Night. 11:24 Taoki Why aren't naturally spawning flowers in by default yet? I thought they were and was surprised to see nothing about flowers in common yet o.o 11:25 Taoki Also, BRB 13:30 PilzAdam celeron55, the launchpad builds work fine, but for some reason survival and build are missing in the stable ppa 13:30 Exio PilzAdam: https://github.com/minetest/minetest/commits 13:31 Exio check the order 13:31 PilzAdam oh 14:21 sapier sometimes I wonder how it was possible to find really any single possibility to leak a texture ;-) 14:23 Exio here sapier - hmmmm 14:23 Exio there was something about the scriptapi what i don't recall :P 14:23 PilzAdam sapier, do you keep your scriptapi split up to date with the new additions to the API? 14:24 sapier I've only found a single place where an occassion to loose a texture wasn't taken 14:24 sapier partly 14:25 sapier if I do merge master to that patch I'll update it but I won't include unmerged pull requests 14:26 sapier noone ever thought about how to delete textures again either I need to use very dirty hacks to keep track or reorganize half of mintest :-( 14:28 hmmmm hmm yes 14:28 hmmmm we need to merge some of those pull requests now 14:29 hmmmm https://github.com/minetest/minetest/commit/1586cdac53935cd4735162ad8337c269f0dfa718 14:29 sapier so your merge order decides how much work is generated additionaly 14:29 hmmmm could nobody fix the title of the commit before they pushed 14:29 hmmmm ;; 14:29 hmmmm sapier, yes, basically 14:30 hmmmm it's much easier to have the one guy who's already converted all the other lua functions to what you have now than it is the opposite 14:31 PilzAdam hmmmm, that is a wonderful commit message 14:31 sapier ok give me a list of wich pull requests you want to add so I add them to my changeset that's much easier than selecting those changes back from master 14:31 hmmmm what's your opinion on minetest.get_player.ip() 14:32 hmmmm sapier, we'll merge them first 14:32 Zeg9 hmmmm, 5 minutes ago I was just thinking that a way to get IP of a player should be added... 14:33 sapier sometimes I think you hate me ... can I at least suggest not mixing api and other changesets? 14:33 hmmmm first of all, not sure if that is desirable for a mod to know IPs 14:33 hmmmm it could report them back to some central server 14:33 sapier I'm against this 14:33 Zeg9 Well, at least, there should be a way for admins to know it... 14:33 Zeg9 And people can read the mod's source 14:33 hmmmm you don't know what mods a server is using 14:33 hmmmm as a client 14:33 Zeg9 Right. 14:34 sapier ok zeg9 once you've read and understood mobfs source code we're talking about this point again ;-) 14:34 hmmmm and i wasn't aware that peer_id is the ip address 14:34 Zeg9 I was taling more about something like: grep get_player_ip $(find -name *.lua) 14:34 Zeg9 :D 14:34 hmmmm i thought it was an increasing number that started at 1 14:35 hmmmm oh, getPeerAddress 14:35 hmmmm didn't see that. 14:35 sapier I assume I'll finde a way to get this done without using the word "get_player_ip" if I do only half an hour of investigation 14:35 hmmmm what's the purpose of calling get_env(L)->getPlayer(name) again? you already did it on line 831 14:35 hmmmm golden rule of programming, don't repeat yourself 14:36 hmmmm not that it has a horrible effect, it's just unprofessional 14:36 hmmmm since sapier has to change that anyway, i'll merge it as-is 14:36 sapier and it's slow 14:37 hmmmm but there's still the question if the mods should really be able to know the IP addresses in the first place 14:37 sapier ok I'll have a look at it when merging 14:37 hmmmm I sure as hell don't want them to know 14:37 hmmmm sapier, i thought you had to change that line anyway, since you're replacing get_server(L) and get_env(L) calls? 14:37 sapier true 14:38 hmmmm should have more of a consensus 14:38 hmmmm i vote 'no' for get_player_ip 14:38 sapier I vote no too (for privacy reasons) 14:38 Zeg9 I vote no for it but yes for adding it in the server log. 14:38 Exio i don't like it either if you can't disable it 14:39 hmmmm the client would need to have the option 14:39 Exio (as player_ip = 127.0.0.1 in the .conf => it always return that value) 14:39 sapier maybe we can delay it until security settings are ready? 14:39 Exio or yes, that is better 14:39 hmmmm that would require a new network packet field 14:39 hmmmm or at least adding a flag 14:40 hmmmm yeah, get_player_ip won't be merged as-is, at least.. 14:41 sapier I strongly suggest adding this one: https://github.com/minetest/minetest/pull/587 14:41 * hmmmm rolls eyes 14:42 hmmmm there's already a conflict 14:42 hmmmm why not do that after the scriptapi 14:42 sapier not quite surprising 14:42 hmmmm yes, you see, this is what happens when you have a huge pull request 14:42 sapier this shouldn't be much of collision to scriptapi while it'll improve stability by some factors :-) 14:43 hmmmm i couldn't help but feel like this didn't need to be done all at once 14:43 hmmmm whatever, i'm cherry picking from it anyway 14:43 sapier this had to be done all at once because you didn't see any bug while having that much in place 14:44 sapier you can do but you'll waste lots of hours of investigation as you need to do this again with the cerry picked version 14:44 sapier and delete order of members is important to avoid crashes 14:44 hmmmm mmmmmmm.. 14:44 hmmmm i'll... figure it out 14:44 hmmmm alright minetest.get_version() 14:44 sapier ok :-) best wishes ;-) 14:44 hmmmm what do you guys think? 14:46 PilzAdam alright minetest.get_version() <- no 14:46 Exio i can't say anything, because it for checking features doesn't seem the "best way" for it, but it can be useful for mods doing other things 14:46 Exio as i'm not sure :P 14:46 hmmmm i'm not sure about get_version 14:46 hmmmm you can make a case for either way 14:47 sapier I don't see any benefit either ... unless you want to create a showstats mod 14:47 PilzAdam it useful, but not in the way sfan5 intended it 14:47 PilzAdam +is 14:47 hmmmm sure, you can check if some functions exist or not, but... you're falling down the slippery slope once you start doing that 14:47 sapier if this was added it'll be used to ensure mods running on specific minetest versions .. no matter if this was intended or not 14:48 hmmmm eventually, it'll be "correct" to check that every function exists before you use it 14:48 hmmmm with get_version, you'll get some version number and with a quick comparison, you can know exactly what functions you're guaranteed to have and what you aren't 14:48 PilzAdam or you say "requires latest minetest version" in the topic 14:49 sapier define "latest"? ;-) 14:49 hmmmm i'd say latest released 14:49 Exio i'd say the git commit, but :P 14:49 sapier so if you don't update for 2 versions your mod most likely won't work anymore 14:50 sapier I think it's worth adding not because it's clean style but because it's usefull 14:50 hmmmm hmm 14:50 hmmmm alright, first we'll merge pathfinding 14:50 sapier you could point a user to some older version for example 14:51 hmmmm the code style is a bit off, but i don't really think that matters as much since it's sapier's stuff 14:51 hmmmm just like how i don't complain about proller's stuff in mapgen_indev.cpp 14:51 hmmmm it's the mixing together of things or un-doing what others have that pisses me off 14:51 sapier You could've told me some days ago I would've fixed it already 14:52 hmmmm nevermind that 14:52 hmmmm you can fix it some other time if you'd like 14:52 sapier ok ... if I do have spare time ;-) 14:53 hmmmm by the way did you see the updated coding guidelines page on the wiki 14:53 sapier no didn't have a look at them 14:54 hmmmm http://dev.minetest.net/Code_style_guidelines#Miscellaneous 14:54 hmmmm :D 14:55 sapier I assume I have to fix this ... beeing part of standard doesn't mean anything if standard defines "is implementation specific" ;-) 14:55 sapier but no need to start again :) 14:56 sapier you don't lile m_? 14:56 hmmmm hungarian disaster 14:56 hmmmm if your method is too big to see that your variable wasn't declared anywhere in that scope, you have a size problem 14:57 sapier sorry but I'll ignore this one ... class members have to be m_ to be distinguishable from function local variables 14:57 sapier sometimes you have local variables very similar to members it's way to easy to take the wrong one for mistake 14:58 hmmmm http://www.joelonsoftware.com/articles/Wrong.html 14:58 jojoa1997|Tablet has anyone thought of tinting stuff like grass 14:58 hmmmm joel agrees with me 14:59 jojoa1997|Tablet and greas_* 14:59 jojoa1997|Tablet also tinted glass would be nice 15:00 sapier I don't even know who joel is ;-P 15:00 hmmmm omg 15:01 hmmmm oh, also, if your IDE has autocomplete (i know you use eclipse) it'll give you the member in a nice little pop-up listbox 15:01 hmmmm if the variable you're typing isn't in there, then it's not a member! 15:01 sapier unless you show a better way to get an obvious difference between function local and member variables I wont stop using m_ prefix ;-) ... as I believe globals are bad style in any way this isn't of any problem 15:01 sfan5 about the get_version thing: what if a function changes like e.g. minetest.get_inventorycube takes an array instead of three arguments, you can't check for that with lua 15:01 sapier autocomplete in eclipse is always disabled as it crashes way to often 15:02 hmmmm no no, globals still have g_ 15:02 sapier no problem as I don't use globals ;-) 15:02 sapier If you require to use a global variable your design is most likely to be broken 15:03 hmmmm as someone whose primary language is C, i find that offensive 15:03 * Jordach isnt taking sides as Jordach uses both C and Python 15:03 sapier it's not offensive globals are common source of error if you do multithreaded applications 15:05 Exio for me, there are things what used wrong lead to "that" 15:05 hmmmm you just need to exercise caution when using globals 15:05 Exio read that as, goto, globals, etc 15:05 hmmmm like we already do with any other shared data structures 15:05 Exio (in C) 15:05 sapier yes and any lock breaks parallel execution as it adds implicit synchronisation 15:06 hmmmm well, we can't exactly help it 15:06 sapier the less synchronisation is required the more you can gain from parallel execution thus avoiding globals is a very good way to improve performance for mutlithreaded applications 15:07 hmmmm s/globals/shared data structures/ 15:07 hmmmm again, see Map, that's not global but look, it has the same problem 15:07 sapier yes 15:07 hmmmm it's not like globals are evil 15:07 hmmmm it's just that when you have one of one thing, and many of others, there will always be that problem 15:07 hmmmm it's just the way life is 15:08 sapier sometimes "shared" is same as global ;-) 15:08 hmmmm i need my coffee 15:08 sapier every thread has a pointer to map so it's almost global 15:08 hmmmm and then i'll merge pathfinder 15:15 hmmmm this mouse is pissing me off 15:16 hmmmm it's like i need to fight with the computer to do something simple like unminimize a window 15:16 hmmmm dragging and dropping is nearly impossible 15:16 hmmmm and of course the scroll wheel's broken too 15:16 hmmmm i feel like i need to kill something 15:17 sapier < if you'd like, he can add the server enabling/disabling later 15:46 hmmmm which would require another protocol version bump...... weeeeeeeeeee 15:48 Calinou and? 15:48 Calinou this is incredibly useful 15:52 PilzAdam just zooming without any tool is too unrealistic 15:52 * VanessaE peeks in 15:53 VanessaE So have the client make sure the player has binoculars in their inventory somewhere. Problem solved. 15:53 proller hmmmm, sky water fix - https://github.com/proller/minetest/commit/97a91aa2ee7fa71d1d5a745ed4974df3af2ce2ef 15:53 VanessaE (it's not like a person can't just hack the client to zoom anyway, whether the server wants it to or not) 15:53 proller simple version, it works 15:54 PilzAdam proller, what about not finite liquids? 15:54 Exio VanessaE: /set fov 15 15:54 Exio without any mod 15:54 Exio suddenly, zoom 15:54 VanessaE Exio: right, so not even a hack. 15:54 PilzAdam Exio, nope 15:54 PilzAdam that sets the server setting 15:54 kaeza ^ 15:54 proller PilzAdam, they have no big problem with it 15:54 VanessaE regarding showing a player's IP, I vote no except that it (continue to) be shown in the logs. 15:54 Exio it doesn't work in multiplayer? 15:54 hmmmm proller they definitely do 15:54 kaeza Exio, no 15:55 hmmmm i noticed the problem when i was making my minecraft classic map converter 15:55 kaeza (I tried 15:55 kaeza ) 15:55 Exio ehm, ah 15:55 kaeza but as I discussed with someone the other day, rendering is client-side 15:56 PilzAdam hmmmm, there was a pull request for adding liquids that hit ignore to the queue again 15:56 kaeza so these kinds of things are nearly impossible to avoid 15:56 hmmmm pilzadam, ?? 15:56 hmmmm isn't that what we don't want to happen? 15:57 Exio wait wait 15:57 Exio is the FOV-setting.. server-side? 15:57 Exio i don't get it 15:57 PilzAdam if they arent added than they will fly even if the block under them gets loaded 15:57 Exio why the client needs to use the *fov* of the server in that terms? 15:57 PilzAdam Exio, /set sets server settings, not client settings 15:58 Exio let me try something 15:59 VanessaE that begs the question, why does the server even HAVE a fov setting? 15:59 PilzAdam VanessaE, that question doesnt make sense at all 15:59 VanessaE PilzAdam: nevermind 16:00 VanessaE just rambling - I'm not awake yet 16:02 proller hmmmm, commit fix? 16:03 hmmmm what branch is that on? 16:03 hmmmm oh nevermind 16:03 hmmmm stupid question 16:03 proller https://github.com/proller/minetest/tree/oreup 16:03 proller there is temporary springs fix 16:04 PilzAdam proller, you shouldnt merge upstream into your development branches 16:04 PilzAdam that makes it unable to rebase 16:04 PilzAdam better rebase against upstream/master 16:04 hmmmm it doesn't matter 16:04 hmmmm i just cherry pick 16:06 proller PilzAdam, no problem to rebase after merge 16:07 hmmmm hrmmm 16:07 hmmmm the big texture leak patch 16:07 hmmmm this is going to be harder.. 16:07 PilzAdam hmmmm, why havent you fixed the commit message? 16:08 hmmmm nothing even matters anymore 16:08 hmmmm whatever, from now on we'll fix commit messages if they need fixing 16:08 VanessaE (insert Metallica song here) 16:08 hmmmm it's an official policy 16:08 PilzAdam what does the "upper springs" commit do? 16:08 hmmmm ah 16:09 hmmmm yeah that's vague enough to need fixing i guess 16:09 hmmmm i'll do that 16:13 hmmmm and this was already done by the pathfinding patch, right? https://github.com/minetest/minetest/pull/434 16:13 hmmmm so it can be closed 16:13 PilzAdam yes 16:14 Exio what about this https://github.com/minetest/minetest/pull/604 ? 16:15 hmmmm i'm not sure... does it change the way we've always done things? 16:15 Exio what things? 16:15 Exio if you do cmake . it will be the same as always 16:15 hmmmm well alright 16:16 hmmmm sapier, i don't understand this https://github.com/sapier/minetest/commit/e0b861b0d46fe50b2ce88d7c825df8acc185c092 16:16 hmmmm why are you doing that again? 16:17 PilzAdam hmmmm, the skript updatepo.sh to create the translation files searches for wgettext(string) in the sourcecode 16:17 hmmmm oh :/ 16:18 hmmmm i guess he changed it before, and this became broken? 16:19 ds-2k Exio, setting the fov in minetest.conf on a client works when connecting to a server 16:19 ds-2k so clients can already change fov without modifying the source code 16:19 PilzAdam yes, the strings werent in the .po files for some time, then I added gettext() to it to fix it 16:19 hmmmm see, a lot of these things i have to take special consideration of... i can't merge the "cleanup very huge texture leak" commit as-is because then that'd break my extensive biome.cpp modifications 16:20 Exio ds-2k: ah 16:21 hmmmm and he made a good point of deleting items that are already in threads' queues when they're shutting down 16:21 hmmmm sapier does this with MeshUpdateThread but not EmergeThread 16:21 kaeza hmmmm, #604 does not affect users using the old way of building 16:21 hmmmm see, that's another thing i need to fix 16:21 hmmmm and seriously what's with the (*iter)-> crap, STOP IT! 16:21 ds-2k Exio: and in singleplayer /set sets client & server settings (same minetest.conf) 16:21 hmmmm [i] is plenty predictable 16:21 hmmmm stop with the unnecessary iterators 16:21 kaeza it always outputs the exe to /bin 16:22 kaeza (which in in-source-dir builds is just the same as /bin 16:22 Exio i'll wait for the big-commits/and/stuff for implement what i really want for the zoom-thing 16:22 kaeza ) 16:23 hmmmm yeah 16:23 hmmmm PilzAdam, any opinions on https://github.com/minetest/minetest/pull/604 before I merge 16:23 hmmmm ? 16:24 PilzAdam I dunno about such things 16:24 PilzAdam it would save some disk space for my win builds 16:33 sfan5 PilzAdam: how would that save disk space? 16:33 sfan5 ... 16:33 PilzAdam there is always a minetest.exe created in minetest/bin 16:33 * sfan5 needs to think first, then write 16:34 PilzAdam it would save 8 MiB 16:35 kaeza sfan5, suppose you (like me) do severaal builds off the same source tree 16:35 sfan5 or if you build a debug build 40 - 50 mb ;) 16:36 kaeza with minetest you can't 16:36 kaeza because the exe gets overwritten at each build 16:37 kaeza the only way would be to have several copies of the source tree; with this, you can bild for several platforms/versions/whatever from a single tree 16:39 VanessaE hmmmm: regarding handling of missing map_meta.txt parameters, 16:39 VanessaE [04-06 12:38] simplest solution is to parse the file into an array, add the missing keys and reprint 16:39 VanessaE "reprint" I presume means re-save. 16:40 PilzAdam re-save I presume means rewrite :-) 16:40 VanessaE heh 16:43 hmmmm vanessae, thanks, i think i know how to fix it on my own 16:43 PilzAdam isnt this a rather critical bug since it changes existing maps 16:44 PilzAdam +? 16:44 hmmmm it's already too late 16:45 VanessaE hmmmm: fix it anyway, it's only too late for those who have already upgraded - which is not most people. 16:45 PilzAdam then post a warning in the forum or so 16:45 Exio a 0.4.6.1? :P 16:46 VanessaE this needs a hotfix imho. 16:46 VanessaE I got lucky and fixed it before it did major damage. dante123's map got botched almost right away 16:47 hmmmm you guys say damage like it's the most horrible thing ever 16:47 Jordach hmmm? what just got botched? 16:47 hmmmm before i came around, map fuckups were the norm 16:47 Jordach hmmmm, yeah, sectors2sqlite is evil 16:47 VanessaE Jordach: remember those huge square cliffs? that's why. 16:47 Jordach VanessaE, explains it 16:47 Exio well 16:48 Exio i never saw those problems.. 16:48 Exio ..because my minetest already does thatr 16:48 Exio s/r// 16:48 PilzAdam s/"s/r//"/"-r" 16:48 Exio er, regex fail but w/e 16:48 Exio wut 16:48 VanessaE hmmmm: map screwups may be the norm, but they shouldn't be - it's not acceptable to normal users. "This game sucks! my map is fucked up! Screw this piece of shit" 16:48 VanessaE and so on like that. 16:48 PilzAdam -r instead of s/r// 16:49 hmmmm minetest doesn't like them 16:49 Exio ah 16:50 Exio PilzAdam: btw, "" doesn't work in that way, you need to use | or \ ;P 16:50 VanessaE PilzAdam: when you match a slash with sed, use colons instead of slashes for the delimiter. s:/home:/usr: 16:50 hmmmm hey vanessa, can you show me those pastebin links of your map_meta.txts again? 16:50 VanessaE sure, lemme track 'em down 16:50 PilzAdam I just wanted to produce something unreadable :-p 16:51 Exio learn perl 16:51 VanessaE hmmmm: Until March 16: http://pastebin.ubuntu.com/5681707/ 16:51 VanessaE hmmmm: March 22 to current: http://pastebin.ubuntu.com/5681708/ 16:52 hmmmm alright nevermind then 16:52 hmmmm hrmm, let me think about this deeper 16:52 Jordach PilzAdam, if you want unreadable, use brainfuck 16:53 VanessaE Jordach: you mean L-systems? ;() 16:53 VanessaE ;) 16:54 Jordach VanessaE, no, BF is worse: http://en.wikipedia.org/wiki/Brainfuck 16:54 hmmmm tries to get the initial settings from the config along with the default values, tries to load map meta, catches settingnotfoundexception and filenotgoodexception, anything else causes it to initialize a new map 16:54 PilzAdam VanessaE, look, this wonderful tree: [&&&FFFFF&&FFFF][&&&++++FFFFF&&FFFF][&&&----FFFFF&&FFFF] 16:54 hmmmm loadmapmeta thrrows filenotgoodexception if it couldn't open the file 16:55 hmmmm throws a serialization error if [end_of_params] isn't found 16:55 hmmmm mmmmmmmmm.. 16:55 Jordach ^ needs h prefix 16:55 VanessaE hmmmm: btw, why are you looking for a tag instead of eof? 16:55 hmmmm because i'm not the one doing it 16:56 hmmmm at this point we have the random seed 16:56 hmmmm if it fails to get all the parameters from map_meta.txt, it'll see if at least seed is there 16:56 hmmmm if seed is there, it sets the mgparams seed equal to that at least 16:57 hmmmm this is for backwards compatibility with older versions to not screw their map seeds up when a setting isn't found 16:57 hmmmm so i already thought about this 16:58 VanessaE hmmmm: remember when I reported that big mapgen glitch, and you signed on to look at it. I think the same thing happened then, as well, as it was at that point that all that mgv6_* stuff got added to my map_meta.txt. 16:59 * VanessaE plugs in a missing question mark. 17:00 hmmmm wow my dungeons are awesome looking 17:02 hmmmm 879106, 7590035 17:02 hmmmm well that's not right 17:03 PilzAdam hmmmm, what about a fallback for map_meta.txt that sets dungeons to false if no map_meta.txt setting is found, so we can set it to true in minetest.conf 17:04 hmmmm you guys completely misunderstand how the map_meta.txt settings work 17:04 hmmmm i take all of that into account 17:04 hmmmm this is much, much smarter than i think you give it credit for 17:08 RealBadAngel tried to compile luajit commit on linux, failed 17:08 RealBadAngel great, we have one commit that works on linux but not on windows, and one that works on windows but not on linux 17:08 Zeg9 Yeah. Great. 17:08 PilzAdam git merge? 17:09 hmmmm unacceptable 17:09 hmmmm why can't anybody do luajit right 17:10 RealBadAngel maybe this guy will know, i just reported then in comments 17:10 RealBadAngel *that 17:11 hmmmm ugh 17:12 hmmmm my map_meta.txt code didn't work as planned because of exceptions 17:12 hmmmm i really wish exceptions didn't exist 17:12 hmmmm i didn't even know about an error 17:12 hmmmm and it disrupted the normal flow of my code 17:13 hmmmm this wasn't my fault at all 17:13 hmmmm this was celeron's intended way of handling parameters that weren't found 17:13 hmmmm he sat there and thought, "hrmm, i know, if we can't find a single setting in map_meta.txt, we should just nuke the entire file and the seed" 17:14 RealBadAngel heheh 17:18 hmmmm the thing is, this all happens at a level above my own code 17:18 hmmmm for simplicity's sake, i'm just going to add a catch-and-fail clause in loadMapMeta() 17:23 celeron55 i've had quite changing opinions about exceptions during the time of development of minetest 17:24 hmmmm i'm really mad because i specifically tested this too 17:24 celeron55 these days i don't use them for almost anything, and definitely would not use for Settings 17:24 hmmmm when i originally did the whole mapgenparams thing 17:37 hmmmm whatever. https://github.com/minetest/minetest/commit/453d79e3a201a4186dae386d0bce209f75be742c 17:38 hmmmm if you guys think it's critical enough, i guess you can make an 0.4.6.1 17:44 hmmmm i'm going to crank out mgv7 in its current state soon, because i'm sure you guys will love the terrain it generates, and i don't want problems later on when we add sapier's things 17:48 jojoa1997|Tablet what spaier's thing will you add 18:00 ShadowNinja hmmmm: I responded to your comments on my pull requests 18:00 hmmmm erm.. thanks? 18:02 ShadowNinja hmmmm: you fixed this? https://github.com/minetest/minetest/issues/602 18:03 PilzAdam yes 18:03 hmmmm i guess 18:04 ShadowNinja well then close it 18:04 PilzAdam done 18:05 Exio i liked the old interface more 18:10 ds-2k Pilzadam: Didn't you already commit this: https://github.com/minetest/minetest/pull/604 (forgot to close?) 18:11 PilzAdam hmmmm commited it 18:12 PilzAdam hmmmm, havent you told me to close the pull request after merge :-p 18:50 sapier can someone tell me where "u32" is from? 18:50 kaeza grep 18:50 PilzAdam its defined in Irrlicht IIRC 18:50 sapier argh ... I should have known things that ugly are from irrlicht :-) 18:52 serengeor sapier, you'd prefer 'unsigned_int_32_bit_typedef' ? :) 18:52 sapier no but the standard uint32_t 18:53 sapier but it's way to much work to replace so I'm gonna live with u32 ;-) 18:53 serengeor sapier, I don't think it was standard back in the days when they started developing irrlicht 18:54 sapier don't know how old irrlicht is but yes uint32_t has become widly spread only recently 18:54 ds-2k sapier, maybe because windows uses something else: https://github.com/minetest/minetest/blob/master/src/irrlichttypes.h (at least for uint64_t) 18:54 serengeor sapier, "Niko founded the Irrlicht Engine project in 2002" 18:56 sapier hmmm uint_t types are defined in I thought this was available within windows too ... but I'm not sure 18:59 ds-2k Maybe it only doesn't work on the msvc compiler (#if _MSC_VER , not #if _WIN32 in that file)? 19:10 proller hmmmm, https://github.com/proller/minetest/commit/7d178020677223660bf5c6aea6860c091a55e57b - its better for falling in water bubble 19:12 sapier can someone plz rename "string.h" this is a system include!! 19:14 VanessaE bbl 19:16 ShadowNinja hmmmm: Any progress on minetest.kick_player()? 19:16 sapier lol player kicking by mod? 19:17 ShadowNinja yes, Usefull for a mod I am writing, as well as just kicking 19:17 ShadowNinja ban/unban is hacky, and has some issues 19:17 sapier and how to check rights? 19:18 ShadowNinja privs={kick=true} 19:18 sapier for whom? 19:18 ShadowNinja for the person running /kick 19:18 sapier there may not be a person 19:18 ShadowNinja but I want it for annother reason 19:19 ShadowNinja you mean a mod running it? you don't have to check that 19:20 ShadowNinja if the mod runs it it has to ensure security, the core can't do that 19:20 sapier so every mod can call kick to kick a player? 19:21 jojoa1997|Tablet that is wrong 19:21 jojoa1997|Tablet maybe auto remove all privs but not kick 19:21 sapier ok ... considering generall denial of evil modders this is at least consequent 19:22 PilzAdam ShadowNinja, better use the same priv as ban for /kick 19:23 sapier if a kick player lua function is added this implies anyone has to ensure any mod's code on his server is very carefully reviewed 19:23 ShadowNinja huh? a mod can ban a player, crash the server and a whole bunch of other things, even with your security, it is necessary, do you think /ban should be moved to core? 19:23 ds-2k According to the lua api, mods can already ban players (minetest.ban_player()) 19:23 sapier I've already created a patch to make modding more secure, only because others have done wrong this doesn't make bad things better 19:24 ShadowNinja PilzAdam: it doesn't realy matter what priv it uses, ban is fine 19:24 sapier ban/kick from mods is difficult do decide if it's a security issue or not 19:25 sapier unless there are different security levels for differen't mods there'll never be a good solution possible 19:25 ShadowNinja sapier: so you say this is ban bacause a player can be kicked from the server now? how is that insecure? it is a feature 19:25 ShadowNinja If a mod bans/kicks everyone from your server remove it and clear the banlist 19:25 rarkenin It does seem kind of fallacious to have banning by mods, kicking only by code. 19:26 sapier shadowninja jumping in your car pressing a button to start it without having any key with you is a feature too ... as you can't forget a key .. still noone would ever build a car like that 19:26 ShadowNinja You can already kick players, but only by baning and unbaning, and that is hacky 19:26 rarkenin saiper: There is a difference in trust. 19:27 ShadowNinja sapier: that is irrelevant 19:27 sapier no it isn't I doublt more than 1% of those running mods do understand what those mods do 19:27 rarkenin Yet they can already ban, execute arbitrary commands, delete files, install keyloggers, etc. 19:28 sapier still if we wanted to be consistent either ban is removed too or we can add kick too 19:28 rarkenin Kicking off a player is nothing compared to what they do. 19:28 ShadowNinja If you consider a mod baning/kicking a player a security issue you have gone too far 19:28 rarkenin Ban should NOT be removed. That defeats part of the purpose of an OPEN modding API. 19:28 sapier I won't discuss minetests insecure modding again I've already fixed that 19:29 rarkenin Have you given mods an abstracted persistent data storage system? 19:29 ShadowNinja what is so bad if a mod can kick a player? 19:29 sapier yes 19:29 sapier everything done 19:29 rarkenin "what is so bad" is not a yes or no question. 19:30 sapier there's not even slightest change in api left except you can't access files you shouldn't be able to access 19:30 sapier and of course you can't execute arbitrary commands anymore 19:30 rarkenin I'd hope not. 19:30 hmmmm guys, stop being ridiculous 19:30 sapier it's been answer to your question rarkenin not shadowninjas 19:30 rarkenin Oh, OK. 19:31 hmmmm kicks will be equivalent in functionality to bans, with unbanning right after 19:32 sapier I was just pointing to the fact that having ban and kick available from lua opens issues in priv handling 19:32 ShadowNinja I am surprised that so much debate started over kicking 19:32 ds-2k sapier: didn't your recent commit to your security pull request give builtin a sort of whitelist? Maybe this could be used for "trusted" mods and disable ban/kick api after builtin/trusted is loaded? 19:32 ShadowNinja NO, this makes it unusable to other mods 19:33 ShadowNinja for example a custom banning mod 19:33 sapier as long as you can't decide wich mod is doing what this is difficult ... but as told In long term having something like per mod security levels would be best 19:33 ShadowNinja that would be nice 19:34 sapier I already tought about a "quick" solution as I'm unhappy with priv handling within same lua stack as mods too 19:34 sapier a quick solution would be to create a separate lua stack doing the priv handling, as far as I understood this is only done in lua to be flexible 19:35 sapier therefore you could define mods that require priv handling have to implement e.g. privs.lua additional to init.lua 19:36 sapier and it would be easy to have a list of mods who's privs.lua is loaded into priv lua stack 19:36 rarkenin Mods are meant to extend Minetest. While they should not be allowed to go rampant across the server, they should have access to Minetest's data itself, such as privs, auth, etc. We start with blocking this, then someone down the road disallows mods to interact with nodes so they don't dump lava everywhere, chat due to risk of spam, etc, etc. 19:36 ShadowNinja I don't like that idea, andI don't knowhow it would even work 19:36 PilzAdam hmmmm, have you done a fallback yet if stairs:stair_cobble isnt defined in dungeon gen? 19:36 rarkenin I also think it is overkill. 19:36 sapier I don't want to block it I just want to reduce work for server hosters 19:37 rarkenin But you aren't really reducing work. 19:37 hmmmm no 19:37 rarkenin You're simply making modders jump through hoops without making it easier for server owners. 19:37 sapier so you think it's no work to check mods for evil things? 19:37 ShadowNinja Then the mods have to be integrated in core, do you want core to have three /ban commands? 19:37 Jordach minetest.kick_player() should check if the activator or player who started the kick has the ban priv 19:38 sapier @jordach that can't be done 19:38 ShadowNinja the command checks it, not the function 19:38 rarkenin Then a server owner goes looking for the privs.lua file instead. Same work, but more files. 19:38 kaeza Jordach, and how are you supposed to find that? 19:38 sapier more files? you only have to check privs files for those mod you allowed priv access? 19:39 ShadowNinja annother argument, mods would just pass minetest.setting_get("name") to it 19:39 sapier mobf has about 50 files all loaded by init.lua ... I doubt anyone ever reviewed all of them 19:39 rarkenin Yes, but you need to navigate into each mod's mod directory to look for a privs.lua. 19:39 ShadowNinja but that is unnescecary, the checks can be done in Lua 19:40 kaeza sapier, if someone complained your mod had malicious code, you'd be prolly banned from the forums don't you think? 19:40 sapier who can checks be done in lua? 19:41 ShadowNinja privs={ban=true} or minetest.check_player_privs(name, {ban=true}) 19:41 sapier I think if I wanted to do evil things I could hide them good enough to cause a lots of trouble until someone detects it 19:41 rarkenin Why is letting mods access player authentication stuff a security problem in the first place? It's file access that is. 19:41 sapier you may not have a player 19:41 rarkenin Let mods access the world they're running on(including auth stuff), at least. 19:41 sapier it's not a security problem at same level as execute thats true 19:42 rarkenin It's not a problem that requires this much red tape. 19:42 ShadowNinja it returns true, false, or nil if the player does not exist 19:42 sapier and I'm not against adding kick I just want to stress that this function can be used to override priv handling 19:42 rarkenin OK, so I made a mod, kicked off all the players. Jumped through hoops, kicked off all the players by way of your convoluted commands. 19:42 kaeza sapier, has anyone overriden /ban yet? 19:42 rarkenin I could just kick all the players by giving syntaxical nonsense and crashing the server. 19:43 PilzAdam I suggest to not listen to sapier when it comes to security because he just want to remove everything from the API because its too insecure and mods can abuse it 19:43 sapier has anyone detonated a nuclear weapon in manhattan? 19:44 kaeza err...and what does that have to do with this? 19:44 rarkenin Has anyone detonated a nuke near spawn on a server yet? Yes. What do your secutiry features do about it? Nothing. 19:44 hmmmm seriously guys 19:44 hmmmm it's just a game 19:44 sapier that means it's not best thing you can do to wait until something happens once 19:45 sapier still guys calm down if you are aware of the priv problem with this function I don't have any problem with it 19:45 ShadowNinja anyway, back to the topic. have you made any progress on the kick function hmmmm? 19:45 rarkenin Think about it this way. How much lost time will modders have due to this red tape? A lot. How much time does it take to remove a mod? The time it takes to type rm -rf games/blah/mods/thisisabadmod, with tab completion. 19:46 kaeza sapier, if it's foudn that the mod is problematic, then it's uninstalled from server 19:46 kaeza in general, I don't trust code made by random newbies 19:46 sapier I think everyone is aware of the priv problem now so no need to continue this discussion ;-) 19:47 kaeza fair enough 19:47 hmmmm shadowninja, no i have not 19:47 PilzAdam echo "minetest.register_on_joinplayer(function(player) minetest.kick_player(player:get_player_name()) end)" > init.lua 19:47 hmmmm if someone else does it well, that's good too 19:47 kaeza PilzAdam, lol 19:47 PilzAdam why should mods do this? 19:47 hmmmm to add kicking the right way, here's what you need to do: 19:47 rarkenin I'm made aware that there's a hypothetical problem someone's panicking about. However, it's not worth the effort to even come up wiht a solution to it at the moment. 19:48 hmmmm add a boolean parameter to BanManager::add for 'kick" 19:48 sapier pilzadam your comments was absolutely useless if you don't care about security plz post your account data and password I gladly distribute them 19:48 PilzAdam hmmmm, I would suggest to add a reason for kick, that is displayed in the client 19:48 hmmmm now, after isModified is called, if that player has been added with the kick flag 19:49 PilzAdam sapier, there are different levels of security, and you always want the highest 19:49 hmmmm remove that name and set m_modified to false 19:49 rarkenin No, there's a HUGE difference in security risk between kick and account data. 19:49 ShadowNinja hmmmm: wouldn't it be better to just call a peer disconnect function? 19:49 PilzAdam sapier, wich is nonsense in a game 19:49 hmmmm that's messy 19:49 ShadowNinja why so? 19:49 hmmmm because that's the way someone else tried to do it already 19:49 rarkenin This is Minetest, not the international voxel-sandbox competition of 2019. 19:49 ShadowNinja it seems a lot cleaner than using the ban manager 19:50 hmmmm you need to expose some private parts of Server 19:50 kaeza Knoxtest? 19:50 rarkenin I was that idiot that tried to do that, it turned out to be a giant tangle of exposure and class access from miles away. 19:50 ShadowNinja I thought you were all for using private and protected less 19:50 hmmmm i am, but i try not to modify existing things too much 19:51 sapier no pilzadam I just want to ensure everyone is aware of the security implications before a decision is made ... and as far as I see noone else is interested in security so I'm always the bad guy ;-P 19:51 hmmmm i don't know, shadowninja, i'll do it later. 19:51 rarkenin No, we're concerned with security. We just know what level it should be at. 19:51 PilzAdam sapier, you could fork minetest to securetest or something :-p 19:52 hmmmm secure as OpenBSD 19:52 PilzAdam it would be basically a anti-virus scanner :-) 19:52 ShadowNinja ok, well, as long as it is done, having a kick message show up would be good 19:52 hmmmm now with 50 new encryption protocols 19:52 hmmmm encrypting the stream of data from lua to the core 19:52 hmmmm lua stack protector 19:52 kaeza ^ lol 19:52 rarkenin No, it would be a system that detects any attempts at vandalism, and immediately disconnects the server from the internet, sounding a klaxon. 19:52 rarkenin That doesn't seem that far-fetched with sapier. 19:53 sapier don't make me angry or I may show you what can be done within lua ;-P 19:53 proller hmmmm, can i commit water fix? 19:53 hmmmm proller, what water fix? 19:53 hmmmm i thought i already did that 19:53 proller hmmmm, https://github.com/proller/minetest/commit/7d178020677223660bf5c6aea6860c091a55e57b - its better for falling in water bubble 19:53 hmmmm sure 19:53 proller fix of fix 19:53 hmmmm just be sure to fix the commit message 19:54 proller ok 19:54 hmmmm like, Adjust water removal above unloaded blocks 19:54 hmmmm that sounds better^ 19:54 PilzAdam proller, cant you just do the correct fix in the first place? 19:54 sapier but for one thing you're right ... adding lua security to an application with that many memory leaks and possible buffer overruns as minetest may be adding improvements at wrong place ;-) 19:55 hmmmm what possible buffer overflows are there 19:55 proller PilzAdam, both fix correct, but second is better 19:55 kaeza sapier, want security? run the server in a chmod jail. period 19:55 kaeza chroot* 19:56 sapier kaeza that's not an excuse for bad code 19:56 hmmmm no i'm serious 19:56 PilzAdam sapier, its probably better to throw your computer away, its too insecure 19:56 hmmmm what are the possible buffer overflows, those have a pretty high priority of being fixed 19:57 sapier I think some of the texture pointers are used wrong way but I'm not sure about that hmmmm 19:58 hmmmm be sure about it 19:58 hmmmm this is important 19:59 hmmmm just as well, someone can come up with a new buffer overflow in libpng or something (more likely) and pwn minetest that way :( 19:59 sapier I don't intend to check whole irrlicht code ;-) maybe running minetest within efence may help but last time I used a memory checker (valgrind) I had to fix hundreds of errors in order to find the interesting once 20:00 hmmmm well, that's because nobody's really been able to run valgrind on this 20:01 sapier PilzAdam I don't wish you any bad but if your computer gets skrewd by a mod I'll ne loughing ;-) 20:01 hmmmm it's not because people just don't care, if you think that 20:01 PilzAdam sapier, I generally dont install mods of others 20:01 PilzAdam I dont even run most of my own mods 20:01 hmmmm i don't use mods at all 20:02 sapier yes I know you rewrite anything ;-) 20:02 sapier pilzadam was meant 20:03 sapier hmmmm running valgrind on minetest isn't a big deal ... you can't play minetest within valgrind but starting connecting to server opening inventory switching through menus is no problem at all 20:03 celeron55 lol what the fuck 20:03 celeron55 kick privileges for mods? i am stunned 20:03 celeron55 i'm hoping this is some kind of odd trolling 20:03 hmmmm it's not, they're really that psychopathic 20:04 celeron55 i am OK with restricting what files mods can access 20:04 celeron55 but in-game features? oh god come on 20:05 hmmmm oh celeron, what's your opinion on letting mods see peoples' IP addresses 20:05 sapier yes but why do we have a privilege system then? 20:05 celeron55 hmmmm: well why the fuck not 20:05 hmmmm because it's a privacy concern..? 20:05 celeron55 but i don't know how that is useful 20:05 hmmmm some guys want to make an MCBans-like mod 20:05 hmmmm where they have a global banlist 20:05 PilzAdam celeron55, the client doesnt know wich mods the server use and mods can give the IP to 3rd party 20:06 hmmmm which is precisely the aim of that mod 20:06 sapier but ip banning isn't quite a good way nowadays 20:06 sapier if you ban a nated ip you may ban hundreds of ppl 20:06 celeron55 well i think, if somebody is doing something "like MCBans", we should research if mcbans has resulted in something that we would like to have 20:06 hmmmm right, and then people who really want to get around it can (LandMine) 20:06 sapier most cellular internet services are natted in germany 20:07 sapier still if someone wants to have this in ... 20:07 RealBadAngel sapier, just compilin, noticed warning: unused variable old_cost 20:08 hmmmm who cares, we'll get all the compiler warnings we can help at once 20:08 sapier yes I've seen it too ... is relict of some development state 20:08 sapier I do care 20:08 celeron55 okay, i think we don't have a real reason to give IPs to mods 20:08 hmmmm just don't spam up the commit log with "whoop, removed an unused variable here" 20:09 sapier didn't intend to do I'll add the fix to scriptapi separation 20:09 kaeza /home/diego/src/minetest/src/emerge.cpp:357:33: warning: 'flags' may be used uninitialized in this function [-Wuninitialized] 20:09 kaeza hmmmm, ^ 20:09 hmmmm a moronic warning 20:09 sapier I suggest -Werror 20:09 sapier :-) just kidding 20:10 celeron55 i think that warning is reasonable 20:10 hmmmm the compiler should know that it's not read in that function 20:11 hmmmm ahh... not all control paths write something to flags 20:11 hmmmm makes more sense 20:11 celeron55 hmmmm: you know what's a ridiculous warning? 20:11 hmmmm no newline at the end of files? 20:11 celeron55 the warning that the _CRT_SECURE_NO_DEPRECATE suppresses in src/CMakeLists.txt for MSVC 20:12 hmmmm i agree 20:12 hmmmm i have a list of like 3 or 4 warnings i disable for MSVC for my own projects 20:12 celeron55 it's the most ridiculous i have ever seen 20:12 sapier what does this doß 20:12 sapier ? 20:12 hmmmm ah i guess only two 20:12 celeron55 MSVC says some C standard library functions are deprecated by default 20:12 hmmmm that and int->char truncation 20:13 celeron55 and wants the user to use some MS's own _s variants 20:13 sapier you mean stcpy or memcpy for example? 20:13 celeron55 it's something like that 20:13 hmmmm of course 20:13 sapier at least for functions of that type imho warnings are perfectly reasonable 20:14 hmmmm nonsense, people who are using strcpy() have a valid reason to do so 20:14 celeron55 lol 20:14 sapier tell me one reason to use strcpy 20:14 celeron55 it's standard 20:14 hmmmm to copy a string to a buffer you just allocated? 20:14 sapier reason not excuse 20:14 hmmmm something like strdup? 20:14 sapier strncpy() 20:14 kaeza also: /home/diego/src/minetest/src/scriptapi.cpp:701:27: warning: unused variable 'ndef' [-Wunused-variable] 20:14 hmmmm senseless 20:15 sapier you know size of buffer if you don't know you can use sizeof(buffer) 20:15 hmmmm unnecessary check when you know you have the space 20:15 hmmmm i use strcpy() for copying around external strings in my programs, since they've already been length-sanitized with strlcpy() or similar 20:16 celeron55 lol and how exactly does using MS's strcpy_s help with that? 20:16 hmmmm internal strings rather 20:16 hmmmm i just don't care for redundancy in code 20:16 sapier ok I give up you beat me I'm the only one doing mistakes on coding 20:17 celeron55 and minetest does not use strcpy; those warnings were surpressed because of memcpy making same warnings too 20:17 celeron55 and memcpy making warnings is totally ridiculous 20:17 sapier minetest does use strcpy 20:17 hmmmm nevermind any of that 20:17 hmmmm it also deprecates fopen() in favor of fopen_s() 20:18 hmmmm yeah.. apparently fopen() is a dangerous function now. 20:18 sapier just had a look for it :-) ... ok more precise code distributed with minetest does use strcpy 20:18 celeron55 strcpy(argv_data[0], "/bin/rm"); 20:18 celeron55 strcpy(argv_data[1], "-rf"); 20:18 celeron55 lol 20:18 celeron55 that's SO INSECURE 20:18 celeron55 actually wtf, that's not for windows 20:18 sapier I didn't tell there's no situation where strcpy is NOT an error ;-) 20:19 celeron55 sapier: these aren't even built on windows, your argument is completely invalid 20:19 sapier json isn't built on windows? 20:19 celeron55 libjsoncpp isn't minetest 20:20 sapier I already corrected me 20:20 sapier but I don't want to start the next discussion about a thing I don't really care about if you wanna use those functions do it 20:21 sapier where I work functions like that are a no go because they are common source of errors 20:21 celeron55 of course you don't generally use them, it's obvious 20:22 sapier if we really had to care about a single length check in minetest we had other problems ;-) 20:22 celeron55 but it is not a reason to disallow using them in proven pieces of code that have been around for long and tested 20:23 celeron55 when i code string stuff in C by myself, i just use snprintf everywhere; it doesn't give any actual benefit to not do so 20:23 sapier I didn't intend to change any of that, those are 3rd party librarys I don't touch something like that 20:23 hmmmm indeed, this sort of "code santation" is more of a feel-good measure, it doesn't actually benefit us at all 20:24 hmmmm so, if you feel that strongly about it, perhaps you *should* fork minetest and rename it to SecureTest 20:24 sapier not giving additional features doesn't mean not giving benefit 20:25 hmmmm exploits prevented by not copying a string of the same length without checks of a buffer you just allocated: 400 - this is a huge benefit 20:25 hmmmm s/of/to/ 20:26 sapier hmmmm if you think that improving code quality is bad for minetest maybe I should do that, for the time being imho improving minetest within minetest is better way to do ... btw some months ago I've been already asked if I would participate in a fork and did deny because of that reason 20:26 hmmmm changing strcpy() to strncpy() isn't improving code quality 20:27 sapier plz stop about that damn strcpy 20:27 sapier I never suggested REPLACING something 20:27 hmmmm okay; not replacing things then 20:28 hmmmm i'll hold you to your word 20:28 sapier I just don't use functions like that and suggest not using them at all it's on your own if my oppinion is of any interest to you ;-) 20:29 hmmmm anyway you never explained why operator[] is "bad" for vectors 20:29 sapier I've got a personal dislike to [] because of having to much trouble with different compilers on using those to access arrays 20:29 Exio well, wait 20:30 sapier most likely that's not true to gcc anymore still I try to avoid them 20:30 hmmmm which compilers have you had trouble with [] on? 20:30 sapier different embedded compilers 20:30 hmmmm all of our tier-1 supported platforms seem to have no problem 20:30 sapier not within minetest 20:30 hmmmm different embedded compilers that aren't actually C++, right? 20:31 hmmmm but some sort of pseudo-C++ with a subset of features and some wacky rules 20:31 sapier most likely not ... as I said it's a personal dislike 20:31 Exio sapier: what about a "file" of what privs are needed by a mod? 20:32 hmmmm i like []. it's certainly less wordy and comes more natural when speaking of an array 20:32 sapier I don't take part on that discussion anymore exio ... in future I'll stick to complain if a feature does harm to anything else than minetest 20:32 hmmmm that's what std::vector is. it's an array where i don't need to worry about length 20:32 Exio ah sapier 20:33 sapier hmmmm I see ... checking end of vector by != seams dangerous to me as someone may have done i++ within function 20:34 hmmmm yes, but in order for that to matter, you'd need to pass i as a reference to something 20:34 sapier sometimes this is used to break a loop from a loop within this loop 20:34 hmmmm if you avoid references like you should in the first place you should be fine 20:34 hmmmm oh wait.. VoxelArea::add_* 20:34 sapier no that's not exactly what I was pointing at 20:34 sapier wait 20:34 hmmmm hate that crap 20:34 hmmmm but that's an index, not something we compare to 20:35 hmmmm all of that verbosity, v3s16 em = vm->m_area.getExte... ah fuckit, i've fallen asleep by then 20:36 Exio random thing, what about https://github.com/minetest/minetest/pull/306 ? 20:36 PilzAdam thats old and needs to be rebased 20:36 hmmmm you can see i tried to skirt around that problem with the 'stride length' members in classes that have a lot of matrix manipulation 20:36 sapier if you want to do something like that http://pastebin.com/VXuM1mYH 20:37 hmmmm sapier, i don't think i've ever written any code like that, ever 20:38 sapier I needed to do things like that sometimes as you can't break outer loop from inner loop 20:38 hmmmm if i were put in that situation, i'd have the outer loop check have a && !loop_quit condition 20:38 hmmmm where loop_quit is a bool or something 20:38 sapier yes would be another option 20:38 celeron55 EH 20:38 celeron55 eh* 20:38 hmmmm more readable that way 20:38 celeron55 goto, man 20:39 hmmmm celeron, no, he clearly wants the inner loop to complete. 20:39 sapier I don't use goto ;-) 20:39 celeron55 hmmmm: well then, yes; that may be reasonable 20:39 sapier you could move around code so goto would work 20:39 celeron55 but anyway, goto is made for jumping out of loops 20:39 celeron55 use it for that and it will save your ass 20:40 sapier I don't discuss about goto and point at stroustrup 20:41 hmmmm you really have a hardon for stroustrup, don't you... 20:42 hmmmm don't you know? he created C++ for job security 20:42 sapier plz read strongswan source code you'll know instantly what c++ is good for 20:42 sapier :-) 20:43 hmmmm that's the macro-d out C code, right? 20:43 hmmmm i haven't seen it myself but it sounds atrocious 20:43 hmmmm GTK, on the other hand, is OO C done right 20:44 sapier I think there may be a reason why even gcc is written in c++ now ;-) still I don't want to discuss about programming language every one has their benefits and caveats 20:44 sapier I've seen very bad but perfectly oo'ed code too 20:45 sapier took me 2 weeks to understand what this code was doing ... discovering it was very impressive ... still maintenance of code like that is a nightmare 20:46 hmmmm what, you mean strongswan? 20:47 sapier no 20:47 sapier code one of my coworkers did ... a c++ template fan 20:47 hmmmm yeah, there's a reason why i have "avoid templates unless really helpful" in the coding guidelines 20:47 sapier quite impressive what can be done with c++ if you're using full standard possibilitys 20:48 celeron55 like avoiding []? 8D 20:48 sapier :-) 20:48 hmmmm hah 20:48 sapier I doub't you don't have any bad habits celeron ;-P 20:49 hmmmm kinda reminds me of #java people, they say arrays are depreciated 20:49 celeron55 no i don't, obviously 20:49 sapier lol 20:49 hmmmm "should always be using arraylists" 20:49 celeron55 wat 20:49 PilzAdam hmmmm, java.util.vector FTW! 20:49 sapier like writing a whole game without freeing a single texture on restart but loading each one again ;-) 20:50 celeron55 well, i'm the wrong guy to laugh at java specifics though; i know nothing about that language 20:51 sapier I assume hmmmm had a look at pathfinder code and knows about what extent of c++ standard I commonly use 20:51 celeron55 anyhow, i got interested of the strongswan thing sapier mentioned 20:51 celeron55 i'm currently looking at the source 20:52 celeron55 this looks basic good C code 20:52 sapier it's quite impressive they managed to create classes scopes exceptions and all those things in c using macros 20:52 celeron55 i don't see any such macros here 20:53 sapier true :-) you don't see them but they are there 20:53 hmmmm http://git.strongswan.org/?p=strongswan.git;a=blob;f=src/starter/invokecharon.c;h=d981f6c17ca5ff93aab2260b502175263cbc4eb9;hb=HEAD#l141 20:53 sapier have a look at the function headers 20:53 hmmmm :| 20:54 hmmmm not acceptable in C if you desire C89 compatibility 20:54 sapier what do you mean? 20:55 hmmmm braces with no control specifier are invalid 20:55 celeron55 C89 compatibility is pretty useless most of the time 20:55 hmmmm that's why you'll often see #define FOO() do { \ ... } while (0) 20:56 sapier this file isn't quite representative for strongswan coding style 20:56 celeron55 sapier: i checked multiple files, never found anything you mentioned 20:56 celeron55 also, yes, that file isn't like most others 20:56 hmmmm i believe him though... look at the name of the project itself, it's camelCase 20:56 hmmmm if that tells you anything :p 20:57 sapier I'll have look for a file where you can see it 20:59 celeron55 there's just basic interfaces/objects made with structs containing function pointers 20:59 sapier1 http://git.strongswan.org/?p=strongswan.git;a=blob;f=src/libcharon/sa/ike_sa_manager.c;h=4fbc4da8e758b696c0f549e50dda6df996202162;hb=HEAD 21:00 sapier1 METHOD ;-) 21:00 sapier1 "privat" structs contain private methods as well as private function pointers 21:01 sapier1 METHOD macro ensures similar behaviour as c++ class functions 21:03 celeron55 this really isn't too special and there are like 1 or 2 macros related to this 21:04 sapier yes did you have a look what those macros do? 21:06 celeron55 hmm, METHOD is quite funky 21:07 sapier that's what I meant 21:08 celeron55 what the hell, i have no idea how this actually even works 21:08 sapier It's creating a class in pure c++ with private and public methods as well as constructor destructor ... 21:09 sapier pure c of course 21:09 celeron55 but, like, it declares a function with some odd union parameter 21:09 celeron55 and then defines it with something else 21:10 sapier yes only public things are visible to others but still memory is allocated for private ones to 21:11 celeron55 but really, this is still probably going to make more sane debugger errors than C++ in case of memory corruption for example 21:11 sapier I haven't experienced anything like that ... c++ is just much more easy to read 21:12 sapier but if you're only interested in features the strongswan way has almost same as c++ 21:13 celeron55 i wouldn't probably use anything like that in any normal situation though 21:14 sapier me too :-) I just had to add some features to strongswan in order to get it suitable to what I needed to do 21:14 Exio i don't see the point for a "whole" OO in C 21:14 celeron55 it's perfectly reasonable that they went for C when doing low level stuff like strongswan, but it seems odd that they went for such complicated structure in it 21:15 sapier I assume this is a result of strongswan beeing developed by a university :-) 21:16 celeron55 otoh, at work there is an extended ipsec thing that is coded in C++ 21:16 sapier celeron even gcc is written in c++ ... so the only thing I don't know of being written in c++ is a kernel ... wait isn't windows kernel c++? 21:16 celeron55 it's not very nice in my opinion 21:16 celeron55 it for example uses exceptions, which are a PITA in such low level thing 21:17 sapier I'm with you I don't like strongswan code either 21:17 Exio You can't compare C++ with C for some stuff 21:17 sapier what do you mean exio? 21:18 celeron55 C++ without exceptions and without inheritance and without the standard library is kind of a good low-level language 21:18 Exio sapier: not all people love OOP 21:18 celeron55 and without templates 21:18 Exio celeron55: and the point of using that is... 21:18 Exio ... nothing 21:19 sapier without those things basicaly not much more than c is left :-) 21:19 celeron55 the point of using that is that it allows class-based abstractions that make code more readable 21:19 hmmmm if you don't like multiple inheritance, polymorphism, and templates, you're afraid of OOP and you don't understand it 21:19 hmmmm 21:19 sapier ok and of course you can use private to enforce clean interfaces (at least a bit) 21:20 Exio well, in some way that may be useful, but i see C as a "nice to read and portable ASM" 21:20 celeron55 also you can automate memory management in constructors and destructors 21:20 sapier I don't like templates too but I admit hmmm is right i don't use them because I'm not used to it 21:20 celeron55 and yes, it's a big deal 21:21 hmmmm sapier, i'm being sarcastic 21:21 Exio sapier: hmmmm was being sarcastic about the stuff 21:21 sapier I like inheritance I't a quite good way to get type safty 21:22 sapier yes it's on cost of performance ... but don't we all have at least 4 cores? 21:22 celeron55 well, fully virtual interfaces are fine 21:22 celeron55 it's like a typed bunch of function pointers; not a big deal 21:23 sapier rtti is a very good feature :-) 21:24 celeron55 not really 21:24 sapier if you do some sort of message passing between threads ... and you do need to do things like that in multithreaded environment you can use rtti to ensure you got right message 21:24 sapier yes you can add a type field too ... but why not make compiler do work? 21:25 celeron55 RTTI is a direct source of clumsy library APIs 21:26 sapier you can abuse any good feature for bad things 21:26 celeron55 the library gives you some object with a crippled interface and a crippled interface and then does bloatloads of magic when you feed it back to the library 21:26 Exio sapier: goto, globals 21:26 celeron55 implementation* (the second interface) 21:26 Exio are the same, they are good features if used "wisely" 21:27 sapier bad example as those can be replaced without adding code or loosing features 21:27 celeron55 globals can be replaced without adding code? lol 21:27 celeron55 i don't know of any language that would be able to do that 21:27 Exio and goto can be more read-able than writing a bunch of conditionales for stuff 21:27 sapier globals are a desing issue 21:28 Exio if you say that.. 21:28 celeron55 globals are a very powerful shortcut in limiting code size 21:28 sapier if your design depends on globals of course you can't replace them 21:28 sapier but don't expect any design using globals to behave well in parallel environment 21:28 celeron55 but you need to design so that you either use them or not really 21:28 Exio what do you suggest for the settings? 21:28 Exio for example 21:29 Exio g_settings() stuff, is "like" a global (no?) 21:29 sapier first of all you need to know who need's to know about settings and when this one needs to know it 21:29 sapier does emerge thread for example need to know full set of settings? 21:29 Exio so, for example, let me understand 21:30 Exio it is like a tradeoff 21:30 Exio "add a lot of code for this, or use a global making it WAY more clear and smaller, and doing the same thing" 21:30 sapier there never is exact black or white 21:30 sapier for every rule theres an exception 21:31 hmmmm [05:29 PM] does emerge thread for example need to know full set of settings? the emerge thread? no, the emerge manager? sure 21:31 hmmmm [05:30 PM] there never is exact black or white 21:31 hmmmm someone's a democrat 21:31 sapier ok next question when does emerge manager need to know settings? on startup or does it honor settings changes while game too? 21:32 hmmmm nobody will ever change mapgen params 21:32 hmmmm while the game is in session 21:32 celeron55 that question actually goes deeper 21:32 sapier and does emerge manager need to know about shader settings? I said full set of settings 21:32 Exio sapier: that adds complexity 21:32 hmmmm i think vanessa wanted to be able to modify mapgenparams in lua.... no way 21:32 celeron55 because a mod might want to set the parameters when the mod is initialized, and that may happen after the emerge thing is initialized 21:32 Exio or do you see 1000 files with different stuff? 21:32 VanessaE hmmmm: er, no not really. 21:32 hmmmm oh, you're talking about g_settings()? 21:32 celeron55 and so on 21:32 VanessaE I have no need for such a thing 21:33 sapier yes and no, it adds complexity as you have to think before you start coding and no because you don't have that many side effects and cross class accesses 21:33 VanessaE however, *reading* them from Lua is important 21:33 hmmmm yes, emerge manager does need ot know about the shader settings 21:33 VanessaE and being able to turn off trees from Lua would be incredibly useful 21:33 VanessaE but that's about it 21:33 hmmmm because if i ever need the shader settings for some odd reason, i don't want to have to move a skyscraper around to do that 21:33 hmmmm there is no benefit to hiding the shader settings either 21:33 Exio ^ that too 21:34 sapier vanessae is right lua for example needs access to full set of settings as it can change it 21:34 sapier shader is even a very good example as current shader design is wrong by limitation of irrlicht noone realized 21:34 hmmmm vanessae, the same way as with registered nodes, you'll be able to get registered decorations 21:35 VanessaE hmmmm: good 21:35 Taoki celeron55: About the lighting discussion last night. I know I'm a horrible person for suggesting others what to code, but I had an idea you might want to try: Can you code a hardware light to spawn in Irrlicht (for starters it can be at origin 0 0 0) and give it stencil shadows? I'm really curious if that just might do the trick in limiting where it's cast. 21:35 sapier hmmm "if ever" for that reason you could make everything a global variable 21:36 Exio sapier: and no, that is a extreme 21:36 Exio an* 21:36 sapier I know :-) but obviously everyone uses extreme positions to show his point ;-) 21:36 Exio it *can* lead in the things you are saying 21:36 Exio as goto can, as most of language contructs can 21:36 Exio and they are for something 21:36 hmmmm it's just a social construct. 21:37 Exio making code simpler 21:37 hmmmm it's all relative. 21:37 Exio exactly 21:37 hmmmm i'm just being ironic. 21:37 sapier have a look at minetest code ... lua stack for example is accessed by fetching it from player back to environment back to server 21:37 hmmmm totally postmodern. 21:37 Exio hmmmm: ruby is way better because that 21:38 sapier and if someone says this is necessary he's wrong this isn't necessary at all 21:38 Exio meh 21:39 sapier there's only one place where I haven't been able to remove it because I would've changed whole minetest architecture ... wich would have reduced already low chances those changeset is merged to zero 21:39 celeron55 Taoki: 1) i'm not going to try anything, 2) no, you can't just "give a thing stencil shadows" in irrlicht 21:39 Taoki ok :( 21:40 Exio sapier: code in the way you like, i see using globals and goto ok for some things 21:40 Exio and yes, kill me for that! 21:42 sapier I won't kill anyone for anything ;-) I accept ppl having different opinions I even appreciate this. Sometimes I'm wrong too, and I'm not to proud to admit it. 21:42 hmmmm *cough* NULL 21:43 sapier "implementation detail" ;-) 21:43 hmmmm implementation dependent detail 21:43 sapier so not fixed 21:44 hmmmm it's part of the standard meaning it can be used in the manner which the standard says so, but how it actually works underneath is implementation-dependent 21:44 sapier we already had this discussion ;-) 21:45 sapier another question are there any additional commits to be merged the next minutes? if not I'm gonna push merged scriptapi separation 21:45 hmmmm memcpy() is implementation defined... that means on some platforms it might accomplish what it does by performing a satanic ritual 21:45 hmmmm but what it does is set in stone 21:46 sapier no comment on this discussion anymore ;-) 21:47 sapier ok so no additional commits :-) 21:48 sapier didn's someone dislike polymorphic classes? why does noise not even have destrctor? 21:49 sapier wait NoiseIndev 21:50 hmmmm NoiseIndev is proller's thing.. not mine 21:50 hmmmm I told him to extend it rather than re-implement it 21:50 sapier it's spaming build with warnings :-) 21:50 hmmmm not my problem :) 21:53 proller because nothing to delete here? 21:54 sapier you should add an empty one in this case to tell compiler what to use 21:54 sapier compiler is dump it doesn't know there's nothing to do 21:57 proller ok 21:58 sapier same for missing "virtual" if inherited compiler gets in trouble about what destructor to use 21:58 celeron55 http://ompldr.org/vaTBobA/compiler_is_dump.jpg 21:58 sapier :-) 22:01 proller https://github.com/proller/minetest/commit/03191ea6db98ec09c755c255fed712c238583ddf ? 22:37 sapier ok scriptapi separation merge to master is quite weired :-) but result seams to be as expected :-) 22:45 hmmmm hmmmmmmm 22:45 Exio ^ that is weird 22:45 Exio "hmmm saying hmmmmmm" 22:45 hmmmm hey exio 22:46 hmmmm let's say you have a mountain and a ridge 22:46 hmmmm what's the ground height? 22:46 hmmmm the ridge, or the land underneath the ridge 22:47 hmmmm (or to put it more clearly; where would you like to spawn) 22:47 jojoa1997|Tablet the land underneath of course 22:47 Exio i would say "depends of the mountain", it is not the same if you have a very-tilted, "down", if it is "nearly plain", the top 22:47 jojoa1997|Tablet i would like to spawn on the mountain though 22:48 hmmmm ya, exio, i can't figure out what the mountain depends on 22:49 Exio i don't know really a "better" way, but if there is only one of both, i would still say depends a lot, if the ridge is very high (y:water_level+50? or similar? no idea how are the mountains), in the land, if not in the mountain 22:50 hmmmm for an idea http://dev.minetest.net/Mapgen_V7 22:51 sapier you're talking about something like that on the right upper end? 22:51 hmmmm yeah 22:51 sapier Id prefere to spawn below in this case 22:51 Exio i'd say the same 22:52 sapier but I'm not even sure if this isn't a floating mountain :-) 22:52 Exio they look awesome 22:53 Exio and that is what i prefer over a bored terrain :P 22:53 hmmmm i still need to put the caves and the trees in