Time Nick Message 03:00 MTDiscord hurm, yep removing the overgeneration in the negative Y direction has the expected effect of reducing the layer of stone at boundaries, but silly enough, only most of a mapchunk in my system. I.e. still generating like 5% wrong with the overgeneration in the Y+ direction.... Why do we need overgeneration again? 03:07 MTDiscord anyways, leaving this note for myself: looks like the culprit is overgeneration from the chunk below the also generating chunk from above. The chunk below is for some reason not applying biome to that overgenerated layer, and it is writing second, such that it's stone is overwriting the correct top node from the chunk above. So next spot to look is to understand how to get the chunk below to apply biome to overgenerated terrain too, if 03:07 MTDiscord not already. 03:08 MTDiscord the reason this doesn't happen in normal use, is if the node is not content_ignore, we skip it during terrain generation (aka stone). But it was content_ignore at the time the chunk received it's voxelmanip. 03:14 MTDiscord Also this is for v7, but I wonder/bet others have the exact same issue 04:05 MTDiscord treee 08:25 matteobin Good morning, thank you for making such a great game! I would like to write a script to rename a player's user name on a running Luanti server. Where all the player data and metadata is stored? Is it enough to just change the authentication and player database data or do I need to check all database tables for that player name? https://docs.luanti.org/for-server-hosts/database-backends/ 08:35 [MatrxMT] I actually wonder where do we save players' metadata 08:42 matteobin [MatrxMT]: Exactly what do you mean with players' metadata? 09:03 [MatrxMT] matteobin: What we call PlayerMetaRef in docs/lua_api.md 09:31 matteobin Oh, sorry, I didn't get it was you Zughy! Hello my friend. MatrxMT is the Matrix bridge user, not an actual IRC user. Forgive my naivety. 09:39 sfan5 the player metadata is in the relevant database 09:39 sfan5 the more practical problem is that node metadata often saves the player name e.g. to handle ownership/protection 09:41 sfan5 so to implement your idea you'd need the script to look through the entire map data and rewrite any mentions of the player name while being aware how exactly the concrete mods in use store the ownership info 10:03 matteobin sfan5: So I need to browse the various table structures and replace the old name with the new name. Seems reasonable. It would be better if mods and node metadata used a numeric ID or a UUID to identify the player, but it shouldn't be too hard. 10:05 sfan5 no. it is hard 10:05 sfan5 the map database is not "various table structures" but a key-value store with binary blobs containing encoded map data 10:06 matteobin Oh... that's unfortunate. 10:06 matteobin Sorry, I didn't want to read arrogant. 10:08 matteobin However that blob structure is documented. Right? 10:16 sfan5 sure 10:17 sfan5 https://github.com/luanti-org/luanti/blob/master/doc/world_format.md 10:17 sfan5 what isn't documented (as there is no standard) is how each mod decides to store player ownership 10:27 matteobin sfan5: mod player ownership is stored in the same binary blob? 10:38 MTDiscord could we make decoration placement deterministic then? 10:39 MTDiscord oh, this is in response to the conversation about why we need overgeneration 10:49 MTDiscord Yes 10:54 sfan5 matteobin: yes 11:00 matteobin sfan5: Uhm... seems very hard then. :D 12:58 MTDiscord You could do it in two passes: Ask the database for every place where that namestring is mentioned, then investigate the data and see whether there are false positives and rule them out in your script. 12:59 sfan5 that doesn't work either, because the blob data is compressed 13:09 matteobin :( 13:13 sfan5 player uuids has been put on the list of things to do for Luanti 6.0 especially because such renames are essentially infeasible right now 13:14 matteobin Got it. Thank you. 13:59 MTDiscord Ofc you need to uncompress it - every single mapblock - then search through it. 14:01 MTDiscord One of our devs has a script which can at least find blocknames, we're using it to find where I messed up mapgen. 14:08 rubenwardy You could modify the player, auth, and meta dbs quite easily. The map is harder - but you could have an alias / renaming system that updates stuff as it appears and is loaded 14:08 rubenwardy this would mean the old name couldn't be registered by another user, which is probably desirable anyway 14:31 matteobin rubenwardy: Thanks for the input. I'll probably wait for player UUIDs to be implemented. It seems more sensible. I don't know if making old names unavailable for registration is desirable. I'm thinking about inactive accounts. There should be a way to delete inactive accounts, to avoid wasting an inactive user name. 14:32 rubenwardy it might be a few years 14:35 matteobin To 6.0? I can wait. I need this feature, but it's more of a long-term need. I'm in no hurry. 14:37 matteobin In the meantime I can donate to the project. :D 16:18 MTDiscord This is the kind of community member I appreciate!! For the record, I'm in a similar boat haha. 16:22 matteobin exe_virus: Thank you. Being able to change user name without losing your data is a nice feature, quite useful, especially for public community servers. However Luanti is already a wonderful game as it is. No need to put extra pressure. :) 18:37 MTDiscord The current workaround for this is to use mods to make a player's "display name" different from their username, e.g. in custon nametags, chat messages, etc. Hecks was doing something like this for his server where player chat would be attributed to your character name, not your username, and usernames were treated as "sensitive/internal" data and avoided leaking to other users. Something like that could get you closer to what you want. 19:42 MTDiscord yep i think that's the way to go 19:43 MTDiscord you (and other modders) should ideally start writing your mods in such a way that they treat display names and player identifiers as two separate things. this doesn't need the engine to do anything. 19:43 MTDiscord but the engine should probably define a convention, e.g. an overrideable player:get_display_name(), so modders start adopting this 20:21 [MatrxMT] Sure, as a mantainer of ~20 mods I'll definitely do that (sarcasm) 20:24 MTDiscord That's the spirit! ( ͡° ͜ʖ ͡°) 20:41 MTDiscord Or built-in could provide an easy api 21:17 MTDiscord Zughy: I get that it's nasty, but it shouldn't be so bad actually. You just grep for player:get_player_name() and see where those names end up. If it's used as an ID, use player:get_poid() (fictive new API function which for now returns the player name so your code doesn't break). If it's used as a display name, use player:get_display_name(). 21:18 MTDiscord The reward you get is that suddenly players can have display names which don't need to abide by Luanti player name limitations and which can be changed. Also, could e.g. stuff clan info or something in there. 21:18 MTDiscord But I agree that it's relatively low priority both for modders and engine devs.. so nothing happens. 21:27 MTDiscord Having customizable names would also allow players to do stuff under someone else's name. Whether or not that's a good thing depends on who you are...