Time Nick Message 03:10 [MatrxMT] !tell Safea Use SkinsDB with the custom skin feature, see the README here https://github.com/minetest-mods/skinsdb 12:43 MTDiscord Is there a comprehensive list of API that doesn't work after ServerStart, I'm trying to implement the strict mode that throws heirs if you try calling them 12:44 sfan5 not really 12:44 MTDiscord Also is there anything special about the core meta table that requires me to preserve it, or I guess I'm asking how do I preserve the original meta table so I don't override it when I set it if it's set by some other mod. 12:45 sfan5 the main thing is node/item registration, which has become stricter in 5.12 12:46 [MatrxMT] it's mostly stuff in core.registered_* 12:47 [MatrxMT] redundantcc: Have you heard of or used strictest? https://github.com/appgurueu/strictest/ 12:47 MTDiscord I also experience that call backs like on_mods_loaded/ on_generate don't fire if registered after server start. from context it feels like that's designed behavior, but that's implied rather than documented? 12:48 MTDiscord Blockhead256: no but I can take a look, I'm developing my own framework and this might be useful 12:48 [MatrxMT] on mods loaded just makes intuitive sense. on_generate not so much - I also wonder if you can change the functions in those tables later or not (probably not) 12:48 MTDiscord Wait does that constitute copying code, cause lars likes to use silly licenses 12:49 [MatrxMT] is MIT that troublesome? 12:49 MTDiscord i use cc0, which is incompatible 12:50 MTDiscord Blockhead256: it's mostly an issue with cdb not having dual licensing yet. But yeah if I end up copying code, or being accused of copying code it could be troublesome. 12:51 [MatrxMT] copyright law is so weird that I guess you might want to do independent research, feels like a waste though 12:52 MTDiscord It is, but by definition doing things the right way is usually harder. 13:02 repetitivestrain respecting https://github.com/luanti-org/luanti/pull/16224 and in particular https://github.com/luanti-org/luanti/pull/16224#issuecomment-2939588226 13:02 repetitivestrain kno10 is correct: Minecraft does ensure that each thread has exclusive access to neighboring chunks before performing feature placement there, and similar asynchronous decoration placement is already possible in lua with core.handle_async 13:03 repetitivestrain https://codeberg.org/mineclonia/mineclonia/src/commit/mineclonia_mapgen/mods/MAPGEN/mcl_levelgen/post_processing.lua 13:03 repetitivestrain e.g. in my reproduction of minecraft's level generator 13:04 repetitivestrain however, cave generation in minecraft is largely not produced by carvers but by noise functions, and carver caves don't require overgeneration, just for each thread also to execute carvers that originate in sufficiently close neighboring chunks (8) 13:05 repetitivestrain e.g. see here: https://codeberg.org/mineclonia/mineclonia/src/commit/mineclonia_mapgen/mods/MAPGEN/mcl_levelgen/carvers.lua 13:06 repetitivestrain only features (which are those decorations whose placement is contingent on neighboring terrain) must be deferred beyond proto-chunk generation 13:10 repetitivestrain What would benefit mineclonia at the moment would be an option to disable overgeneration by singlenode so that our map generator may reliably post-process MapBlocks at the edges of the generated area of the map without running the risk of those contents being overwritten 13:13 MTDiscord Thinking about it it would also be nice if the menu had first class support for alternate World Generations. Internally they would all be treated as "single node", but to the end user it would seem like installing a world generation mod actually added an option for World Generation... 13:14 MTDiscord Alternatively the mod could just declare it's underlying dependency on another world generation type, while still benefiting from the automatic menu improvements and selection process. 13:28 repetitivestrain redundantcc: what we could really use is the ability to define a custom main menu 13:28 repetitivestrain but the main menu lua API doesn't appear to be exposed to games 13:28 repetitivestrain or rather, world creation menu 13:30 [MatrxMT] it would be kind of cool to be able to put a [*Mapgen] section into your game's settingtypes.txt and have more options appear in the world creation menu 13:31 repetitivestrain Hmm, well what we could really use would be some means of defining the process of converting textual seeds to integers, and of presenting a choice between ordinary, large biomes, and perhaps amplified presets 13:32 [MatrxMT] are you trying to make it possible to use Minecraft's text to number algorithm so you can match their mapgen? 13:33 repetitivestrain Blockhead256: why, i've already matched their mapgen 13:33 repetitivestrain i only want the ability to define negative seeds and to derive integer seeds from md5 hashes of strings 13:33 [MatrxMT] oic 13:33 repetitivestrain https://codeberg.org/mineclonia/mineclonia/pulls/3419 13:33 repetitivestrain see 13:33 repetitivestrain see here* 13:33 repetitivestrain for a couple of screenshots 13:34 repetitivestrain https://codeberg.org/attachments/7986a0e2-8ebb-4293-accb-38cf79074d8f 13:35 [MatrxMT] ah, so your recent questions and requests about mapgen are not just hypothetical or early stage exploration 13:35 repetitivestrain No 13:36 repetitivestrain It's because I already have a largely functioning prototype that it would be gratifying to perfect 13:40 repetitivestrain Blockhead256: see e.g. https://ibb.co/ZZ7Zq2C https://ibb.co/SZCxwHB 13:42 repetitivestrain also it should be understood that i'm not attempting to guarantee identical feature placement with minecraft, since not even they guarantee consistency between minor versions or different data packs in this regard 13:42 repetitivestrain just terrain, biomes, and eventually structures 13:42 [MatrxMT] that's already fairly impressive 13:45 repetitivestrain Blockhead256: the real clincher is that it is 100% asynchronous, and slow though it is, it won't wedge a server for multiple seconds as the current on_generated structures and decorations do 13:46 repetitivestrain and as it doesn't rely on the engine's overgeneration, it functions perfectly on a 64 processor (core) SMP with dozens of mapgen threads 14:13 MTDiscord Excellent. 14:25 MTDiscord repetitivestrain: if I remember there is API for that that the Lua built-in uses, but it's either overwritten or inaccessible from me instance that is used to load mods. 14:26 MTDiscord Besides mods are loaded at world old time, and if I'm choosing between cdb starting to manage csms or custom main menus I would take csms every time. The main menu is prerogative of distributor of the client. 14:27 repetitivestrain redundantcc: surely it's not an unreasonable request to ask that games should be permitted to customize the world creation menu 14:28 [MatrxMT] that's kind of moot speaking of CSMs when the current CSM environment is only loaded when entering a world 14:29 [MatrxMT] what would the architecture of menu mods look like anyway? another subdir of ~/.minetest? 14:30 MTDiscord repetitivestrain: I don't think it's a crazy not to want, but aside from the security concern uploading arbitrary code in an unsandboxed main menu, which could be mitigated by only allowing the definition of form spec, there's also the issue of the sandbox not being instantiated until the world loads, the main menu doesn't actually provide any sandbox, which has been subjective very exploits and zero days over the years. 14:30 MTDiscord So I'm sure they're hesitant to avoid such API 14:30 MTDiscord the main menu is sandboxed now 14:31 MTDiscord > been subjective very exploits and zero days over the years. are you just making stuff up? 14:31 MTDiscord https://tenor.com/view/gordon-ramsay-finally-good-food-chef-gif-11616250 14:32 repetitivestrain redundantcc: what exploits? i've never heard of any 14:32 MTDiscord I can't look it up right now but there are a couple of past releases that I've seen in the security notes which explicitly patch is vulnerabilities to do with an unsigned boxed main menu 14:32 [MatrxMT] is there any reason to object to allowing menu conf mods with extra formspec data that gets fed into world.mt and made available to mods? 14:33 MTDiscord so yes, your making it up. https://github.com/luanti-org/luanti/security/advisories 14:34 repetitivestrain that instance where some MTG oil prospecting mod was backdoored (not with any downright malicious functionality, but with unfair gameplay perquisites) was the closest that minetest mods had ever approached to malware, afaik 14:34 MTDiscord Sorry I miss remembered, I was looking it up in the context of developing my own exploit https://github.com/luanti-org/luanti/security/advisories/GHSA-663q-pcjw-27cc 14:34 repetitivestrain So what is the obstacle to sandboxing the main menu? 14:35 MTDiscord repetitivestrain: your refering to hybriddogs pr to techages author 14:35 repetitivestrain Yes 14:35 MTDiscord it already is sandboxed 14:35 repetitivestrain and ultimately it comes down to scout's honor: mineclonia will not include malware, and neither will any world creation UIs it eventually bundles 14:36 [MatrxMT] contentdb will verify that 14:36 sfan5 the obstacle to allowing mods into the main menu is that the main menu also has the settings menu, and the settings menu also decides what gets written into "secure.trusted_mods" 14:36 MTDiscord blockhead...... sure, totally. also people dont have to just get stuff from cdb 14:37 repetitivestrain sfan5: is this prohibitively difficult to overcome? 14:37 repetitivestrain or just a matter of writing code and having it reviewed 14:38 sfan5 ask yourself how you would effectively sandbox code that lives in the same lua space from each other 14:38 sfan5 and if that's hard 14:38 MTDiscord wsor: They do if they'd like to install it on Android, since the modding directory is more difficult to get to on there 14:38 [MatrxMT] wsor4035: I know you don't look at every update or anything, but Mineclonia getting as big an update as that? surely... 14:38 MTDiscord there is zero security once something is past initial approval on cdb 14:39 [MatrxMT] like if a game is gonna get menu access on contentdb, in a hypothetical future of Luanti, then that would surely need another review 14:39 MTDiscord all one has to do is make a mod that passes, get it approved, and then next update fill it full of malware 🤷 14:39 MTDiscord sfan5: setfenv? 14:39 MTDiscord Is that really not enough security 14:40 [MatrxMT] well I'm suggesting that there should be for (a) adding trusted mod access and other hypothetical escalations 14:40 [MatrxMT] that 14:40 MTDiscord A man in lego city has had his main menu hacked 14:40 [MatrxMT] that would need a system that we don't have in place, either pushing a load onto approvers or needing good static analysis. Of course. 14:41 MTDiscord honestly for that you would need mods to define persmissions they want in mod.conf, which might not be a bad idea for other reasons 14:42 [MatrxMT] given the extensions with .cdb.json we've had, extensions to mod.conf just make complete sense 14:43 MTDiscord So you made it to the main menu, you are now the code in the main menu. What can you do? 14:44 [MatrxMT] im in ur menu exfiltratin all ur dataz 14:45 MTDiscord No but like seriously, isn't the lua instance pointer sandboxed? 14:58 repetitivestrain sfan5: can't main menu callbacks be run in a different lua_State? 15:35 MTDiscord repetitivestrain: yeah but instantiating a new one for every mod loaded that declares one could get expensive, also it could become an issue of load order if two of mods are loaded that both declare control over the main menu. I think it's best just to have a setting exclusive to games like you do with first and mods loaded already. 15:36 MTDiscord Also if you guys are making alterations too the config declarations, could you add a setting that prompts the user for Advanced Permissions when they add a mod that requires it so modders don't have to have a section on how it's done which isn't version agnostic because you guys keep changing the menu. 16:01 matteobin What is your favourite Minecraft-like game for Luanti? Yesterday I played a bit of Mineclonia and I was very impressed. I've never played Minecraft though. :D 16:03 matteobin Do you know if Mineclonia author accepts donations? 16:11 MTDiscord i dont? think so. or if they do should fill out the field on cdb 17:25 MTDiscord sfan5: is normalize_keycode undocumented depreciated or overwritten after the initialization step, and also does it do the thing that I think it does? 17:27 MTDiscord I need to get the key code from the settings configuration, and translate them into images that can be rendered... and I imagine oem3 isn't really intelligible for users, so I need to stabilize and translate to something that isn't keyboard specific 17:28 rubenwardy reminder https://content.luanti.org/donate/ 17:28 Krock you'd need the printable equivalent of the scancode (for version 5.12.0+). Main menu and Settings functions may change at any time. Only the mod API is kept stable. 17:28 rubenwardy !title 17:28 MinetestBot rubenwardy: Support Creators - ContentDB 17:29 Krock s/printable/equivalent keycap letter/ 17:29 Krock rubenwardy: why is the top package the top package? 17:30 Krock in the table there's no indicator 17:30 rubenwardy are you asking what top packages means? 17:30 rubenwardy it's the same as the homepage: https://content.luanti.org/help/top_packages/ 17:31 Krock rubenwardy: ah I see. yes, I mostly wondered about the criteria they're sorted by. 17:32 Krock I could not find that information on your donation page 17:33 Krock also hey rubenwardy. while I got you on the hook - might you have time to look into my question about the 9-slice drawing as asked in https://github.com/luanti-org/luanti/pull/16161#issuecomment-2923155840 ? 19:55 [MatrxMT] redundantcc: core.normalize_keycode is only intended for internal use - it "normalizes" the keycode using KeyPress(str).sym() 19:56 [MatrxMT] (which actually gives a scancode ... or a mouse button ...) 19:59 [MatrxMT] redundantcc: Also you might want to check whether you are building with SDL or not. The SDL device does not produce OEM keycodes 21:13 MTDiscord y5nw: thanks. 21:15 MTDiscord Is there any chance to get all of the experimental or internal functions documented, even just as a supplementary could change at any time document like CSM is right now. I'm doing some pretty advanced stuff, and it could also be useful for things like custom menus locked to a specific version/ custom client release. 21:16 MTDiscord Or even just someone nodding their head saying that it might be a good idea, so someone else can work on it without feeling like they might be wasting their time on an unacceptable/unpublishable feature 21:17 [MatrxMT] Given (at least) my plans to work on the input handler I would prefer to not document core.normalize_keycode as it will likely break in the short term 21:20 [MatrxMT] Also I'm a bit confused about your usecase. You want to translate the keycode setting into "images that can be rendered" but these also should not be "keyboard specific"? These sound like conflicting goals. 21:27 MTDiscord y5nw: Okay so two things. 1: key binds are stored in a settings file interpretable by the engine, since that's its primary use case and function. 2: I have images, I have file reader for the settings fike, I need a way to get a string from the file reader that matches one of the images as a finite subset of possibilities. 3: I am a being of chaos and disorder, and I do not always fully plan things out. 4: I have no idea which function 21:27 MTDiscord I need, because all of the ones that I might need aren't documented and half of them aren't clear based on the name while the other half require specific arguments that I need to track down. 21:28 MTDiscord In short: hash table stored in a json file giving information on potential names descriptions and arguments, would be more useful than nothing I have right now. 21:29 MTDiscord So I was just wondering if I throw a small script to Auto generate something, would someone be willing to accept and populate the resulting file with descriptions and a list of potential arguments * warning do you not use in flux, version specific galore Etc..* 21:29 MTDiscord Like how client mods do >  WARNING: The client API is currently unstable, and may break/change without warning.  21:30 MTDiscord It would literally just be an auto-generated Json file containing a dump of current and past functions with a reference descriptions of what those functions do or used to do, no clean up no maintenance just a reference sheet that people can use if they want to dig out parts of the engine that they need to change. 21:32 [MatrxMT] redundantcc: That function gives a scancode so you need a function that exposes KeyPress::name() instead. Also SDL does not guarantee that every key has a keycode 21:32 [MatrxMT] (From my testing it seems like SDL does not report keycodes for dead keys, at least on Linux/X11) 21:33 MTDiscord Sure but in the use case a key that isn't accepted by the system won't end up being stored in the systems configuration file, so while it is negative possibilities manually adding your settings file to be corrupt isn't supported. 21:35 MTDiscord Which feels obvious, but if you're key bind is modified to be something ridiculous the engine should spit out an error or at least rectify it when it goes to save the file again which I should be able to cleanly ignore. But I can't have a default case unless I have a finite list of every key... 21:35 [MatrxMT] SDL does report scancodes though and those are the ones that end up being saved into minetest.conf. The normalize_keycode function is primarily for converting old keycodes into scancodes 21:36 MTDiscord But are there any other functions I should look at, like that's the thing without a documented list I'm literally shooting in the dark hoping I hit the side of a bar in one of the built-in files. 21:36 MTDiscord *barn 21:37 [MatrxMT] Like I said, KeyPress::name() from C++ (which you can expose to Lua) is the best you can have at the moment. Just be warned that it is not guaranteed to work _well_ if the key does not have a keycode (it then fallbacks to Luanti's internal scancode-based name) 21:38 [MatrxMT] Otherwise you can use SDL's own API, which is documented quite well on this matter at least 21:39 MTDiscord All right sure I'll take a look, but I kind of wanted to have the code written by someone who actually knows how to write maintainable code... 21:41 [MatrxMT] A list won't help if the issue is in the lack of understanding of the key configuration system 21:44 [MatrxMT] Also at the moment I personally do not support the idea of using textures to show keys. Currently you would have to generate a lot of textures for different layouts/languages and it is hard to get them to work well across different games. 21:44 [MatrxMT] s/work well/look well/ 21:50 rubenwardy I forget the issue number but there's one about allowing mods to show binding names or images for informational purposes 21:50 rubenwardy Like "sneak" -> Shift 21:51 [MatrxMT] I know, but names as _strings_ are easier to implement than _textures_ 21:51 rubenwardy from a name you can provide textures 21:51 rubenwardy see kenney's asset pack for that 21:52 rubenwardy https://kenney.nl/assets/input-prompts 21:52 rubenwardy this is something for games though 21:53 MTDiscord austria 21:54 [MatrxMT] You would need more to cover different keyboard layouts, and you need to a way to showing different textures for certain keycaps (ctrl/alt/ins) based on the language 21:55 [MatrxMT] (btw the issue is #14788) 21:55 ShadowBot https://github.com/luanti-org/luanti/issues/14788 -- Human-readable keybind names/interpolation for text. 22:17 MTDiscord Also as a related note, can we get a standardized cross context ( singleplayer+CSM / multiplayer sscsm) way to read settings from a given clients settings file, if for security reasons it's read only access or sent/updated only at the beginning of the client connection that's fine. I just hate limiting all the cool stuff with a "we only support singleplayer" tag. 22:28 MTDiscord Just going to throw this here, since it's the icons I plan on using and they're also under cc0. https://thoseawesomeguys.com/prompts/ 22:29 MTDiscord Oh wow that did not expand like I thought it would, huh.. 22:32 MTDiscord How did you make it NOT do that? 22:32 MTDiscord I think links always expand when I post them... 22:33 MTDiscord It's a passive, in that things will passively break around me... it's a perk for maxing out the red team class, trust me if I could turn it off I would. 22:35 MTDiscord ( ͡° ͜ʖ ͡°) 22:35 MTDiscord Still better than the blue team one, that one makes things more likely to break around you and less likely to break otherwise. Great for having an engineer there to fix it, terrible if you rather things not be your problem. 22:36 MTDiscord But those sound exactly the same... 22:36 MTDiscord In the first one, things would also be less likely to break if you're not around... 22:38 MTDiscord Trust me they're different, one is designed for finding vulnerabilities and the other is designed around uptime... or there's no such thing as red and blue and it was purple team the entire time... really it can go either way. 22:39 MTDiscord I prefer to believe that I didn't waste my entire career making the uptime counter go up only for it to crash 4.2 seconds and completely reset my progress, because knowing that I wasted my entire life making a number go up makes me sad. 22:39 MTDiscord In the grand scheme of things, it probably doesn't matter that much, but what do you mean by "red team" and "blue team"? You're probably not talking about tf2. 22:40 MTDiscord Since you mentioned that, I just want to know... 22:41 MTDiscord Uh, well... sure yeah. tf2, red and blue has never been used in any other context. 22:42 MTDiscord https://tenor.com/view/rvb-red-vs-blue-red-vs-blue-red-team-red-team-rvb-red-team-gif-23514753 22:42 MTDiscord So it is a video game thing after all? I was thinking it was a hacker thing... 22:45 MTDiscord No but in seriousness, red and blue refers to the attacking and defending team of an asymmetrical game of capture the flag where hackers try to embarrass white hats by creating a security report on one monitor and playing solitaire on another. Purple team is more of a business terminology used for implying that asymmetric jobs of defending every single possible point of entry in your infrastructure, and finding esoteric loopholes or edge 22:45 MTDiscord cases in the white hats logic and reasoning when designing that infrastructure is somehow the same job. 22:45 MTDiscord So it is a hacker thing after all. 22:45 MTDiscord That's kind of funny. 22:45 MTDiscord In a sense 23:39 MTDiscord Let's go, it's almost here! 23:39 MTDiscord https://cdn.discordapp.com/attachments/749727888659447960/1379967886327545938/20250604_183125.png?ex=68422abe&is=6840d93e&hm=988fd6cb63e6498c87637df768dc5c1a8623658ae904f2787592d02b7233b3b0& 23:44 MTDiscord Excellent.