Time Nick Message 06:43 hmmmm i just changed a particular data structure in my code about 20 times. 06:43 hmmmm can't make my mind up 06:44 hmmmm i've decided on going the C++ path and making a base class and then derived classes... this is the perfect paradigm for what i'm doing 06:45 hmmmm in the C tradition, i'd have another struct with the common members of them both and keep casting it around 06:47 hmmmm instead of statically initializing structs, i'm going to make a constructor 06:48 hmmmm i am going to embrace C++ instead of fight it 06:48 hmmmm but i still won't use initializer lists, those are totally braindead. 16:20 doserj someone want to play with https://github.com/doserj/minetest/tree/mod_selection and tell me of any problems? Basically, add various lines of the form load_mod_ = true/false to a world.mt file and look if it does what you expected. it should behave unchanged if you don't add anything to the world.mt file. 16:25 PilzAdam doserj, load_mod_default = true/false doesnt do anything 16:25 doserj yeah, it only considers add-ons, not mods in games or worldmods 16:26 PilzAdam mesecons works 16:26 doserj (and that was a deliberate decision) 16:27 PilzAdam It should at least give a warning when I set mods to true that doesnt exist 16:27 doserj it should 16:28 doserj (in debug.txt 16:28 PilzAdam wich stream? 16:28 doserj infostream 16:30 celeron55 https://github.com/doserj/minetest/commit/82394a547fbd2de39f188c87d0a4108af1bebf5d 16:30 celeron55 what does this do 16:31 celeron55 "fux bug in X" is a terrible commit message, it should be mentioned what the bug was all about in the first place (i am not aware of any bugs in mod handling) 16:31 celeron55 fix* 16:31 doserj the "bug" was introudced by my earlier commits 16:32 celeron55 oh, well, in that case it doesn't matter (as long as it is squashed to a previous ones before merging to upstream) 16:32 doserj yeah i was planning to squash it later 16:33 PilzAdam doserj, IMO errorstream would be better so everyone can see it in the console 16:33 celeron55 that patchset is practically shouting for an UI to happen for it 8) 16:33 PilzAdam It takes some time to find this message 16:33 doserj i had to re-write the dependency sorting a bit to account for deselected mods 16:34 celeron55 s/happen/to be added/ 16:34 doserj celeron55: i am planning to add a UI 16:34 doserj but not sure yet how it will look like 16:34 doserj PilzAdam: i can change that, yes 16:35 celeron55 anyway; without looking at the implementation details, that one is clearly going to upstream once it is ready 16:35 PilzAdam maybe even stop to load the map 16:36 PilzAdam so map creators really know that this mod is installed 16:36 doserj celeron55: I just now where the UI will be (there is a whole Configure world -> "Nothing here" menu already there...) 16:36 celeron55 yeah, that is the place for it 16:37 doserj celeron55: btw, I was a bit unsure about the intended meaning of dependencies on modpacks 16:37 doserj can you depend on a modpack, or only on individual mods in it? 16:37 celeron55 only individual mods 16:38 doserj ok, that's what my version does, too 16:38 celeron55 modpack names should have no functional meaning whatsoever 16:38 celeron55 (for mods themselves) 16:38 doserj mesecons has a small issue, however, then 16:39 doserj if you disable "mesecons", a couple mods in the mesecons pack are still loaded 16:39 celeron55 you could allow selecting/deselecting modpacks in the UI though 16:39 doserj true 16:40 celeron55 dunno how the UI should exactly look like... usually it is meaningful to disable/enable a modpack, and disable individual stuff from it when it is active 16:40 celeron55 also, modpacks can have modpacks inside itself 8) 16:40 doserj recursion should work 16:40 celeron55 the UI can be messy and clumsy, as long as it works and isn't a maintenance nightmare 16:41 doserj later I would like to extend that into a configuration interface 16:41 doserj (set variables like "enable_item_drop = false", "enable_aggressive_mobs = true", etc. 16:42 doserj or even "item_despawn_time = 300" 16:42 VanessaE Suggestion: Have the user store all their mods on some random directory (maybe default ~/.minetest/allmods) and just symlink to them from ~/.minetest/mods/minetest to enable them 16:42 celeron55 eh, no? 16:43 doserj VanessaE: that is exactly what I am trying to avoid 16:43 VanessaE oh. 16:43 celeron55 mods are game-dependent, and windows + symlinks = ultimate fail 16:43 VanessaE celeron55: well, "shortcuts" then. But it's the best way to do it, think regular linux rc.xxx init scripts. 16:44 celeron55 we already have the solution for what you are suggesting solutions for 16:44 * VanessaE shrugs 16:44 celeron55 you are just flooding the channel with crap 16:44 VanessaE just trying to help avoid problems. 16:44 Exio btw, any doc about the 'C++' engine? i'm trying to make a config option for changing the hilightbox of blocks *line 2932 in game.cpp* 16:44 doserj VanessaE: your solution adds potential for more user confusion of where to put the mods for example 16:45 Exio s/the hilightbox/the color of the hilightbox/ :P 16:45 doserj (which is complicated enough already) 16:48 VanessaE all I'm saying is don't overthink it. 16:48 celeron55 Exio: uuummm... i don't think there are any docs related to something like that - but see settings.h, defaultsettings.h, minetest.conf.example 16:48 Exio ok, thanks btw 16:49 celeron55 Exio: the chat console uses a color setting named "console_color", it's used in guiChatConsole.cpp:550 (grep is your friend 8)) 16:49 celeron55 ehm 16:49 celeron55 guiChatConsole.cpp:78 16:50 Exio yep, i used grep for getting the line in game.cpp too 16:50 Exio and well, thanks, i will see 16:51 celeron55 if you're feeling like documenting a bit, you could add a page here to explain what adding a setting generally involves: http://minetest.net/wiki/doku.php?id=code:inner_workings_of_minetest 16:52 Exio ok, i will check, first i will try to get it working 16:53 Exio i never wrote something in C++, mainly C hehe 16:54 celeron55 (while the dev wiki is small, google does find stuff from there well - when it exists there) 16:55 Exio btw, if i get it working i will try to send a pull request 18:05 Exio i got it working, what should be the name for the option? i'm using hitbox_color atm 18:05 PilzAdam selectionbox_color 18:05 Exio ok :) 18:33 hmmmm hahah 18:33 hmmmm celeron did you write strfnd.h? 18:33 Calinou since people are talking about selection box, i think the whole block texture should be darkened when selecting a block that is minable with item in hand (and the pointed face would be a bit darker), and when a node is right clickable (eg. chest) it'd be brightened instead 18:34 hmmmm palautus, plop, tek, niinq 18:34 Calinou would fix the outlines flickering at high coordinates because of FP precision errors 18:34 hmmmm some of these var names are nuts 18:34 celeron55 it's something i have written in my junior high school years 18:34 celeron55 the functionality of the thing is a masterpiece! 18:34 celeron55 i've still never seen anything like it anywhere else 18:35 hmmmm perhaps 18:35 hmmmm i am writing Settings::getStruct 18:35 hmmmm basically I have to rewrite a sscanf() 18:36 hmmmm so how does string tokenization work exactly? 18:36 hmmmm does stof() stop when it comes across a non-numerical character or something? 18:37 celeron55 oh lol, strfnd.h still contains that trim implementation 18:37 celeron55 it's the slowest implementation of trim that has ever existed or will ever exist 18:37 hmmmm that's true 18:37 hmmmm it ought to be rewritten someday 18:38 celeron55 well, it's fast for the general case of just one or two characters, but for more than that it becomes very slow 19:03 Exio celeron55: done, https://github.com/celeron55/minetest/pull/367 19:03 hmmmm oh by the way 19:04 hmmmm apparently not all revisions of irrlicht 1.8 have u64 defined 19:04 hmmmm I tried asking in their irc channel what revision it first popped up in, but predictably i got no response 19:04 hmmmm and of course it's not in any sort of changelog 19:11 celeron55 Exio: by the way, to what color did you personally change it to? 8) 19:18 darkrose https://github.com/EXio4/minetest/commit/28812e4597ab8362fc64cbdee1c2c0eae8ddb9f9#L2R70 <- isn't the MIN/MAX the wrong way round? 19:21 celeron55 no 8) 19:22 darkrose ok, ignore me then 19:22 celeron55 in fact, i already checked it when i saw the code 19:24 hmmmm shouldn't he be using rangelim 19:25 celeron55 well... yes - in fact i didn't even remember whether minetest has such a function or not 19:25 celeron55 Exio: util/numeric.h:113 19:26 celeron55 it even is in a reasonable location 19:27 hmmmm ugh crap 19:27 hmmmm i just realized a bit of a problem with my implementation of getStruct() 19:27 hmmmm i have no way of telling what the compiler's alignment is 19:27 hmmmm no portable way * 19:27 celeron55 alignment? 19:28 celeron55 what are you doing 8) 19:28 jin_xi chaotic, neutral, lawful 19:28 celeron55 are you casting structs from byte arrays 19:29 hmmmm writing to a buffer for the caller to cast into a struct 19:29 hmmmm basically i want to be able to do 19:29 darkrose pack the struct 19:29 hmmmm Foo *foo = (Foo *)g_settings->getStruct("setting_foo", "f,f,v3f,u32d,f,b", sizeof(Foo)); 19:29 hmmmm for example 19:30 celeron55 i've never attempted to do that 19:30 Exio (204,102,204) 19:30 Exio and, ok, i will move it 19:31 Exio s/move/check 19:31 hmmmm well i don't want the caller to have to define a packed version of whatever it is just to call this 19:31 celeron55 i don't even know if that is possible for this case 19:31 hmmmm i mean that's the obvious solution but it's completely disgusting 19:33 hmmmm i guess 19:33 hmmmm i do runtime detection? 19:33 darkrose can't use offsetof() ? 19:34 hmmmm nope, that would require my function to know the type of struct it is 19:35 hmmmm I guess what I can do is create a couple of macros to do offsetof() on some dummy structs to find alignment values 19:35 celeron55 is it possible to test all relevant cases? 19:35 hmmmm huh 19:35 darkrose yeah I was just thinking of that 19:35 hmmmm alright, that's what i'll do then 19:36 hmmmm it's decent, portable 19:37 celeron55 do any of the compilers that minetest compiles on use struct reordering? 19:38 celeron55 i haven't got the slightest of clue if the ABI of any relevant platform uses that 19:42 hmmmm well the C standard says that structures are sequentially allocated nonempty set of member objects' 19:43 hmmmm it's a shame that sequentially here doesn't imply in-order 19:44 hmmmm if anything uses struct reordering, this entire function plain won't work 19:50 hmmmm are we allowed to use C++11-specific features? 19:52 hmmmm I am able to sidestep the struct reordering if it's a POD 20:01 RealBadAngel https://github.com/celeron55/minetest/pull/368 20:01 RealBadAngel ufff, i just finished workin on treegen 20:01 RealBadAngel at least c++ part of it 20:05 PilzAdam thexyz, it happened again: *** longjmp causes uninitialized stack frame ***: /home/adam/Minetest/minetest/bin/minetest terminated 20:06 thexyz in minetest master? 20:06 PilzAdam jup 20:06 PilzAdam on a server with cURL 20:08 thexyz PilzAdam: can you try this workaround http://stackoverflow.com/questions/9191668/error-longjmp-causes-uninitialized-stack-frame and report if this one will work? 20:12 PilzAdam you mean this curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1) ? 20:14 thexyz yes 20:14 thexyz commit then if it'll work 20:20 hmmmm poop 20:21 hmmmm well here's one small limitation of getStruct - you must use std::string * instead of std::string if you want it to be a POD type eligible for use 20:22 RealBadAngel if somebody wanna test the treegen here are simple tools to test it, http://realbadangel.pl/treegen_tools.zip 20:23 RealBadAngel while testing i designed pretty nice apple tree i think http://realbadangel.pl/RealAppleTree.png 20:23 PilzAdam RealBadAngel, +1 for the new trees 20:23 hmmmm that's pretty neat, what's with the rest of the blocky trees? :) 20:24 RealBadAngel with the tools comes the apple tree (is also as example in api) and the oak 20:24 RealBadAngel in the engine there are no hardcoded axioms 20:24 RealBadAngel all can be passed to treegen via LUA 20:25 RealBadAngel ive added usage of thin (1 node) trunks 20:26 RealBadAngel generation of fruit trees 20:26 RealBadAngel and yaw/pitch/roll commands to control the turtle 20:27 RealBadAngel so its possible to design a tree node by node 20:27 RealBadAngel if fact its a simple programming language 20:28 Exio well, i think the change is done 20:28 Exio i was playing some FPS, sorry for the delay :P 20:31 RealBadAngel once its merged i think makin competition in forums could be a good way to get some decent models to use ingame 20:36 celeron55 RealBadAngel: that tree looks pretty good 20:37 hmmmm answer me :/ 20:37 hmmmm [02:50 PM] are we allowed to use C++11-specific features? 20:37 celeron55 what features 20:37 hmmmm alignof() 20:37 celeron55 does gcc 4.6 and msvc2010 support them 20:38 RealBadAngel celeron55, took me a while to get orientated, but its pretty easy to design even complicated shapes 20:38 hmmmm yes 20:38 RealBadAngel like palm trees, willows or whatever 20:40 RealBadAngel one tip, once drawing is started, turtle looks up 20:41 celeron55 hmmmm: how about mingw 4.2? 20:41 celeron55 or, umm... i wonder what is the lowest version that is generally used for cross builds 20:41 hmmmm looks like it 20:42 hmmmm i would just be using sizeof() here but i can't do that exactly 20:42 hmmmm specifically because of v3f() 20:42 hmmmm er, -() 20:42 RealBadAngel hmmm, we have textures ready for several kind of trees, oak, pine, birch, etc 20:42 RealBadAngel now just the models 20:43 celeron55 debian stable appears to have mingw 4.2.1 20:43 celeron55 how about LLVM 20:43 hmmmm of course it has to work on my machine 20:43 hmmmm i use gcc 4.2.2 20:44 celeron55 google returns some stuff for clang and alignof 20:44 celeron55 i guess all of the supported compilers work then 20:44 hmmmm ICC included since it's designed to be compatible with gcc 20:45 hmmmm do you mind if i add Settings::getU32 also 20:45 celeron55 i don't see any reason for not using it - we just need to spend some time making sure all compilers have the appropriate options 20:47 celeron55 hmmmm: whatever 20:47 hmmmm yeah just for the sake of symmetry 20:47 hmmmm i can't standing having things uneven like that 20:47 hmmmm s/standing/stand/ 20:52 celeron55 i have some somewhat related stuff around 20:52 celeron55 https://github.com/celeron55/minetest/commit/86f032045ce40c976cbd90b65fcffac00dec7e73 20:52 celeron55 don't care about the BKVL thin 20:52 celeron55 +g 20:53 celeron55 or, maybe look at the append/get methods of it 20:53 celeron55 dunno if that is of any use, but that is some serialization stuff i happen to have hanging around 20:53 celeron55 it's from this branch https://github.com/celeron55/minetest/commits/bkvl 20:54 hmmmm thanks anyway 20:54 celeron55 it basically implements templated binary serialization of whatever you throw at it 20:54 celeron55 STraits, that is 20:55 celeron55 this commit extends it with some more types in a location where it is used https://github.com/celeron55/minetest/commit/b93b88e9b26985d6f9b1eb31546fd3dd53a0dd1a 20:56 celeron55 that and the BKVL implemented using it is basically intended to be an easier cross-version compatibility binary format for serialization of stuff to disk 20:57 celeron55 i implemented it to be used with the meta_set_nodedef branch 20:57 celeron55 for a node definition to be stored in the node metadata when so wanted 20:59 celeron55 and others too... i'm just not too sure if it's good or not; it definitely implements a consistent format that doesn't waste that much space but has explicit keys and values for the data instead of an array from which you can't remove from in between like things currently are 21:00 celeron55 anyway; everybody working with serialization stuff should know about that one, so that it can be pulled into use if needed 21:15 celeron55 https://github.com/blog/1364-downtime-last-saturday 21:15 celeron55 8) 21:25 RealBadAngel celeron55, have you checked my pull? 21:40 VanessaE celeron55: the mapgen lockup may be limited only to system-wide installed, not run-in-place. With run-in-place, it ran for hours and hours without a lockup. Soon as I moved it to system-wide install, it was down within 3 hours. 21:40 VanessaE backtrace! http://pastebin.com/GdjSwCDL 21:42 VanessaE is any of that useful? 21:43 hmmmm oh no, peerItemCount problems again :| 21:43 hmmmm are you absolutely sure that you replaced the binaries correctly? 21:44 VanessaE positive. 21:45 VanessaE apt-get remove minetest (I used checkinstall to install it) 21:45 VanessaE cmake -DRUN_IN_PLACE=0 -DCMAKE_BUILD_TYPE=Debug . 21:45 VanessaE make -j12 21:45 hmmmm wait wait 21:45 hmmmm oh 21:45 hmmmm nvm 21:45 hmmmm well the difference between run_in_place and not is the config file it uses 21:45 VanessaE and then checkinstall set not to strip the binaries and .so's of their debug info. 21:46 hmmmm could the minetest.conf found in the directory have better settings or something 21:47 VanessaE http://pastebin.com/cCmNpaHM 21:47 VanessaE the server runs this ^^^ for the config. 21:47 VanessaE (note that most stuff is commented out) 21:47 hmmmm when you did both the run in place and without? 21:47 VanessaE yup 21:47 VanessaE same file for both. 21:48 VanessaE same world, same config file, same build dir, same game. 21:48 hmmmm did you pass a --config parameter? 21:49 VanessaE to the server? yep 21:49 VanessaE gdb --args minetestserver --config /home/vanessa/.minetest/minetest-server.conf --worldname My_World_server --gameid vanessa_game --port 30000 --logfile /home/vanessa/.minetest/debug-server.txt 21:49 VanessaE dammit I ctrl-Z'd while in gdb.. how do I resume it? 21:49 hmmmm fg 21:50 hmmmm hum 21:50 VanessaE it just keeps responding that it's receiving SIGTSTP. 21:50 VanessaE no matter, it needs restarted anyway 21:50 hmmmm no idea 21:52 VanessaE and I'm pretty sure that line you wanted me to add is in the right place: http://pastebin.com/67L0UCP2 21:53 Exio btw 21:53 hmmmm hrmm? 21:53 hmmmm i didn't tell you to add that 21:53 hmmmm are you talking about the patch that was made 21:53 VanessaE maybe c55 did. 21:53 hmmmm that one wasn't there 21:53 VanessaE the one-liner that was supposed to silently drop the emergethread buffer 21:53 Exio i should close the pull request, and make one but adding an option for the crosshair 21:54 hmmmm yeah, that's not the right place to put that line of code :/ 21:54 VanessaE wait, I think I pasted the wrong section of code 21:54 VanessaE http://pastebin.com/Ed610Xta 21:55 VanessaE that's the one I added 21:55 hmmmm that one's right 21:55 VanessaE (I just did a quick search for "goto" to find it) 21:55 hmmmm grr 21:55 hmmmm it would be so much better if you messed something up 21:55 VanessaE lol 21:55 PilzAdam goto?!? 21:55 VanessaE at least then we'd know for sure who to blame :D 21:56 VanessaE PilzAdam: goto. 21:56 PilzAdam last time I saw goto was in TI Basic 21:56 hmmmm well 21:56 hmmmm too much Java? 21:56 PilzAdam maybe 21:56 hmmmm anyway I don't think it has anything to do with it being compiled as run in place or not 21:57 celeron55 being compiled as debug or not could have much effect 21:57 hmmmm if you're running the correct executable and you're using the correct config file 21:57 VanessaE vanessa@rainbird:~$ which minetestserver 21:57 VanessaE /usr/local/bin/minetestserver 21:57 VanessaE looks like the right one to me :) 21:57 hmmmm i would've assumed vanessa only compiled it as debug _because_ she saw it happening again 21:58 hmmmm wait, /usr/local? aren't you on Linux? 21:58 VanessaE nope, the run-in-place build was compiled as debug also but you probably guessed that. 21:58 VanessaE yup, I am. 21:58 hmmmm Ubuntu has a /usr/local 21:58 hmmmm hmm 21:58 hmmmm i did not know that. 21:58 VanessaE most linuxes do that these days I always thought 21:59 VanessaE no matter, not relevant anyways 22:00 VanessaE my first thought was some obscure permissions issue but that's equally unlikely 22:01 PilzAdam run it as root to be sure ;-) 22:01 VanessaE hah! 22:01 hmmmm running an outside-facing daemon with craptons of bugs as root 22:01 hmmmm sure thing pal 22:01 VanessaE why don't I just open a passwordless telnet daemon while I'm at it ;) 22:01 hmmmm i wonder how easy minetest is to exploit 22:02 Exio 2 22:02 Exio oops 22:02 hmmmm someday when i'm bored and i have nothing better to do, i am going to try it 22:02 Exio fail :P 22:02 VanessaE hmmmm: hopefully not too much so. If I had an ounce of intelligence I'd be running this server as 'nobody' but it runs as me for now 22:02 VanessaE because I'm too lazy to create a proper limited-scope account to run it under :) 22:02 hmmmm if i were running a minetest server i'd run it in a jail 22:03 hmmmm yea i have jails :D 22:03 Exio s/jail/lxc ftw :P 22:03 celeron55 minetest 0.3 has a known unfixed permission exploit... 8) 22:04 hmmmm LXC looks like it's more of a Zones type-of-thing 22:04 celeron55 i'm too lazy to do all the release hassle so i rather just don't commit a fix 22:04 celeron55 and hope nobody uses it 22:05 VanessaE celeron55: persistent through 0.3.1? 22:05 celeron55 the whole 0.3 series has it; 0.4 doesn't 22:06 hmmmm erm 22:06 VanessaE celeron55: your hopes have been dashed - I frequently see jabber from people who want to use 0.3.x 22:06 VanessaE :-) 22:06 celeron55 it's very tough to find though 22:07 hmmmm completely unrelated, but from now on, i think we should use strtoull() instead of istringstream for grabbing 64 bit values 22:08 VanessaE Thread 5029 <-- I just now saw that. ??? 22:09 VanessaE is this what you were seeing before? 22:09 hmmmm that's just a thread ID 22:10 VanessaE ok 22:10 hmmmm in particular it's the EmergeThread 22:52 hmmmm does anybody know if we have uintptr_t on Windows? 22:53 hmmmm ah nevermind, it is in stddef.h