Time Nick Message 05:41 Extex Is there a way to make a decoration place_on stone but like an ore have a wherein of air 05:42 Extex No wait that's backwards 05:42 Extex place on air but in stone 05:42 Extex So it'll replace the ceilings of caves 11:54 sfan5 couldn't you make that work with y offsets? 13:44 erlehmann could the “find_nodes_in_area(): area volume exceeds allowed value of 4096000” here be an engine bug? https://git.minetest.land/Mineclonia/Mineclonia/issues/165 13:45 erlehmann local fpos, num = minetest.find_nodes_in_area( areamin, areamax, {"mcl_fire:fire", "mcl_fire:eternal_fire"} ) 13:45 erlehmann > the distance between areamin and areamax is supposed to be constant 14:02 sfan5 "supposed to" but what are the actual values? 14:04 erlehmann let me look up the code 14:07 erlehmann sfan5, here https://git.minetest.land/Mineclonia/Mineclonia/src/branch/master/mods/ITEMS/mcl_fire/init.lua#L310 14:08 erlehmann local ppos = player:get_pos() → local areamin = vector.subtract(ppos, radius) → local areamax = vector.add(ppos, radius) 14:08 erlehmann local radius = 8 -- Flame node search radius around player 14:08 erlehmann so 14:08 erlehmann sfan5, any way this can fail? 14:10 sfan5 shouldn't you of all people know? 14:10 sfan5 Inf, NaN, underflow/overflow 14:12 erlehmann sfan5 i am asking you to avoid poking the wrong thing here 14:12 erlehmann the next idea is obv trying that calculation for all positions 14:12 erlehmann and noticing when it fails 14:13 sfan5 the next idea should be to reproduce the bug and log what the API is actually called with 14:14 erlehmann speaking of which, is it possible to get backtraces that actually contain the values? 14:19 MTDiscord Well, I wouldn't expect MT to be able to properly deal with areas extending beyond world borders 14:19 MTDiscord Most probably somebody decided to use s16 for coordinates and it's overflowing 14:20 MTDiscord I recommend just clamping coordinates by world borders 14:23 erlehmann world borders, but not mapgen borders 14:23 erlehmann i hope 14:24 erlehmann (the latter breaks a bunch of stuff if you enforce no interaction outside mapgen bounds) 14:24 erlehmann luatic i still think the correct response is to figure out if the volume calculation is even correct 15:49 MTDiscord The volume calculation is incorrect 15:49 erlehmann luatic elaborate 15:55 MTDiscord 2,147,483,647 is the max value of s32 15:55 MTDiscord now calculate the cube root of that 15:55 MTDiscord 1291^3 will already overflow 15:56 MTDiscord And that's a mere couple gigs of area 15:57 MTDiscord getVolume() is used to perform bounds check, but actually, the input should be bound-checked first 15:57 MTDiscord (or just slap u64 on it and call it a day: s16^3 will always fit in there) 15:59 MTDiscord I really don't get why larger number types are used so sparsely. In Lua f64 is used all the time. Performance is still fine. 15:59 erlehmann look we have a case here where the difference is supposed to be 8 16:00 erlehmann i mean 16:00 erlehmann 8^3 should not be big 16:01 MTDiscord And it isn't. But as I said, the I'm pretty sure it's the f64 (Lua number) to s16 (MT world coordinate) cast where things go wrong: It will fail at world borders, even if you only add 8. 16:02 MTDiscord Minetest should be checking whether the number fits in the s16 range 16:06 erlehmann luatic fail in what way though? UB? 16:06 MTDiscord ¯_(ツ)_/¯ 16:07 erlehmann i am making a test case for your outrageous statement! :D 16:07 MTDiscord I'd love to be proven wrong, but I'm fairly sure MT is using v3s16 for node positions everywhere. 16:30 independent56 Is there a way to do something like mod_name:* to select all nodes in a mod? I need to disable all nodes fromthe creative inventory belonging toa specific mod. 16:36 erlehmann ok so i got it 16:36 erlehmann luatic is probably correct 16:36 erlehmann volume calculation is incorrect 16:36 erlehmann clamping coordinates by world borders is not the correct solution though 16:38 erlehmann (i think that will still give incorrect results for some stuff) 16:42 calcul0n__ independent56, i think the only way is to traverse minetest.registered_nodes and select those you want with a regex or something 16:42 independent56 Oh... :-( 16:42 independent56 But also yay regex! 16:45 independent56 Can i have that lua code snippet i lost that removes items fromcreative, as a simple fuunction which takes an itemstring s input? 16:53 calcul0n__ you need minetest.override_item to add the not_in_creative_inventory group 16:53 calcul0n__ (iirc) 16:53 independent56 Can you please write a tiny function to remove an item? I can expand it later. 16:54 calcul0n__ something like def=registered_nodes[name] def.groups["not_in_creative_inventory"]=1 override_item(name, def) 16:54 calcul0n__ not sure it's a good idea to modify the def table in place though 16:54 sfan5 http://sprunge.us/Cttnst 16:55 independent56 Thnk you 16:57 independent56 Soon my server will be creative 17:02 independent56 What does creative mode actually do? Does it set a default priv to be creative? How do i turn on creative mode, whilst ensuring players play in survival? 17:02 erlehmann luatic you are appgurueu right? 17:06 calcul0n__ independent56, yes it registers a creative priv and a couple of helper functions 17:06 independent56 Ah, how do i disable the priv from a minetest.conf/world.mt point of view? 17:06 calcul0n__ i guess what you want is don't enable creative in your game and grant the priv to who you want 17:07 independent56 That's what i want, but i just wanted to see if the reverse is possible - creative sith survival privs. 17:07 calcul0n__ i don't think so, there's no such priv 17:08 independent56 dammit 17:12 erlehmann appguru, https://github.com/minetest/minetest/issues/11769 17:14 independent56 How can i make dark places brighter globally? I want caves to be navigable without torches, and night to be less dark. 17:14 Ingar raytracing! 17:14 Ingar *ducks* 17:15 erlehmann independent56 adjust your gamma value 17:16 independent56 Oooh, where? server or client? 17:16 erlehmann it is a client setting 17:16 erlehmann i have a better idea though 17:17 independent56 https://imgur.com/a/cypUCMG Anyways, here is a view of the bottom of my world without stone 17:17 independent56 Just shows how much ore there is 17:21 erlehmann independent56 go to src/nodedef.cpp and search for "light_node = 0", change it to 6 17:21 erlehmann instant then recompile 17:21 independent56 ahh, cool 17:21 independent56 If only i was using the source 17:21 independent56 i use snap 17:23 erlehmann use the source 17:24 erlehmann luatic appguru can we overwrite find_nodes_in_area with our own version that contains boundary checks easily? 17:36 appguru erlehmann: of course we can 18:34 independent56 Do edit blocks take area protection into account when doing operations? 18:39 independent56 What happens when the owner of a big server dies? who takes the job of administrating the server? family? moderators? 18:42 sfan5 that depends on the precautions they have taken 18:46 independent56 Hmm. 18:46 MTDiscord i mean, if you want to watch irl action to a degree, see what happens to VE mods and server 18:46 independent56 My server will likely fade to obscurity, leaving a ghost of me in terms of the 56i-mtserver, until my server dies and my online ghost dies. 18:47 Pexin "big" can mean db size, territory instantiated, number of registered users, number of typical daily users, cost of hosting 18:47 MTDiscord *servers 18:47 independent56 I mean amount of users a day and db size 18:48 independent56 I need to ensure proper precaution publicly avilable on the wiki, something like giving the server to a trusted moderator by parcel,for them to take care of 18:48 MTDiscord i mean, you could always do what nodecore does/crafter did, is upload a db of the world public for anyone, if the server ever goes down people can continue it 18:48 independent56 But if only i had players. 18:48 independent56 Cool! 18:48 independent56 i need to do that 18:49 independent56 maybe i do "--world /var/www/html/world" :p 18:49 independent56 (default apache htdocs directory) 18:49 MTDiscord can use stuff like rsync so people running mirrors or updating a local copy dont have to download the whole thing all the time, also preserving bandwidth for those on limited connections 18:50 independent56 "wget -r 56i.duckdns.org/worlds/56i-mtserver" or something 18:51 sfan5 you wouldn't want to expose an unsanitized copy because that'd also leak your users passwords 18:51 sfan5 and IP addresses or other data depending on the mods you use 18:52 independent56 ahh, dammit. Maybe i just vet each file and use cp in a shell script and copy them every week using crontab 18:53 independent56 http://56i.duckdns.org/dokuwiki/doku.php/guidelines/creative#creative Here, creative mode on my server for those that want it. Thoughts? 19:00 MTDiscord erlehmann: yes I am 19:04 independent56 Using --config, how can i set one global minetest.mt file and then override other settings through another .mt file, such that duplicate settings are overriden, but singular are not default. 19:04 independent56 ? 19:20 erlehmann appguru / luatic how can i overwrite minetest.find_nodes_in_area in mineclonia for *every* mod? https://git.minetest.land/Mineclonia/Mineclonia/issues/165 19:29 MTDiscord by just redefining it? 19:29 MTDiscord nothing can call it at load time 19:29 MTDiscord its a run time function 19:29 erlehmann Jonathon the question is, how to make sure that the redefinition happens in all mods if i overwrite it in one mod. just overwrite it at load time and that's it? 19:30 MTDiscord minetest shares one global lua enviroment.... 19:30 erlehmann ok 19:30 erlehmann btw i can call it at load time 19:30 erlehmann it just doesn't do anything 19:30 MTDiscord well duh 19:31 erlehmann now the second question, *is this a good idea* ? 19:31 MTDiscord see minetest.is_creative, minetest.is_protected, etc function redefinitions 19:31 MTDiscord third question, is questions one and two dumb questions? yes 19:32 sfan5 it is not a good idea evidenced by the fact that your implementation contains a bug which I bet neither you or appguru spotted 19:33 appguru who said I was supposed to look for bugs? 19:34 appguru I'm mostly concerned with redundant code, lol 19:34 appguru also, what do you mean by "bug"? would the non-overridden function have handled the case properly? 19:34 sfan5 yes 19:34 MTDiscord the grouped param was forgotten 19:34 sfan5 indeed 19:34 MTDiscord erlehmann: add ... vararg 19:37 MTDiscord sfan5: you forgot find_nodes_with_meta? 19:37 sfan5 that doesn't have that 409000 node limit does it 19:37 sfan5 but I can apply the fix there too 19:38 MTDiscord indeed it doesn't - why? 19:40 sfan5 I checked and the answer is that findNodesWithMetadata is efficient that not limiting it may be okay 19:40 sfan5 efficient enough* 20:00 erlehmann oh no 20:00 erlehmann why 31000 20:00 erlehmann seriously 20:03 sfan5 it is documented and treated as the absolute working limit 20:04 erlehmann sfan5 for the MAPGEN 20:04 erlehmann seriously, this is wrong handling of boundary conditions 20:04 erlehmann why not clamp it to the s16? 20:05 erlehmann if you arbitrarily introduce some new boundaries, you *will* have some weird bugs at them 20:09 sfan5 this is not a new boundary 20:09 sfan5 and speaking of mapgen: if a block can never be generated beyond that limit, how can it exist= 20:09 sfan5 s/=/?/ 20:10 erlehmann hihi 20:11 erlehmann you can build a flying machine to fly past the mapgen territory, for once 20:11 Pexin manually editing the world db outside of the game? 20:11 erlehmann it is possible with vanilla client to actually place blocks past the mapgen boundaries of 30927 or so, but i am not sure how far out i can *place* them 20:11 sfan5 erlehmann: beyond 31008 (rounding due to mapblock), no 20:11 erlehmann ah! 20:12 erlehmann sfan5 i still think that treating 31008 as the limit may mask other bugs if you do not get as close to the s16 bounds as possible 20:13 erlehmann what i am saying is, getting to the boundaries is dangerous, so do it exactly 20:13 erlehmann you seem to just want to stay away from them 20:13 sfan5 / I really don't want to make every algorithm to check if it's going near 20:13 sfan5 / the limit or not, so this is lower. 20:13 sfan5 masking off-by-one errors is its stated purpose 20:14 erlehmann i *do* actuall want every algorithm to behave well there 20:14 Pexin for a project like MT, limiting the opportunity for such errors is probably preferable than to spend the effort to make the engine airtight 20:15 erlehmann well, the problem here is that whatever the boundary is, you need to make *sure* there can't be anything 20:15 erlehmann otherwise, a simple sanity check as “place a big structure, then try to count how much you placed” may fail 20:15 erlehmann at the boundaries 20:17 erlehmann sfan5 the problem with masking the other bugs is that they may still be exploitable if they exist 20:19 erlehmann Pexin “let's arbitrarily fix this to an eyeballed value” is more trouble than actually adhering as close as possible to the underlying data type. 20:26 erlehmann sfan5 i will now test your assertion that there can not be blocks past MAX_MAP_GENERATION_LIMIT. i hope you are right. 20:27 erlehmann (i set minetest up so that it is likely to crash if anything exists past the limit) 20:44 erlehmann I am in the process of testing it, the actual limit of where blocks can exist without crashing the game seems to be *at least* up to x=32687. 20:46 independent56 I have just invented the hobby of minetest abstract photography 20:46 independent56 https://imgur.com/a/NNZZXef 20:46 independent56 Using two players 20:49 independent56 Survival alt and the admin 20:53 definitelya noice 20:57 independent56 This is the hobby i made 20:59 independent56 Screenshots wrre always made for documentation, never for art. 20:59 independent56 "Look at what i built" "this is the bug", and not "Think about how this piece repersents life" 21:00 definitelya or "this is the bug I built" :) 21:04 independent56 XD 21:23 cheapie Hmm, Dreambuilder in 1GiB of RAM is... "interesting" :P 22:05 independent56 https://pastebin.com/LvmahrTa How do i fix this? This is where my sound problems comefrom. 22:11 erlehmann sfan5 biomes are definitely wonky past 31000 https://mister-muffin.de/p/gO5Q.png 22:14 independent56 it's 23:14 in their timezone 22:14 independent56 Just a reminder 22:14 sfan5 it is 23:14 in erlehmann's timezone too 22:15 sfan5 independent56: which distro are you using? (proxy question for "how is sounds supposed to work on yours?") 22:15 independent56 I'm using Ubuntu, but i dont understand what level you're asking from the proxy question? Hardware? OS? Software? 22:16 independent56 And i had a 1/24 chance of Erhlmann being in the same timezone as any arbituary user of IRC 22:16 sfan5 if you are using ubuntu you should have pulseaudio running 22:16 sfan5 if not, then that's what you need to fix 22:17 independent56 Ahh 22:17 independent56 It's running, ps -aux grep pulseaudio said so. 22:20 Pexin independent56: frequently, when my screen goes to sleep with MT running, when I come back the console is full of 'out of memory' messages, and there's no sound. opening pavucontrol kicks it in the head or whatever and there's a burst of apparently queued sound, then it works 22:20 independent56 This error happens whenever i start minest. 22:21 Pexin pressy 'm' ingame? 22:21 Pexin pressy.. 22:21 independent56 "Sound muted" "sound unumuted" (the latter message is a lie" 22:22 Pexin does pavucontrol show MT as a source? 22:23 independent56 Even under allstreams, it just shows Clementine and System Sounds. 22:24 sfan5 minetest not being able to open sound might be related to it running under snap 22:24 Pexin i dunno what to say except try removing alsa, and hope you're not already fubar 22:25 Pexin fixing linux sound issues, in my experience, is the dark tales of netherhorror land 22:25 independent56 What does "fubar" mean? 22:25 sfan5 you can't remove alsa, it's the kernel API 22:25 independent56 How do i run outside of snap? 22:25 Pexin sfan5: maybe that's why I had horrorterrorland experiences 22:26 sfan5 erlehmann: the world ends at 30928 for me, I don't see the issue 22:28 erlehmann sfan5 out of sight, out of mind! 22:28 erlehmann seriously, re-using the mapgen limit is wrong. use the actual values where it misbehaves. 22:29 erlehmann i don't want this function behave weirdly inside mapgen 22:30 sfan5 the function works correctly for all areas a mapgen could generate 22:30 erlehmann why does no one ever believe me? 22:31 erlehmann i pointed out the exact boundary 22:32 sfan5 it is not an issue of belief 22:32 sfan5 the Minetest world is specified and advertised as going until 31000 22:32 erlehmann well, having the mapgen stop at 31000 avoids a dozen buffer overflows, so there's that. 22:32 sfan5 but you want an API function to work beyond that for dubious reasons 22:32 erlehmann yeah but i rather have functions misbehave FAR FAR from the visible world 22:33 sfan5 and there we have it again: an unfounded claim of security issues 22:33 sfan5 seriously I should put you on my ignore list 22:33 sfan5 talking to you is a waste of time 22:33 sfan5 in all regards 22:33 erlehmann ok consider what would happen if you set it at 30928 22:34 erlehmann or try it out 22:34 erlehmann it's immediately obvious why the function should prob stop working far *outside* of anything ever touched by mapgen 22:34 erlehmann whatever 22:36 erlehmann it's more reliability than security issues btw 22:37 sfan5 curious how something that does not change the observable behaviour of a function affects reliability (or anything at all) 22:38 erlehmann well mineclonia crashed bc some clown managed to figure out how to invoke that function far out of bounds 22:38 erlehmann and then the volume calculation was off 22:38 erlehmann i have no idea *how* they put anything there 22:38 erlehmann but if i can't detect it via mod, i def can not remove it automatically 22:39 sfan5 you're saying they placed a node there? 22:39 erlehmann i think they manage to place a fire node there 22:39 erlehmann i have to figure it out 22:40 sfan5 before you claim anything please do 22:40 sfan5 because this just makes it look like you don't even know what your own game does 22:41 erlehmann do you remember the bug report where someone managed to put a mesecons flying machine far out of bounds to crash the server? 22:41 erlehmann i'll try to figure it out 22:43 erlehmann sfan5, would you – ignoring the exact value of boundaries – look at the code i want to put in mineclonia to prevent this? i think it would be good to have a good drop-in example for out-of-bounds clamping for other games. 22:44 erlehmann (catlandia has a much smaller fix that is arguably wrong) 22:46 MTDiscord im curious how you even know what exactly there fix is 22:47 sfan5 I think it's better if games don't override engine methods to fix things 22:47 sfan5 in this case the engine should do the clamping (my PR), in other cases clamping would be wrong 22:48 erlehmann Jonathon cora told me about it 22:48 erlehmann i thought she wrote it? 22:48 erlehmann maybe i misunderstood 22:48 MTDiscord sfan5: for the sake of backwards compat perhaps they should, but only if less than 5.5 (assuming a fix is merged) 22:49 MTDiscord erlehmann: yeah, you did 22:49 erlehmann sfan5 i agree that the engine should do it. the problem is that it will be a long time until 5.5 is out or even used. 22:49 erlehmann Jonathon i am sorry then 22:49 erlehmann for spewing bullshit 22:49 sfan5 erlehmann: that is of course a good reason to do it anyway 22:49 erlehmann Jonathon sfan5 how would i detect that the function is broken though, in a game? 22:50 erlehmann i mean i can't just call it with values and figure out if it crashes 22:50 sfan5 you could actually but I wouldn't suggest it 22:50 sfan5 I'd leave the workaround in the code until you're dropping support for 5.4 22:50 erlehmann oh i thought that was unrecoverable 22:50 erlehmann ok! 22:51 erlehmann will do, whatever we agree on (there is a load of workarounds being brainstormed rn, mine is only one) 22:52 MTDiscord minetest.get_version() should get you the server version 22:52 MTDiscord see lua_api.txt for how trust worthy it is tho 22:59 independent56 Will the RSPCA take away the mobs mod from me? https://imgur.com/a/Z7qOuda 23:07 erlehmann sfan5 good that you called for evidence. a) cora managed to crash the server without actually placing fire out of bounds. b) i managed to place fire beyond x=31000 and not crash the server. c) the idea of cleanup code that scans for stuff out of bounds and gets rid of it is not hypothetical. we have that already for entities. 23:07 erlehmann also the fire code that crashed in mineclonia is running even when there is no fire 23:07 erlehmann because this just makes it look like you don't even know what your own game does 23:07 erlehmann arguably true! 23:08 erlehmann cora went to -65k though 23:08 erlehmann which is obv out of s16 23:12 erlehmann LMAO i think i know how to detect it. if there is any position on the map where i can place blocks, but not find them, the engine is lying. 23:25 MTDiscord Well, can you place blocks beyond 31k? 23:33 erlehmann it is, in fact, possible to have a world that ends at x=31007 in vanilla client. 23:33 erlehmann i don't recommend it though 23:34 erlehmann biomegen stops at 31000 23:34 erlehmann and it is very crashy (basically, a bunch of functions in mods did the “lets stop at 31000” thing before, which is why i know it is trouble) 23:50 erlehmann luatic, oh, to answer your question: yes, i can place blocks at x=31001 23:51 erlehmann and up to x=31007 23:51 erlehmann i don't really want to, the reason being the aforementioned crashes 23:51 erlehmann but i do know that lag machines are made out of nodes 23:51 erlehmann uh 23:54 erlehmann oh LOL 23:54 erlehmann i may have found another signed integer overflow