Time Nick Message 00:00 Shara hah 00:00 Shara though it does make it kinda hard for me to use anything :P 00:01 Shara mostly intrested in the beds 00:01 Jordach Shara, my plan is to have a singular game server 00:01 benrob0329 BSD 4 clause, obviously 00:01 Jordach (aka an offical thing) 00:01 Shara I need nice beds for something. 00:01 Jordach Shara, unlucky 00:01 Jordach it needs that custom player model 00:01 Shara hmm 00:02 Shara might not even matter for what I'm thinking of 00:02 Shara not all beds are for sleeping in! 00:04 benrob0329 > Tabs 00:04 benrob0329 TRIGGERED 00:04 Jordach tabs can be converted into spaces by any fucking editor 00:04 Jordach the tab key comes from the typewriters tabulator key 00:04 Jordach for exactly that goddamn purpose 00:45 Jordach i want to revisit the late 80s to early 90s 00:45 Jordach (specifically 87->94) 00:45 Jordach scratch 87, make it 84 00:47 paramat i was there :] the space LEGO was excellent then 00:47 Jordach paramat, more specifically 00:47 Jordach the rise and death of analog before digital madness 00:50 Jordach paramat, there's just something *magical* about cassettes 00:50 Jordach my phone's digital music playback just drives me mad 00:51 Jordach it's the "flat" and "monotone" sound these modern phones produce 00:56 Jordach paramat, https://www.youtube.com/watch?v=fT4lDU-QLUY 00:56 Jordach just feels magical 00:56 Jordach and remarkably peaceful 01:00 paramat yes i loved cassettes, didn't really do records 01:00 Jordach paramat, got a collection of these marvels in restored condition 01:02 Jordach what makes that video special 01:02 Jordach it's before doom on DOS 01:02 Jordach before win 9x 01:03 Jordach before even modern dialup systems 02:25 Sokomine hmm. perhaps i ought to ask if trees_lib can be added to minetest-mods. it's a lib, not many screenshots, and people intrested will currently never find it, and adjustments to changes in mtg also ought to be considered 02:39 sofar Sokomine: url? 02:39 sofar nvm 02:47 Sokomine found it? i mentionned it in a recent post 02:49 sofar google fu 02:49 Sokomine the purpose of the lib is to add all that belongs to trees *except* spawning. it's basicly a complex register function that accepts schematics, l-system and functions for tree growth. node registration and sapling growth are handled. could probably use some adjustments to more recent mt. and maybe i ought to add a more basic example 02:49 Sokomine :-) 02:50 Sokomine in the end it's a lib, and those tend to be useful only if they're available and installed 02:50 sofar don't see a license 02:51 sofar other then that, we can put it in minetest-mods :) 02:51 sofar slap MIT on it and transfer? 02:51 sofar afk a bit 02:51 Sokomine let me check where the sample code came from...but afaik that was mostly mtg 02:55 * benrob0329 pops in 02:55 benrob0329 Isc License. 02:55 * benrob0329 pops out 02:56 Sokomine i usually use gplv3.0. maybe unpractical for a lib? the example code is partly taken from duanes valles mapgen, vanessaes moretrees and mgv6 03:18 Sokomine what would be the best liscence in this case? probably lgpl? mtg seems to use that... 03:20 sofar lgpl-2.1 is best for mtg compat 03:20 sofar mit is second best 03:20 sofar same reason 03:50 sofar https://gist.github.com/sofar/b3244ce728a907c6a442fcf7cd050985 03:50 sofar just for the heck of it 03:51 sofar oh, was meant for -dev 04:03 nore https://github.com/minetest/minetest_game/pull/1696 to follow with this afternoon's argument, this should make everyone happy :) 04:16 benrob0329 github dark theme is great when you have a headache 04:18 benrob0329 hi paramat 04:23 paramat full moon O_O and full jupiter right next to it 04:24 benrob0329 nice 04:33 sofar the moon is fantastic tonight 04:33 sofar I might pull out my tripod and 7x15s 05:22 nore hey all 05:22 nore need input on this: https://github.com/minetest/minetest_game/pull/1696 05:23 nore one important change if this is merged is that TNT & fire will be *enabled* by default even for multiplayer; however if will be trivial to disable them (can be done in-game with the config tab) 05:38 benrob0329 +1 05:45 benrob0329 sofar: I would reply to the creation vs evolution thread, but I'm just too tired 05:47 sofar hahaha 05:50 benrob0329 Ah screw it, I replied anyways 06:19 benrob0329 Gnight all 06:38 octacian Night all 06:44 nore night 08:06 Zeno` is there nothing with can do about the current warnings? 08:06 Zeno` s/with/we 08:06 Zeno` oops wrong channel 08:50 Shara Morning all 08:51 Krock moin Shara 08:51 Krock how are you? 08:52 Amaz Moring Shara :) 08:52 Shara Not bad thanks. 10:46 red-001 #minetest is pretty confusing right now 10:47 nerzhul why ? 10:49 red-001 way too many accronyms 11:02 VanessaE question, in a furnace that's active, if the fuel slot is empty but the furnace is still burning from the last lump of whatever, is it normal that inv:room_for_item() should return false when you check that slot? 11:02 VanessaE or rather, it always returns false in that case. is there a way around this? 11:16 Krock VanessaE, room_for_item() does not take regard on the type of node or its functionality 11:17 VanessaE I know. just talking about that particular corner-case 11:17 VanessaE to the eye, the slot is empty, but room_for_item() disagrees 11:17 Krock wrong list name, index or stack to put in? 11:17 VanessaE nope, it's all correct as far as I can tell 11:18 Krock hmm 11:19 VanessaE https://github.com/minetest-mods/technic/blob/master/technic/machines/register/generator.lua#L5 11:19 VanessaE here's a practical example 11:19 VanessaE (assume splitstacks != 1 for the sake of this code) 11:20 Zeno` is the leak still happening VanessaE? 11:20 VanessaE as long as the furnace is totally idle, room_for_item() returns true regardless of the stack size 11:20 Krock but there you put the stuff into the list "src" 11:20 Zeno` I tried to download twice last night but both times failed 11:20 VanessaE Zeno`: yes, and still not sure of the cause, only that I can reproduce it on-demand. 11:21 Zeno` ok, I'll try the download again 11:21 VanessaE Krock: that's the correct list for this node. 11:21 VanessaE or wait 11:21 VanessaE that's the current code, I took out the fuel check 11:22 VanessaE wait wait 11:22 Krock insert_object needs "splitstacks" check too 11:22 VanessaE I pointed you to the wrong code, detp 11:22 VanessaE derp* 11:22 Krock lol 11:23 VanessaE actually no, that's the correct file. 11:23 Krock but wrong line? 11:23 VanessaE naw, it's right. the list is just named "src" for some reason. 11:23 VanessaE (I didn't write it, I'm only adding a feature) 11:24 VanessaE anyway, insert_object is only ever called if can_insert returns true. 11:25 VanessaE (you can see it happen if an item goes in and then comes back out - that's an indication that the stack could be split; what comes out is just the leftovers) 11:25 VanessaE so if you insert a lump of coal or whatever, and the furnace "takes" it and starts burning it, it empties the fuel slot 11:26 VanessaE if you check the fuel slot with room_for_item(), it will return false. 11:26 Krock that's somewhat strange 11:26 VanessaE unless the stack count is 1. 11:26 * CWz gives VanessaE a box of peanutbrittle 11:26 VanessaE it'll accept it then 11:26 VanessaE (which you can see in the code is actually how the can_insert check is done) 11:27 VanessaE hi CWz 11:28 Zeno` 3 hrs 57 minutes :/ 11:28 VanessaE ? 11:28 Zeno` I wish there could be a smaller test case hehehe 11:28 VanessaE oh the download 11:29 Zeno` yeah :/ 11:29 VanessaE well, at least the map will be fairly up-to-date now (only one day old) 11:30 VanessaE Krock: any ideas? btw the same thing happens with the regular old furnace (as modified by pipeworks; that's the one where I had a deliberate fuel check and removed it because of this glitch) 11:31 Krock I've looked through the C++ code of room_for_item but couldn't find anything that would prevent from putting items into empty stacks 11:31 VanessaE hrm 11:41 Fixer hi 11:45 VanessaE hi 11:46 Krock hello Fixer 11:47 * Jordach irl http://i.imgur.com/LfBFEZP.png 11:49 Fixer Jordach: expected to see pepe... 11:55 Jordach Fixer, tfw you get fucked by your team not helping and by dark souls being dark souls 11:55 Jordach never playing the objective in BF1 11:55 Jordach ;_; 11:59 Fixer PB&J Pup: Remove mod #1695 11:59 Fixer kek 11:59 CWz Jordach, sound like a TF2 experience 11:59 Jordach CWz, nah lets just camp and snipe instead of capturing flags 12:10 Jordach CWz, i just always love heavy machine guns 12:11 Zeno` I just like sniping 12:11 Jordach >pussy 12:11 Zeno` it annoys people and it's funny because it's legit 12:11 CWz Zeno' play's tf2 12:11 Jordach i'll use those rifles, but no scope :P 12:12 CWz ? 12:12 Zeno` CWz, yea 12:12 CWz cool 12:12 Jordach CWz, Battlefield 1 allows you to use bolt action rifles without their scope 12:12 Zeno` and also bf and also cod (although not much cod for ages) 12:12 CWz silly Zeno` cod is a fish 12:12 Zeno` :P 12:13 CWz Both Sniper and Zeno are australian 12:15 Zeno` you know sniper? 12:15 Jordach snipins a good job m8 12:15 Zeno` sniper is not Australian btw 12:15 Jordach out of doors, plenty o' work 12:15 Zeno` well he might be... but he doesn't live in AU 12:17 Calinou New Zealand I think? 12:17 Zeno` nah 12:17 Zeno` closer to Africa I think :P 12:18 Fixer ha 12:19 Fixer i've noticed some opensource guys went into steam 12:19 Zeno` just waiting for hl3 12:19 Fixer played only bf 1942 and bf2 12:20 Fixer Zeno`: will be probably released in this century 12:20 Fixer or gabe dies 12:20 Zeno` yuo think? 12:20 Fixer i want to believe.png 12:20 Zeno` Duke Nukem Forever is more likely to me released! 12:29 red-001 naw they are just going to call it hl4 12:41 Fixer hl 4-1 12:43 Megaf I will just leave this here. https://9gag.com/gag/aLDGOwz 12:44 Fixer you can do that too 12:45 Fixer depending on food 12:54 Megaf oh boy, I want her https://9gag.com/gag/aQ9mQNd?sc=gif She is very smart 13:01 nerzhul Megaf: please talk about minetest, it's not #minetest-mylife 13:05 red-001 it's not as bad as #minetest 13:05 red-001 the channel is way offtopic today 13:11 nerzhul red-001: oh yes, i hope, because it's a channel to discuss about minetest and develop :) 13:11 nerzhul not the core itself, but community + coredevs 13:12 Jordach nerzhul, if you're like me and have no morale entirely 13:12 Jordach generic chatting is much better 13:13 Fixer i've tried to brainstorm this a little https://github.com/minetest/minetest_game/issues/1485 13:19 Megaf we should have #Minetest-Help, #Minetest-Dev, #Minetest-Chat and #Minetest-Hub 13:20 Megaf #Minetest been redirect to #Minetest-Help 13:20 Megaf That'd work 13:20 Fixer two channels is totally enough 13:20 nerzhul and #Minetest-mylife :p 13:20 Fixer #Minetest-nerzhul 13:20 Fixer #Minetest-Fixer 13:20 Megaf I actually laughed at that 13:21 Fixer it gets ridiculous here 13:21 Fixer we already have minetest.net/minetest.org/minetest.com/and shitton of irc channels 13:21 Fixer just move everybody back to #minetest 13:21 Fixer and devs in #minetest-dev ofc 13:22 Amaz And rename #minetest-project #minetest-hijacked :P 13:22 Fixer nuke -project and -hub and -de -whatever 13:22 Megaf Thankfully I haven't been given any power. If I'd any power I'd clean things up everywhere in the project. 13:22 Megaf Amaz, lol 13:22 Fixer it is not like #minetest is so flooded with chat 13:22 Fixer kids can be ignored on #minetest :trollface: 13:22 * Megaf is a kid 13:23 Megaf as you can tell 13:23 Megaf Now, is there anyone here running Minetest server in LXC containers? 13:24 Megaf It just occurred to me that'd be a pretty interesting idea on one of my Raspberry Pis 13:24 red-001 #minetest-project is already dead 13:24 Megaf I have a 4 core one, the Raspberry Pi 2, I'm pretty sure I can run 4 containers in that thing. 13:24 Fixer Megaf: age? 13:25 red-001 do people use the non-english channels? 13:25 Fixer Megaf: below 18? 13:25 Megaf Fixer, nope. 13:25 Fixer crawl uses #crawl and #crawl-dev , CDDA uses just one channel for everything, #minetest has like 5 or more channels 13:26 Megaf I wasn't serious on the age thing, nor on the girl thing. Just ignore that. 13:26 Megaf I think usually 3 channels is a good number a general one, where chat about everything is already, a help one and a dev one 13:27 Fixer i'm fine with 2 channels as it was 13:27 Megaf and IF the community of a specific language is large enough, then maybe a channel for that language could be created 13:27 Fixer but oh well 13:27 red-001 we seems to have about 5 general channels and one dev channel 13:27 Megaf Fixer, me too, as long as off topic is allowed. 13:28 Calinou don't forget #minetest-offtopic (for serious chatter), #minetest-/b/ (for the right people) 13:28 Shara Well, -hub is meant to be for different kinds of contributors to talk 13:28 Calinou :P 13:30 Fixer holy crap 13:30 Fixer there is #minetest-/b/ ? 13:30 red-001 now there is 13:30 Fixer or it is sarcastic? 13:30 red-001 yes 13:32 red-001 oh freenode search only shows registered channels 13:33 nerzhul yes 13:36 * Megaf joins /b/ 13:36 Megaf I've been there before 13:43 Krock Offtopic repost: "a new security patch has been applied https://i.imgur.com/xuzqyFl.mp4 " 13:44 Fixer Krock: minetest_game 13:44 Fixer revealed 13:44 Fixer pokerface while typing and hoping it is english 13:45 Krock ^^ 13:47 Krock o/ octacian 13:47 Fixer joins/parts/quits disabled 13:48 octacian hello Krock 13:49 Fixer hello octacian 13:49 octacian hey Fixer 14:00 Calinou https://i.imgur.com/nawMSxe.png 14:00 Calinou Fixer: ^ 14:00 Calinou this is too damn true 14:00 Calinou (404 errors of old vs modern sites) 14:00 Fixer Calinou: yep 14:01 Megaf my personal website gives this precisely (copied from the actual shown page) "404 File Not Found" 14:01 Fixer Calinou: remember new windows/gnome BSOD? Smile. Pooop. Smth happened 14:02 Fixer do not be alarmed @ stay calm 14:07 Megaf uh, oh, #Minetest-Chat is a thing now. Off Topic only 14:08 Megaf we have #Minetest-OffTopic too, to chat 14:13 octacian I just noticed that when I set the hand inventory to a new hand (specifically to a custom hand meant for creative), the new hand tool_capabilities are only used if I'm not wielding another item 14:13 octacian Is this meant, or what? 14:14 Krock I thought that was fixed recently 14:14 octacian oh 14:14 octacian Well, I should probably update MT in that case :D 14:15 octacian (I've been very inactive on GitHub lately so don't have a clue what's happened for the last month or so) 14:15 Krock https://github.com/minetest/minetest/commit/08b680d 14:15 Krock 21 days old 14:15 octacian Yay! Hardware colouring for itemstacks. 14:15 octacian Thanks! 14:15 Krock !next 14:15 ShadowBot Another satisfied customer. Next! 14:16 octacian Krock: here's a random question. Which would you prefer (assuming that no nodes had an on_punch callback): Instantly breaking blocks in creative, or no? 14:17 octacian (and if anybody else gave their opinion I'd be happy as well) 14:17 Krock a delay of about 200ms should exist IMO 14:18 octacian hmmm 14:18 octacian You don't happen to know what that translates to using the digtime variable used by the creative mod? (default 42) 14:18 Krock I rarely play in creative mode but digging too fast can be annoying for detailed work 14:19 Krock uhm 14:19 octacian Well, the basic concept is that with immediate dig you just click rather than hold 14:19 octacian I'm just unsure as to which would be more convenient 14:22 Fixer octacian: there was already a discussion about that 14:22 octacian Mind giving me a link? 14:22 octacian I'm trying to decide for my own subgame, just want to get some other's opinions 14:22 octacian Krock: yep, updating fixed hand issue 14:23 octacian I now have fully-functioning gamemode, just need to properly check creative_enabled setting 14:23 Krock final dig time = / time_from_last_punch * full_punch_interval 14:24 Krock seems to be in ms 14:24 octacian ok 14:24 Krock *s 14:25 octacian Fixer: since you seem to be around, which would you prefer? 14:25 octacian Immediate dig or like what MTG currently has? 14:25 Krock crreative currently uses 0.5s 14:27 octacian sounds about right 14:27 Fixer octacian: current one is a bit slow, it needs to be faster to not catch with the blocks 14:28 octacian Fixer: are you saying slightly faster or immediate? 14:29 Fixer octacian: slightly faster, immediate is also fine tbh %) 14:30 octacian hmmm OK 14:30 Fixer octacian: with instant there is bigger chance of error 14:30 octacian That's true. 14:30 octacian But once you get used to it, it's slightly nicer because everything breaks immediately rather than different things at varied times 14:38 octacian ..would XtremeHacker join already? lol 14:45 Shara octacian: Did someone invite him/her? 14:45 Shara If not, feel free 14:45 octacian Reminds me, he doesn't know about this channel. Well, that's an obvious reason why he won't join :rotfl: 14:46 Shara It's fine to invite someone if they are contributing to MT in some way. 14:46 octacian Well, soon as he joins another channel I will 14:47 octacian He works with me on a few things - mods, a subgame, so yes, he does contribute to MT in some way 14:48 Shara I'm mostly afk today, but will voice if I see him here 14:52 octacian OK, thanks. 14:59 octacian Shara: could you give XtremeHacker voice? 15:00 Shara Welcome :) 15:00 octacian Thanks! 15:04 XtremeHacker Thans. :) 15:04 XtremeHacker *Thanks 15:37 * CWz has a theory that Engineer is actually the most useless class in tf2, since his sentry can be replaced by a heavy solider combo. 15:38 Jordach they don't 15:48 Megaf o/ 15:48 Jordach o7 15:51 Fixer broken hand 15:51 Fixer o\ 15:52 Megaf /o\ 15:52 Megaf \o/ 15:52 Megaf (o_o) 15:55 Krock or scratching on the head? 15:56 Megaf I think o7 is just protecting his eyes from the sun while searching for something near the horizon 15:57 Krock depends if there's a straigt down line after the horizontal one in your font 15:58 Krock o'7 basically, as replacement 16:55 Krock !tell tenplus1 http://i.imgur.com/ML0I2vC.png - look like a nuclear war to me tbh 16:55 ShadowBot Krock: O.K. 17:08 sofar ~ 17:08 sofar aliens 17:08 sofar argh 17:08 sofar ~ 17:09 Jordach ayy lmao 17:09 sofar ~ 17:09 sofar /o\ 17:09 sofar aliens 17:09 sofar sigh 17:09 sofar that looked better in my head 17:10 Shara Hi sofar :P 17:17 Krock lol 17:18 nore hey sofar 17:18 sofar hacking up my timer class a bit atm 17:18 nore heh 17:18 sofar I don't like how it needs a global name 17:18 sofar trying to make it use a local name instead 17:19 sofar but, then I need to use debug.* functions to get the upvalue 17:19 sofar maybe I shouldn't, or use a different method 17:20 nore oh, btw: those of you who preferred fire & tnt disabled by default on multiplayer servers: is game#1696 ok for you? it enables both of them back by default, but disabling them is as simple as going into the "configuration" tab of the inventory and unticking both of them 17:20 nore ehm, what do you need a global name?? 17:21 nore *why 17:21 nore hey nerzhul 17:21 sofar for persistency, I can't store a reference to the function 17:21 sofar I need to store a reference to the name 17:21 nore wait. 17:21 sofar but, I'm beginning to wonder if I should abandon storing it at all 17:21 nore so you sore a reference to the name of the function? 17:21 nore *store 17:21 sofar yes, the name 17:21 nore uuuuuuh 17:21 sofar yeah, exactly 17:21 nore no don't ever do that 17:22 nore several problems with that 17:22 sofar that's what I'm concluding now as well 17:22 nore 1. the function's name might be changed 17:22 nore 2. it might have upvalues 17:23 sofar yeah, and my timer class should be able to handle function refs just fine at timer creation 17:23 sofar hmm 17:23 nore so the correct way to do that is minetest.register_timer(, ) 17:23 sofar ok, let's redo it a bit 17:23 sofar no, it's all under a Timer() class 17:23 nore with the function getting what would previously were upvalues as arguments 17:23 nerzhul hey nore 17:23 sofar no more stuffing minetest.* even worse 17:23 nore okay, Timer.register_timer 17:23 nore same thing 17:24 nore the thing is, you have to register the timer somewhere 17:24 nore else you can't restore it 17:24 Krock local t1 = Timer(function() end) t1:Start() 17:24 nore no 17:24 nore doesn't work either 17:24 nore because you start the timer 17:25 nore the server is restarted 17:25 nerzhul sofar, i agree for purely generic features outside of minetest specific scope it's a good idea 17:25 nore and now it no longer knows the function 17:25 Krock eww. right 17:25 nore so I see only two ways to do this: 1. register_timer thing 17:25 sofar just wait 17:25 sofar stop it 17:25 sofar go get coffee 17:25 sofar come back in 30 17:25 * sofar shoos 17:25 sofar shoo 17:25 sofar shooooo 17:26 nore 2. a preprocessing step that performs transformation of the source code from the intuituve version to the less intuitive one 17:26 nore aaaaand, going back to work now :p 17:26 Krock nore, you were shoooo'ed away ;) 17:26 nore Krock: exactly :p 17:27 nore I'm letting sofar think and see why there are no other solutions 17:27 nore (arguably, passing the function as a string instead is yet another solution... but even more awful) 17:28 nore (and bad for performance as well) 17:28 Krock erializing the whole function would solve it but is somewhat insecure 17:28 Krock *serializing 17:28 nore you can't serialize a function I think 17:32 Krock somehow I managed it once... uhm 17:34 Krock > return string.dump(function() print("foobar") end) 17:34 Krock ^ produces bytecode, nore 17:34 nore ah yeah 17:35 nore but loading bytecode is not safe so not allowed IIRC 17:35 Krock yes 17:37 sofar I didn't serialize the *code* 17:37 sofar guys, you're going on a red herring I didn't even make 17:37 sofar 20 more minutes, shoo 17:37 * sofar waves hands unintimidatingly torwards Krock and nore 17:37 Krock these are just hypotheses 17:39 nore sofar: I never said you serialized the code :) 17:39 nore but I'm waiting and will see what you come up with 17:40 Krock I think sofar must mute this channel for a while to not get interrupted 17:40 Krock it's quite mean to stop sofar from working on this feature 17:41 sofar lol 17:42 Krock ^^ 17:42 Krock hello rubenwardy o/ 17:42 rubenwardy hi 17:44 nore Mode #minetest-hub [-v nore] by sofar 17:45 Krock Mode #minetest-hub [+b ~nore@free.node/user/somewhat] by sofar 17:45 Calinou free.nude 17:45 Krock or that ^ 17:45 nore heh 17:45 * sofar shoos more 17:46 nore Krock: it's ~ncourant@sas.eleves.ens.fr actually :p 17:46 rubenwardy wat 17:46 nore hey rubenwardy 17:47 * Krock gives sofar a 't' for the 2nd last position that will definitely make his "shoo" work 17:47 Krock *shoos 17:47 nore (I don't know how this work and how you can control it) 17:47 Krock nore, the cloaks? you can request one in the services channel 17:48 nore hmmm 17:48 nore should do that someday 18:00 sofar ok, it's working entirely now 18:01 sofar publishing to minetest-mods, including demo code 18:01 nore sofar: code or it didn't happen 18:01 sofar we can curate and test it there 18:01 nore :p 18:17 * sofar writes docs :P 18:22 nore you didn't push anything yet :'( 18:24 Jordach sofar, what'cha doin 18:24 sofar gotta have docs 18:25 sofar Jordach: saveable timer class code 18:25 sofar github.com/minetest-mods/timer 18:25 Jordach oo 18:26 nore sofar: push it and push docs later :p 18:32 sofar reload 18:33 sofar reload 18:34 Jordach RELOADING 18:34 * sofar pushes 18:34 sofar ... his desk 18:34 * sofar giggles 18:35 sofar To github.com:minetest-mods/timer.git 18:35 sofar * [new branch] master -> master 18:35 sofar alright it's pushed 18:39 nore sofar: okay, so it's equivalent to the register_timer thing I spoke about :p 18:39 nore except that the mod is responsible for the seralization 18:39 sofar yes except I dropped the entire `register_foo` naming thing 18:40 sofar just treat it like a lua class 18:40 sofar we could add serialization and deserialization as a method 18:40 sofar actually 18:40 nore also 18:40 sofar we could even do the storage load and retrieve 18:40 sofar Timer:store(storageref, "keyname") 18:41 nore yes 18:41 sofar t = Timer(func, storageref, "keyname") 18:41 nore I'd still like an easy way to do what you usually do with minetest.after 18:42 nore i.e. minetest.after(5, function(pos) minetest.set_node(pos, {name = "default:stone"}) end, pos) 18:42 sofar t = Timer(func, storageref, "keyname", default_interval, default_repeats) 18:42 nore but put that in a function 18:42 nore like on_place = function(...) minetest.after(...) end 18:42 sofar you can do 18:42 nore how 18:42 nore ? 18:42 sofar t = Timer(function(bla) end, .... 18:43 nore yes? 18:43 sofar yeah, should work just fine 18:43 nore you can't pass arguments with that method 18:43 sofar correct, you can not 18:43 nore also, you can have only one running at once 18:43 sofar no, you can have as many as you want? 18:44 nore not with the same function/timer class 18:45 sofar local t = Timer(....) 18:45 nore and you don't know in advance how many you will want in the case I just said 18:45 sofar I don't see the problem. t can be a local variable 18:45 sofar you can make thousands of t's 18:45 nore but 18:45 sofar for i = 1,1000 do local t= Timer() end 18:46 nore you can't restore these 18:46 nore or store them 18:46 sofar if you want to save them you need to array them 18:46 sofar I don't see the problem with that 18:46 sofar that's what arrays are for 18:46 nore and know when to delete them etc 18:46 nore that's horribly complicated 18:46 sofar that's not something I can solve anyway 18:46 nore however, what you can do 18:46 nore yes you can 18:47 sofar well I suppose with a storageref and key name, it could autosave? 18:47 sofar but then I need to maintain lots of state 18:47 nore allow each of your timers to contain several at once, but with the same function, only the arguments & delay would be different 18:47 sofar which I don't want to 18:48 sofar you're making it way too complex 18:48 nore and you do things like timer:start_new(delay, args) 18:48 sofar nooooo 18:48 nore nah, that's the usual use case 18:48 nore why no? 18:48 sofar if you want that, make a new overlay class that does that 18:49 sofar and does the housekeeping of what is essentially an array 18:49 nore hmmm, I'll do that, probably 18:49 * sofar shoos nore 18:49 nore meh 18:50 * nore shuns sofar 18:50 sofar now, auto-storing and retrieving, that is something we should put in Timer() 18:50 sofar since that is very useful 18:50 sofar but I don't see why every entity couldn't have a Timer in it's own luaobject 18:51 sofar so I don't see the need for an embedded list 20:28 sofar ok I'm gonna make it handle saving/restoring as well 20:28 sofar the Timer() initializer can directly read from storage if needed 20:29 sofar and then you can Timer:save() it when you need 20:29 sofar that'll make the demo code really simple too 20:38 Sokomine sofar: i think trees_lib is now ready. i've seperated the examples from the lib and done some adjustments to the examples for mtg (i.e. added apsen tree and copied leafdecay). that part can be found on https://github/Sokomine/trees_lib_examples 20:38 Sokomine how do i hand trees_lib over to minetest_mods now? :-) 20:39 Sokomine it still could use some adjustments to more recent changes - in particular that lbm/timer growth instead of abms 20:40 sofar github transfer it to `sofar` 20:40 Sokomine perhaps the few lines that show how easy aspen trees could be added (once their schematic and textures are there) in comparison to how many lines it takes in mtg will convince some that the lib could be of use :-) 20:40 sofar I'll move it tonight 20:40 Sokomine thank you 20:41 Sokomine now...er...where do i find that...*searching for link* 20:46 Sokomine found it. thanks. hope it'll help if more people can work on it. i'm sometimes a bit lazy with my own repros and pull requests 20:50 nerzhul sofar, you mean persistent storage? 20:51 sofar nerzhul: yes. I'll push an update in a sec 20:51 sofar it's working nicely and makes it even easier to make timers 20:52 sofar I should test it with an anon function too, just to be sure 20:52 nerzhul sofar, do you use mod storage or another storage model ? i think we should fededate our storage at a point 20:52 sofar use mod storage 20:53 sofar gimme a sec and I'll have code to show 21:08 sofar https://github.com/minetest-mods/timer 21:08 sofar nerzhul: nore: Krock: ^^ 21:08 sofar take a look at the usage as well: 21:08 sofar https://github.com/minetest-mods/timer/blob/master/timerdemo/init.lua 21:09 Krock \o/ 21:10 nerzhul sofar, interesting 21:10 sofar note that the timer gets stored in the calling mod, not in the timer class mod 21:10 nerzhul and it permits each mod to use its private storage it's nice 21:10 sofar yes, so things like upgrading will be easier for mods 21:11 nerzhul yes, and if a mod is removed, timer is removed with it 21:11 sofar and you can still do non-persistent timers easily 21:11 sofar exactly 21:11 Fixer btw, why minetest-mods are not in minetest/ organisation? 21:11 sofar I wanted my own empire 21:12 sofar eh, wait 21:12 sofar :) 21:12 sofar no, it doesn't belong there, period 21:12 sofar minetest-mods is basically organizing mod devs 21:12 sofar as opposed to organizing core devs 21:13 nerzhul Fixer, it's difficult, as you cannot have subgroups unlike gitlab 21:13 nerzhul minetest/mods/timers is not possible with github 21:13 Fixer oh 21:14 sofar also minetest-mods can contain things that -core probably would never accept 21:15 sofar it spreads a bit of risk 21:15 Fixer https://forum.minetest.net/viewtopic.php?f=18&t=16595#p262452 please read Wikipedia Founder cat eyes 21:16 sofar Fixer: ? 21:17 Fixer sofar: "Where can i find new specifications for 27. map format?" 21:17 Fixer sofar: i've poked unexplore author to check new map format and he has no idea what was changed/added 21:17 sofar open an issue, I'd say 21:17 sofar docs out of date -> bug 21:18 Fixer thats a good idea 21:30 sofar nore: the one thing I may want to add is a `data` ref that gets passed through to the timer function 21:30 sofar timer:set_data(data) 21:30 sofar timer:get_data() 21:30 nore I think this would be good to have indeed :) 21:30 sofar so you can pass it an arbitrary bit of data 21:30 sofar but it would not get saved to storage 21:30 nore what 21:31 nore then it's useless 21:31 sofar since it can contain functions 21:31 sofar there's no way to save it 21:31 sofar or userdata 21:31 nore well, you are responsible for the data being able to be saved 21:31 sofar easy enough to timer:set_data() after initializing it 21:32 sofar and if the mod changes behavior, it may entirely redo the structure of `data` 21:32 sofar so storing it would potentially cause issues with mod upgrades 21:33 sofar it would be entirely reasonable to pass an luaobject ref 21:34 nore hmmm 21:35 nore well, it's the always-there storage & compatibility problem 21:35 nore the one that never has a perfect solution 21:49 rubenwardy sofar,: unpack(arg) 21:49 rubenwardy function foo(bar, ...) local tab = unpack(arg) end 21:49 rubenwardy tab because ... in table form 21:49 rubenwardy opposite of pack 21:50 rubenwardy actually no 21:50 rubenwardy arg is a table with the value of ... 21:50 rubenwardy unpack turns a table into an arglist 21:51 rubenwardy so you could do start_timer(name, ...) local def = {name=name, data=arg} end 21:51 rubenwardy https://www.lua.org/pil/5.2.html 21:52 sofar I know unpack, minetest.after uses it 21:52 rubenwardy unpack is the wrong one, arg is right 21:52 sofar but it's use is limited since you can always use a nameless function and embed the data 21:53 sofar minetest.after(4, function()... 21:53 sofar and again, you can't rely on `arg` being serializable 21:53 sofar and even table entries may change 21:54 sofar suppose I pass a ref to a table entry, it may not exist after startup anymore 21:54 rubenwardy warn about that then 21:54 sofar or not do it 21:54 sofar just use a local closure 21:54 sofar or treat it as unsaved data 21:58 sofar I mean, we're all just lazy because we write things like 21:58 sofar minetest.after(5, minetest.set_node, pos, node) 21:58 sofar instead of the WAY more DIFFICULT *cough* 21:59 sofar minetest.after(5, function() minetest.set_node(pos, node) end) 21:59 sofar :) 21:59 nore the first avoids closures and is more easy (in some sense) to serialize :) 21:59 sofar the difference is literally: "function() ( )" 22:00 rubenwardy does Timer define a timer type that can be started many times? 22:00 rubenwardy or does it make a new timer instance 22:00 nore rubenwardy: it doesn't :'( 22:00 sofar no 22:00 sofar a timer is a timer 22:00 sofar a timer is not ten timers 22:00 sofar a timer is ONE timer 22:02 rubenwardy do you have any examples of loading timers? 22:02 sofar linked, yes 22:02 sofar https://github.com/minetest-mods/timer/blob/master/timerdemo/init.lua 22:02 sofar there's 3 timers in that code example 22:04 rubenwardy oh, so it DOES define a timer type, it just can only be started once 22:04 nore yes 22:05 nore that's completely useless imho, but *shrug* 22:05 sofar ? 22:05 sofar why useless? 22:05 nore I mean, you often have events that make another event happen x time later 22:05 sofar just make a new one 22:05 rubenwardy what about buffs? 22:05 sofar local t1, t2 22:06 sofar moar timers 22:06 nore hmm, not useless because there are cases I see where it is usefull 22:06 nore i.e. executing an event every x seconds 22:06 nore but 22:06 sofar I can make it execute N times too 22:06 nore for the thing executing an event x seconds after another one 22:06 rubenwardy you'd have to make another timer with the exact same table and the same key as one that's defined at load time 22:07 nore with it being persistent which is want we can't do in minetest.after 22:07 nore it doesn't help 22:07 nore *what 22:07 sofar show me a scenario 22:07 sofar I think you're not seeing that this code can support that 22:07 sofar easily 22:07 sofar we can frob all sorts of useless bits into the class 22:08 nore okay 22:08 sofar or use it smarter 22:08 nore so 22:08 sofar I don't know what the right answer is 22:08 sofar but I do know that making swiss army knifes is not a good way to do OOP 22:09 nore you have a tool 22:09 nore that when you right-click on a node 22:09 nore after 10s, the node turns into gold 22:09 nore of course, the tool only has a limited number of uses, so you don't want to lose any event 22:10 nore how do you do that? 22:10 sofar counter argument 22:10 sofar you right click an entity 22:10 sofar after 10 seconds, the entity poops a golden egg 22:10 nore counter argument? 22:10 sofar how do you do that? 22:10 sofar you can't serialize the object 22:10 sofar the entity could be missing after a server restart 22:11 sofar or, dead 22:11 nore that's your problem 22:11 nore nodes positions exist at all times 22:11 sofar #define "your" 22:11 sofar "sofar's" ? 22:11 nore what I mean is 22:11 sofar the mod using the timer class? 22:12 nore what you want to do with the entity is using the reference again later 22:12 nore that could have problems even without persistent timers 22:12 nore the problem of the person writing the mod :p 22:12 nerzhul sofar, i'm re-adding the player files backend on #5475 22:12 nore so for that you have to take care anyway 22:12 rubenwardy https://gist.github.com/rubenwardy/46caffac4196b64d661f2ad3fbdac7a3 22:13 nerzhul i'm plug-in it like a database 22:13 nore however, for something that's a node position 22:13 sofar s/you/mod_writer/ 22:13 nore nothing can happen 22:13 nore yes 22:13 sofar well generally when 2 people talk, and one says "you" they mean the other person in the conversation 22:14 rubenwardy your solution means that a different function could be run after a shutdown. Whilst this may be useful, it'll cause more problems than it solves - what if they don't have a timer in the root scope? 22:14 nore rubenwardy: yes, that's what I want :) 22:14 rubenwardy see gist 22:15 rubenwardy updated gist to more match sofar's api 22:16 sofar can we please stop writing API's using minetest.register_nopnsense()? 22:17 rubenwardy I updated it 22:17 rubenwardy and also it's nice when APIs are consistent 22:17 sofar minetest.timer_interval? 22:17 rubenwardy the content is important, not the naming of functions 22:17 nore hmm, I think rubenwardy meant the_timer_name:run(...) 22:18 nore same thing :p 22:18 rubenwardy there you are, updated 22:18 nore you can remove the "mod:event" as well 22:19 rubenwardy updated again 22:19 sofar s/timer_type/t/ (it's not a "_type") 22:19 sofar lol 22:19 rubenwardy it is 22:19 rubenwardy well, it's not a language type 22:20 rubenwardy timer_def may be clearer 22:20 sofar you know what 22:20 sofar I think we can do that 22:20 rubenwardy the point is that it's bad to get conflicting function definitions after serialisation 22:20 sofar differently though 22:20 sofar here's now 22:21 sofar well no, hmm 22:21 sofar I need to think about it a bit 22:21 sofar but, not sure I like it yet 22:22 sofar what I think I can do 22:22 sofar is this 22:22 sofar instead of t:start() 22:22 sofar you can do 22:22 sofar local t_1 = t:start(param1, param2, param3) 22:23 sofar that makes a new timer instance 22:23 sofar or something like that 22:24 sofar see the big problem I have is that you've made 2 objects instead of one 22:24 sofar I'd ... just make 2 objects 22:24 nerzhul sofar, #5475 needs you attention when timer:start() 22:24 Jordach wooooooo 22:24 Jordach got my energy back to develop 22:27 sofar I can live with embedding/passing the data into the timer function, but you guys are making my OOP hurt with the request to make an object model that has 2 behaviors 22:27 sofar you guys need a TimerManager() class around Timer() 22:28 Jordach >OOP 22:28 Jordach the door is that-a-way 22:29 Jordach pack your shit 22:29 Jordach 22:29 sofar I'm absolutely not a fan of OOP 22:29 Jordach :D 22:29 Jordach :DDDDDD 22:29 sofar but lua does it nicely and elegantly that it's just stupid to not use it 22:30 Jordach lua at least makes writing C hell of a lot easier 22:30 Jordach (in the viewpoint of that lua is C but easier to write for another person) 22:32 sofar I would have loved it if lua was a curly brace language 22:32 sofar oh well 22:33 sofar rubenwardy: what's wrong with e.g. ItemStack() and Settings() ? 22:33 nore sofar: easy, just preprocess your files with s/{/begin/ and s/}/end/ :) 22:33 nore hmm, doesn't work for if/then though 22:33 sofar x = begin a = 5, c = 6, end 22:34 nore heh 22:34 rubenwardy those are fine as they have no side effects 22:34 nore ^ this is valid OCaml code btw :p 22:34 sofar ocaml? ocaml! 22:35 sofar that language should come with a warning: WRITTEN BY FRENCH PEOPLE, BEWARE 22:35 nore OCaml is nice :) 22:35 nore aaaand? 22:35 nore OCaml is a wonderful language 22:36 sofar [] 22:36 sofar there's a bar of soap 22:36 sofar go wash your mouth :) 22:36 * nore only sees an empty list 22:37 nerzhul OCaml is just a crappy language :p 22:37 nerzhul it's like Minitel vs Internet :D 22:38 Jordach sofar, nore is french ;) 22:38 nore print_endline ("OCaml is a " ^ (match talking_to with "sofar" | "nerzhul" -> "" | _ -> "wonderful ") ^ "programming language.") 22:38 nore :) 22:38 Jordach it explains alot 22:38 sofar Jordach: I'm well aware of most peoples' nationalities :) 22:38 nore heh 22:38 Jordach i forgot the space in a lot 22:39 Sokomine nore: such people-translaters could be of general use :) 22:39 nore Sokomine: :D 22:40 nore I don't see why some people say OCaml is awful though :'( 22:41 Jordach if i wanted a trash language i'd have learned java years ago 22:41 nore when you have to work on complicated datatypes (like when you are writing a compiler), it is just so much more adapted than C/C++/Lua/Python/Java/etc 22:41 nore and it has *pattern matching* 22:42 * nore 's eyes brighten when he sees a language provides pattern matching 22:43 Sokomine hmpf. i'll never catch up reading the forum! new posts appear faster than ic an read... 22:43 rubenwardy Haskell 22:44 rubenwardy That's what I'm using to write a compile atm :) 22:45 nore yeah, Haskell does this as well :) 22:45 nore I prefer OCaml but this I can concede it's just a matter of taste ^^ 22:45 nore Sokomine: I gave up reading the forum looooooong ago 22:45 nore even just reading the modding sections 22:47 Jordach Sokomine, forum.minetest.net 127.0.0.1 22:48 Jordach it's a mountain of shitposts at this point 22:48 Sokomine jordach: *g* need to set that for all these people that post while i'm still trying to read :) 22:49 * Jordach solves the sapling and plant growing issue entirely 22:49 Jordach core:omni_* 22:49 nore Jordach: how? 22:49 Jordach nore, each plant registry under register_decoration does not count the others ratio 22:50 Jordach i'm already using 0.000007 on trees in plains and it fails 22:50 Jordach even at that precision 22:50 nore what do you mean, it fails? 22:50 Jordach nore, other registered decorations do not count towards placing it 22:50 nore ah 22:50 nore that's bad :/ 22:50 Jordach it's why i'm using omni plants 22:50 Fixer *,..,* 22:50 Jordach they're randomised during on_gen 22:51 Fixer there is nice bot for jabber written in Ocaml 22:51 Fixer i used this doing bot fights 22:51 Fixer that was hilarious 22:51 * Jordach forgot about the DJ Hero soundtrack again 22:52 Jordach and blender broke again 22:52 Fixer Jordach: https://pbs.twimg.com/media/C9KPANZWsAEzJoT.jpg 22:52 Jordach fail as in total app crash 22:52 Fixer Jordach: https://pbs.twimg.com/media/C9KPAOAW0AE_QUt.jpg 22:55 Fixer long silence from Jordach 22:55 Jordach uwot 22:56 sofar Jordach: that just means you're using it correctly 22:57 Jordach sofar, only when minimised 23:00 Jordach Sokomine, farmed / grown lilac; http://i.imgur.com/T9YOwhL.png 23:00 Jordach mesh is the grown on a flower bed variant 23:00 Jordach wild ones are only the standard X shape 23:00 Jordach and that fits in a block, i measured 23:13 sofar 10 surfaces? 23:14 sofar so it makes 5 plants in a bunch, do I see that right? 23:14 Jordach well, flowers grown in a flowerbed produce 5 plants 23:14 Jordach considering you have to find them wild for the inital seed 23:15 Jordach see https://github.com/Jordach/Solar_Plains/issues/6#issuecomment-291122699 23:15 sofar no, I'm just talking about the visual 23:15 Jordach eys 23:16 sofar I see 10 surfaces, I'm assuming you're attempting to make "a bunch" of flowers in one obj 23:16 Jordach yeeeep 23:16 Jordach it'll look proper later on 23:16 sofar well it doesn't look unproper now 23:16 Jordach i mean in game 23:16 sofar I'm just ... 10 surfaces for what looks like a bunch of 5 plants 23:17 Jordach the engine doesn't do it for me, so 23:17 sofar take out the middle one and go for 8/4 ? 23:17 sofar could add it to meshoptions 23:17 Jordach lemme place a few in world 23:17 sofar the engine could do it 23:17 Jordach sofar, the corners are actually different ;) 23:17 Jordach they're not inline in a X shape 23:18 Jordach they're 1/16th off to the left relative to that rotation 23:18 sofar right, that can all go into meshoptions 23:18 Jordach so there's no visual z-fighting 23:18 sofar yes, of coure 23:18 sofar that can all go into meshoptions 23:18 Jordach sofar, and as usual, my mcore.options will support it 23:19 Jordach makes it far easier to work with those bits 23:19 sofar place_param2 = jordach_style_meshopt_value, 23:19 Jordach top kek 23:19 Jordach wait what 23:19 Jordach place_param2 23:19 * Jordach checks https://github.com/minetest/minetest/blob/master/doc/lua_api.txt 23:20 Jordach https://github.com/minetest/minetest/blob/master/doc/lua_api.txt#L3901 23:20 Jordach DAAAAAMN 23:20 sofar there's no client side prediction to that, though 23:20 sofar (that's a bug) 23:22 Jordach i'll ignore it for now 23:22 Jordach but will be ready to roll whenever it's ready 23:24 Sokomine any forum moderators present? looks like the lastest postings could get cleaned up... 23:24 sofar I have the powers 23:24 sofar but celeron55 doesn't want me to use them 23:24 Sokomine nore: there are sometimes very intresting topics 23:25 Sokomine Jordach: er. i've just handed my trees_lib over to sofar for minetest-mods. it does handle the saplings and node registration etc but isn't enitrely up to date with more recent changes like lbm 23:26 Sokomine jordach: very nice that lilac. please get it added as a flower. not only to bfd 23:26 Jordach Sokomine, you mean Solar Plains 23:27 Jordach i've started from nothing 23:27 Jordach and re-implemented everything over anew 23:28 Sokomine Jordach: oh? working on a new game now instead of bfd? hope you'll make it a little easier for players :-) 23:28 Sokomine btw, i could use some rape seed flowers....for farming. i'm still after those oil plants i'd love to have added to farming in mtg 23:29 Jordach can do 23:29 Sokomine that would be great :-) 23:29 Jordach Sokomine, it's a redesign of BFD but in a less inane way 23:30 Jordach and contains the next part of my design 23:31 Jordach Sokomine, instead of how VE-S does trading and such 23:31 Jordach i plan on something even fancier 23:32 Jordach i've got a few programming logic sketches 23:32 Jordach but other than that, it's a basic prototype 23:35 Sokomine trading? what does that have got to do with it? 23:35 Jordach multiplayer sucks without things to actually do 23:37 Jordach http://i.imgur.com/z7lO9Ok.png Sokomine, sofar 23:38 Sokomine ah yes, i remember you where planning something 23:38 Jordach considering my ability to optimise everything in MT Lua wise 23:38 Sokomine have you tried out brandonreeses adventuretest? the server with the most current version? it's pretty nicely done. i love that npc run around in the villages and even talk to a degree :-) 23:39 Jordach Sokomine, don't let me have a crack at that ;) 23:39 Jordach you know my talent for polish 23:39 Sokomine Jordach: i don't like the style of the grass. but the flower is very nice 23:39 Jordach Sokomine, always improvable 23:40 Sokomine it's probably too bright for my taste. and just a diffrent style. but i really like the flower 23:41 Jordach http://i.imgur.com/PoBviWd.png 23:41 Jordach sand is considerably better 23:41 Jordach and my ginger cat is giving me a cuddle 23:42 * Sokomine grabs the cat and runs away with it 23:42 Jordach he's a middle aged git 23:42 Jordach he only really loves me and prefers sitting on my lap to anyone elses 23:43 Sokomine :-)