Time Nick Message 00:10 onehittoaster update: Placing a chest at an air-node w/ minegeld inventory clears the meta, so this illicit minegeld cannot be reclaimed. 00:13 onehittoaster The player who created this minegeld claimed that they used an unpublished hack running as a CSM to duplicate items. I have no futher info on how they did it. I know this via a second hand witness. 00:13 onehittoaster It seems odd to me that a CSM (or even a hacked client) could tell the server "place this thing here", and the server would blindly trust it. 00:13 onehittoaster but I've not studied this part of minetest code yet. 00:18 onehittoaster using world-edit "//replace air stone" does NOT clear meta. 00:26 onehittoaster worldedit air->leaves, then a technic chainsaw to remove the leaves removed the meta. 01:05 erlehmann onehittoaster i know how this happened 01:06 erlehmann i have plucked items from thin air before 01:06 erlehmann the CSM is not the issue here 01:06 erlehmann neither is the engine 01:07 erlehmann you simply have a mod installed that allows this to occur 01:07 erlehmann onehittoaster can you tell me the server name so i can log in and take a look around? 01:09 erlehmann also, is this a pay to win server? 01:09 erlehmann usually people dupe money or items on pay to win servers 01:09 erlehmann to ruin the ingame economy 01:09 onehittoaster no, absolutely not a pay-to-win. 01:09 onehittoaster lol, I've seen Horizon's videos on taking down P2W though... love those. 01:09 onehittoaster Nope, this is just a run of the mill minetests server. 01:10 onehittoaster with a former player who was a bit of a trouble-maker. 01:10 erlehmann i once made a machine on a server that had ingame money 01:11 Pexin we've seen digtrons glitch so the inventory gets stuck in the dighead nodes when they dig too fast. some sort of race condition something I believe. 01:11 erlehmann and duped a lot of items and money and made the machine dispense random duped items 01:11 erlehmann when someone pressed a button 01:11 erlehmann it was protected by protection node 01:11 erlehmann so you could not steal my dupe stash 01:11 erlehmann it turned minetest into a clicker game, players went to the machine and clicked the button a lot 01:12 erlehmann instead of mining 01:12 erlehmann it was very funny 01:12 Pexin ding levelup 01:12 erlehmann until an admin banned me for having too much fun 01:13 erlehmann from my point of view there is little difference between mining a mineshaft to get items and clicking an in-game button to get items 01:13 erlehmann in both case you are clicking the mouse a lot ^^ 01:14 Pexin from what i've seen, ingame economies are almost as stupid as irl economy. minegeld must come from somewhere, especially since it's flammable / droppable and GC-ed / etc 01:15 erlehmann i think that duping ingame money and “ruining the economy” is a funny thing, but *threatening* to do it is an asshole move 01:15 Pexin then concentrated in a bunch of smartshops 01:15 erlehmann like, if you hate the economy that much, just do it 01:15 erlehmann ppl who threaten to do something instead of just doing it usually want something out of it 01:16 Pexin yeah I seem to be incapable of imagining a server where, if someone flooded "circulation" with a bunch of minegeld, they wouldnt just laugh at the sillyness. I mean the person would still get banned for the attitude, but nobody cares about minegeld 01:17 erlehmann yep, it's the attitude 01:17 erlehmann i once had someone /give me slime blocks on a server 01:17 erlehmann but tell me to not share them 01:17 erlehmann to not ruin the “slime economy” hahahahaha 01:18 erlehmann sticky blocks 01:18 erlehmann i believe sticky blocks is the correct translation 01:18 * Pexin scratches chin 01:18 Pexin I know of sticky pistons. and I know of quicksand.. 01:25 erlehmann pexin if you move a sticky block with a piston all blocks that are adjacent, are moved too 01:27 erlehmann onehittoaster i am sorry for not knowing which mod allows it. but surely more than one player on your server knows how to dupe. it is always multiples. 01:28 erlehmann onehittoaster could you elaborate a bit on the ingame economy? where does the money come from? 01:28 erlehmann is it like catlandia, where everdone is rich? 01:28 erlehmann everyone 01:28 onehittoaster The server issues $10 minegeld to anyone with none in their inventory when they craft something. (from observation, I've not actually looked at the mod code for this). 01:29 onehittoaster Some players have shops and sell stuff. 01:29 onehittoaster Most players average a few hundred to a few thousand minegeld in their inventories, and ATM accounts, and protected chests. 01:30 onehittoaster but there are some (long ago banned) players with inventories and chests with tens of millions of minegeld. 01:30 onehittoaster mithril chests (90 slots) willed w/ minegeld_100 65535 01:30 onehittoaster filled 01:30 Pexin the server where I regular at, gives you 5bux each ingame "day" you do one of mining,building,farming, uhh some other stuff I think 01:30 Pexin also the bank i believe gives some interest 01:30 onehittoaster some of these chests are burried in unprotected places, so this person could log in w/ an alt and recover it. 01:30 onehittoaster well, until today. I wrote a tool that found all of them. 01:31 onehittoaster takes ~5h to process a 34 GiB map.sqlite file on an AMD 5950 01:32 onehittoaster I'll make it multi-threaded and clean it up a bit later. 01:32 onehittoaster gprof, fix what is slow, etc... 01:32 onehittoaster maybe I'll post it on github. 01:34 erlehmann onehittoaster if it is minetest 5.3 or earlier, you will have the same problem again 01:34 erlehmann see security advisories 01:34 onehittoaster ok, I'll go find them. 01:34 erlehmann rubenwardy did a writeup, wait, i look it up 01:35 onehittoaster sadly, the server is multicraft-2.0.0 (some fork of minetest-5.??). I didn't choose the binary, and if I go back to minetest-5.4.1, then some mobile users can no longer connect. 01:35 onehittoaster I'm not very familiar w/ the multicrap vs minetest schism. 01:35 erlehmann https://github.com/minetest/minetest/security/advisories/GHSA-hwj2-xf72-r4cf 01:35 erlehmann > If a mod saves user input in an ItemStack's metadata, then this can be abused by an attacker to add or modify other meta fields of the same item stack. 01:35 erlehmann this is one way to get arbitrary items 01:36 onehittoaster ah, ok 01:36 erlehmann usually limited to whatever input is saved in there 01:36 onehittoaster interesting. 01:36 erlehmann but if you deserialize meta, you can also have this! https://github.com/minetest/minetest/security/advisories/GHSA-7q63-4fq2-hqcr 01:36 erlehmann RCE 01:36 onehittoaster "remote code execution...". yeah, I always wondered why the lua table serialization format was "return {...table...}". 01:36 onehittoaster that just reads like a bad idea to me. 01:37 erlehmann hehe 01:37 erlehmann well 01:37 onehittoaster (in my former life I was a network security type person...) 01:37 erlehmann onehittoaster what is the worst that would happen if all that ingame money got out? 01:37 erlehmann like what is the “Economy” based on 01:37 erlehmann is it item shops? 01:37 onehittoaster probably not much. I mostly hunted down the chests to see if I could - technical challange. 01:37 onehittoaster the server isn't crazy popular, and there is no real-world money. 01:38 Pexin 34G map for a server that is not crazy popular.. o_o 01:38 onehittoaster the other problem is that some older/defucnt shops were set up by ealrier admins w/ "creative" powers, so they sell veyr high end gear for stupid cheap. full draconis armor for $5MG 01:38 onehittoaster HV_technic for cheap. 01:40 lagash Anyone know of a mod with a formspec that looks like a passcode entry? Like, 4 digits, up and down arrows to increment and decrement, etc? 01:40 MTDiscord My server isnt crazy popular either but its still a 75GB map. It mostly just depends on regular players and time. 01:42 Pexin GreenXenith: x_x 01:42 onehittoaster Before admining this server, I played (well I still do) on pandorabox. They take the issues of player balance, progression and "its a surivival server" seriously, and I guess that I'm trying to clean up this new server in that spriti. 01:43 Pexin I...think(?) our admin periodically wipes unprotected distant areas 01:43 onehittoaster yeah, I plan to run BB's "mapcleaner" at some point also. 01:43 onehittoaster at least, I'll wipe all mapblocks that contain only "water, air, vacuum, stone". 01:44 onehittoaster but I'm affraid that if/when they re-mapgen that they the cavegen thing will destroy adjacent player buildings. 01:44 onehittoaster idk. 01:44 onehittoaster need to test that in a backup copy of the server. 01:45 MTDiscord Yeah, id run a cleaner if I had a backup, but I dont have room on the drive to make a backup. And I cant be bothered to make a remote backup at the moment. 01:46 onehittoaster i've got BB's "mapserver" installed as well. This adds an "mtime" column to the "blocks" table in map.sqlite, and triggers to set the value on isert/update. Using that, I am developing a python script to make a lazy "slony-like" (if you;'ve ever used "slony" for postgresql...) backup. 01:47 onehittoaster it will copy over ~100 mapblocks per cycle, from the oldest mtime to current. 01:47 onehittoaster so it will slowly catch up to current, and then replicate just the changing/new mapblocks after that. 01:47 onehittoaster but yeah, still need 2x the disk space. 01:48 erlehmann onehittoaster do not wipe areas 01:48 onehittoaster Or I could down the server, and "cp map.sqlite backup.sqlite", but that causes ~4 minutes of outage. 01:48 onehittoaster pbox wiped areas once, when their database got to 200G.. 01:56 onehittoaster erlehmann: is there any other downsize to removing "unused" mapblocks other than cavegen disturbing adjacent mapblocks? 01:57 erlehmann onehittoaster yes, some people hate protection nodes or protection areas 01:57 erlehmann i never protecc 01:57 erlehmann except as a troll 01:57 erlehmann like the clicker machine 01:57 erlehmann it was meant as a statement against protection nodes 01:58 erlehmann the cavegen griefing is very serious though 01:58 erlehmann ask kay27 about it 01:59 erlehmann you should really avoid it 01:59 onehittoaster I don't plan to remove mapblocks that have any "real" content in them, protected or not. At least, not unless forced. 01:59 erlehmann you can remove ones that have only air 01:59 onehittoaster Just blocks that contain only air, water, vacuum or stone (or combos of). 01:59 erlehmann it will only remove dupestashes 01:59 erlehmann but why remove mapblocks that are generated? 01:59 erlehmann they will need to be generated again 01:59 onehittoaster such blocks are really small though, so it won't reduce the database size by much. 01:59 erlehmann leading to lag probably 02:00 erlehmann you only have a limited number of emerge threads 02:00 onehittoaster b/c maybe 10G of them were generated by ME as I flew around the map exploring as an admin. 02:00 erlehmann ideally you have 1 emerge thread because the emerge is racy as far as i know 02:00 onehittoaster when i took over, the server database was maybe 20G or so. Not its 34G. 02:00 erlehmann happens 02:00 onehittoaster not/now 02:00 erlehmann the bigger the map is, the slower it grows 02:01 erlehmann if i were you i would manually look for giant mapblocks 02:01 erlehmann and figure out why they are big 02:01 erlehmann consider the following 02:01 erlehmann do you have shulkers? 02:01 erlehmann portable chests i mean 02:01 onehittoaster most of the existing players are highly concentrated within 5k nodes of world center. We are going to try to encourage new players to spread out a bit more, so I expect the map filesize to grow. 02:01 onehittoaster "wifi" chests. 02:01 erlehmann a shulker contains an entire inventory 02:02 onehittoaster but those are not quite the same as a shulker. 02:02 erlehmann a chest you can pick up 02:02 erlehmann that means it can have a meta of like 50k or so 02:02 onehittoaster btw, I've never played minecraft. not once. I only know about them from Horizon's youtube videos. 02:02 erlehmann never played it either 02:02 erlehmann whatever, let's consider books 02:02 onehittoaster IDK where the wifi chest stores its meta, but they are not per-player, but universal. eg, you interact w/ anyone's wifi chest and see your inventory. 02:02 erlehmann what's the maximum amount of characters in a book? 02:02 onehittoaster its huge I assume. 02:03 erlehmann so lets assume 10 kilobytes 02:03 erlehmann what's the maximum amount of inventory space in a chest? 02:03 erlehmann in mineclonia it is 27 02:03 onehittoaster lol... my C++ code crashed earlier today when trying to handle a mapblock w/ a chest w/ a crated digtron. the Inventory "Item" sttring was HUGE. I was lazy and used "std::regex()" to parse it. 02:03 onehittoaster and that recursed 200k stack frames and segfaulted. 02:03 erlehmann what 02:04 erlehmann this should not happen 02:04 onehittoaster mithril chest is either 90 or 100. 02:04 erlehmann your regex implementation may be stupid 02:04 onehittoaster it is 02:04 onehittoaster c++17 g++ v 11.2 02:04 erlehmann let me look i up 02:04 erlehmann wait 02:04 onehittoaster https://discord.com/channels/513329453741637637/668091303883571200 SX did an analysis. It recursed 1 frame for each character. 02:04 onehittoaster so I recoded it. 02:04 erlehmann https://swtch.com/~rsc/regexp/regexp1.html 02:05 erlehmann > This is a tale of two approaches to regular expression matching. One of them is in widespread use in the standard interpreters for many languages, including Perl. The other is used only in a few places, notably most implementations of awk and grep. The two approaches have wildly different performance characteristics: 02:05 onehittoaster I was just being laze and did a "std::regex_match()" on "Item (.*)". 02:05 erlehmann > Notice that Perl requires over sixty seconds to match a 29-character string. The other approach, labeled Thompson NFA for reasons that will be explained later, requires twenty microseconds to match the string. That's not a typo. 02:05 onehittoaster It was the greedy ".*" that did it. 02:05 erlehmann that should *not* be a problem 02:05 erlehmann unless your regex matching algorithm is garbage 02:05 onehittoaster I just rewrote the code to byte-bang the string like it was ansi C in the 1980's. 02:05 erlehmann it is not you being lazy 02:06 erlehmann it is the std::regex() people who were probably 02:06 onehittoaster :) 02:06 erlehmann ok so lets get back to the chests 02:06 onehittoaster I should clean up my code and pit it on github... 02:06 onehittoaster put 02:06 erlehmann 100 item slots times 10kb books with random characters 02:06 erlehmann that is 1000kb for a node 02:07 onehittoaster The packed digtron (329 nodes) item-string was over 200k long. Imagine a chest w/ 90 of those in it. And then 4096 of those in one mapblock. 02:07 erlehmann so you get 1MB chests! 02:07 erlehmann yes 02:07 erlehmann i assume a packed digtron is a digtron as an item? 02:07 onehittoaster I wonder if that would crash minetest when that mapblock is loaded. 02:07 erlehmann that you can place as a schematic? 02:07 onehittoaster yup 02:07 onehittoaster I think so. 02:07 erlehmann no, minetest is pretty cool 02:07 onehittoaster I've not actually used a digtron though. 02:07 erlehmann you may have one problem though 02:07 erlehmann get one of those and then drop it as an item 02:07 onehittoaster but the item string was filled w/ escapes that looked like "\u(0003)foo foo foo".... 02:07 erlehmann and then *unload* the map block 02:08 erlehmann it might crash 02:08 onehittoaster the static_object list maxes out at 65536 chars per string...? 02:08 erlehmann a bit less 02:08 onehittoaster I need to check the spec. 02:08 erlehmann it is fixed in mineclonia 02:08 erlehmann items with really long meta are only problematic in two ways 02:08 onehittoaster I must go. I need to incinirate some marginally edible item for dinner (IRL). 02:09 erlehmann 1. if they exist as an entity instead of in your inventory or node meta, unloading them would crash older minetest 02:09 onehittoaster it was great talking with you. I'll be back later. 02:09 erlehmann 2. if your bandwith is low, you can bookban yourself with it 02:09 erlehmann look up bookbanning 02:09 erlehmann it is a known technique to make ppl unable to play the game 02:09 erlehmann by throwing them items with large meta 03:15 citrons how can I get a perisistent identifier for an entity so that I can reference it in, for instance, node metadata 03:15 MTDiscord you make it yourself 03:16 citrons what do you mean 03:21 MTDiscord you make a unique id for the entity, store it in the entity, make sure it gets loaded in on activate, and then store it in node meta 03:21 MTDiscord and then build in error checking if the entity is gone/not loaded 03:22 citrons I see 07:46 citrons I have this https://0x0.st/oXDl.txt set of functions 07:46 citrons and 07:48 citrons I have code which uses it to set metadata for a block. but when it reads back the metadata, it's empty. I've made sure that 1. it's reading the same block 2. the "data" table contains keys 3. meta:from_table returns true 07:50 definitelya It's citrons!I remember APIONET now ahah. Fun times 07:52 citrons hi! 07:52 definitelya Hey 07:52 citrons apionet is still active 07:53 definitelya nicee, lemme check in. 07:57 MTDiscord too bad most of the bridges to apionet are down. 07:57 MTDiscord (the miscellaneous ones) 07:57 definitelya hmm 07:58 definitelya Wait.. there's a bee 07:58 definitelya Found the culprit 09:24 citrons we have a node that we want to make transparent. it is currently casting shadows on other blocks and the entity which is created inside it https://0x0.st/oXk_.png 09:24 citrons we set its drawtype to airlike and sunlight_propagates is set to true 09:57 erlehmann citrons does this happen without shadows? 10:01 definitelya__ citrons FYI shadow code was somewhat buggy and controversial, it's been removed in 5.5.0 . 10:02 definitelya__ Hopefully we can fix it. 10:05 sfan5 I don't think they mean those shadows, just the normal stuff 10:05 sfan5 citrons: you need paramtype = "light" too 10:06 definitelya__ yes 10:08 erlehmann oh 13:01 independent56 90% of the new players on my server are either incompetent or too young. Is this common? 13:08 erlehmann wdym too young 13:16 independent56 Too young to understand anything, like the fact i won't give admin to you you just joined 13:18 erlehmann i am over 12 years old, can you give me admin rights 13:18 erlehmann i did not even join 13:19 independent56 They're not tto young for admin, they're too young to understand that admin is a lot of power for a place with so much hard work 13:20 erlehmann then give them no admin and let them play 13:20 erlehmann look, it's just kids 13:20 erlehmann they will have fun and build some houses 13:21 independent56 I had a player who was just like "give me admin give me all the commands i want to help the server" 13:21 erlehmann and sometimes they make big statues of genitals or poop, because HAHA LOOK WHAT I MADE (they are kids after all) 13:21 erlehmann sounds like a scam! 13:21 erlehmann kids on servers are funny 13:21 independent56 But they are so annoying. Maybe i am being a bit tough 13:21 erlehmann i once helped a girl find the ingredients for a cake, because her brother was on the server too 13:21 erlehmann and she wanted to make a cake in game 13:22 erlehmann for his birthday 13:22 independent56 That's sweet 13:22 erlehmann yeah, unfortunately some other kid came and stole a lot of stuff 13:22 definitelya__ Yes, it's cake, obv. 13:22 erlehmann and killed the horses 13:22 erlehmann definitelya__ lOL 13:22 erlehmann LOL 13:22 definitelya__ -_- 13:23 definitelya__ I like cake of the sweet variety. 13:23 erlehmann independent56 i'd say let them play or do not run a public server 13:23 independent56 Ok, fine 13:23 erlehmann the only kid i ever encountered who was really annoying and stupid was ASKI 13:23 definitelya__ yay 13:24 erlehmann ASKI helped me when i was low on health in some mcl5 server 13:24 erlehmann but later aski was like „show me how to cheat“ (while flying around me) 13:24 erlehmann also aski gave me a netherite ingot and i gave ASKI a stack of netherite ingots back 13:25 erlehmann and then every time we met ASKI was like “show me how to dupe or i attack you” 13:25 erlehmann he is like 11 or so? 13:25 erlehmann and plays with his grandpa on the same server or so i heard 13:25 erlehmann so ASKI shot arrows of harming in my general direction 13:25 erlehmann but then remembered that those arrows are hard to make 13:26 erlehmann and have value 13:26 erlehmann and wanted them back 13:26 independent56 https://pastebin.com/EQh8Q9Cu 13:26 Pexin hahaha 13:26 erlehmann so i shot them back, which angered ASKI a tiny bit 13:26 erlehmann but i had duped the arrows, so i shot way more arrows back than i had collected 13:26 erlehmann which angerede ASKI a bit more 13:26 erlehmann angered 13:26 erlehmann because before ASKI hat shot at me i did not have any arrows of harming hehe 13:27 definitelya__ Smart 13:27 erlehmann can't dupe an item you do not have 13:27 definitelya__ Do business, not war! 13:28 erlehmann independent56 that does not sound too bad 13:28 erlehmann just let the kid build some stuff, come back later and look at the cool shit they came up with 13:29 independent56 They weren't building anything. They were just being annoying. 13:30 erlehmann adult players can be annoying too 13:30 erlehmann in fact, the most annoying players i have met where definitely not kids 13:31 erlehmann really, just let them be 13:31 erlehmann if they do not have fun 13:31 erlehmann they will go away 13:31 independent56 ok 13:31 independent56 so no /revoke player shout ? 13:31 erlehmann not unless they spam 13:31 independent56 Ok 13:31 erlehmann i think yuo are worrying too much about managing your server tbh 13:32 erlehmann i mean the players 13:32 erlehmann if some kid asks for admin rights that is a reason to laugh, not to revoke the shout priv 13:33 independent56 makes sense 13:33 independent56 I'm just inexperienced 13:36 independent56 Is there an adminship course out there :p? 13:56 independent56 I've just had a player say "I'M GOING BYE" because i didn't watch the chat whilst doing building. -_- 13:56 independent56 They were like "CREATIVE\nCREATIVITY\nI CONSISTENTLY DIE" 13:58 MTDiscord Adminship lesson 1: about 99% of players are not worth struggling to retain. A lot of them just aren't willing to invest that much energy into your world. You have to accept that finding players who are a good fit is rare and takes a long time. 13:59 MTDiscord As long as you make the product good, you can't sweat customers who don't click with it the first time around. There are some things you might be able to do, but nothing that has that big of an impact. 14:00 independent56 Makes sense 14:00 independent56 I 14:00 independent56 I've given up retaining players by now. But i have got two somewhat regulars. 14:01 MTDiscord You'll always get a bunch of fly-throughs who join, complain about something that they don't (and probably couldn't possibly) immediately understand, and then they go leave to whine about some other server. 14:04 independent56 "But i wanted Etheral biomes where im standing right now!!!" 14:06 MTDiscord "Why isn't grantme working?!" 14:06 independent56 "/xban 56independent horrible admin" "Wait it dosent work!" 14:10 definitelya__ I often wonder why, if I complain about complainers 14:10 definitelya__ complaining about other people complaining 14:10 definitelya__ the world lets me do it... 14:51 jonadab The trick is to notice if you're losing the kinds of players you'd prefer not to lose, and figure out why. 14:52 jonadab You know, the ones who want to build cool stuff and help people and whatnot. 14:53 jonadab The ones who advise people on how to automate things in a way that doesn't create too much lag. 14:53 jonadab And show them working examples. 14:59 independent56 Cool 15:31 MTDiscord "Why don't we have (mod)? They use it in (server)." 15:36 independent56 Haha so relatable 15:37 independent56 I've been asked for vehicles, yet i have no car infrastrucutre. Use rails 15:38 onehittoaster I've been asked to install "Nether", "NSSM" and "NSSB". We're already at 29k registered nodes, and 32k is the max... 15:38 onehittoaster And I have to put "nether" someplace... it wants 3k vertical nodes minimum. 15:40 erlehmann can it be that LBMs are super unreliable? 15:41 erlehmann i.e. mapblocks can be loaded without the lbm activating 15:44 MTDiscord I've run into reliability issues with LBMs but was never able to prove that it wasn't because they were just firing too early, e.g. before the block was actually properly loaded and active. 15:45 MTDiscord I have an LBM that's supposed to regenerate some ents and every now and then it just doesn't. As a result pretty much every LBM I use is backed by an ABM to retry in those cases. It sucks. 15:48 MTDiscord Put a minetest.after in it? 15:51 MTDiscord That's dirty as well, because you can't tell whether the time will actually be enough for the block to change state. 15:53 independent56 I have just decommisioned a line and i haven't realised how much rolling stock there was: https://i.imgur.com/B1zEc4B.png 15:53 MTDiscord Put it in a minetest.after that uses a get_node to check if the block is ready (not ignore) and if not, calls another minetest.after 15:53 MTDiscord Now you might get an infinite loop in some cases if blocks never get loaded 15:54 MTDiscord Make it give up after a set num of tries 15:54 onehittoaster Also consider not using a fixed delay, but "exponential decay with random jitter". 15:55 onehittoaster decay -> delay. sorry, mixing EE and CS... ugh 15:55 onehittoaster so, the Nth delay might be "1 + 1.5 ^ N + random(10)" or so. 15:56 MTDiscord Map corruption on failure 15:56 MTDiscord XD 15:56 onehittoaster so that if lots of blocks all trigger the same timer, then they won't all fire at synchronous intervals. 16:13 erlehmann ok so in my case the lbm is for a mapgen layer 16:13 erlehmann mineclone2 <0.71 generates void nodes above the nether roof 16:13 erlehmann mineclone2 0.71 generates air 16:13 erlehmann i think 16:13 erlehmann so i have an lbm on void 16:14 erlehmann turns out a) the process is not too laggy b) after a few minutes minetest stops converting void to air on load 16:14 erlehmann in fact, it seems as if mapblocks get loaded and only after that they get converted 16:15 definitelya__ Ahah wtf was my last message? I slept and I'm normal now, I swear. 16:16 definitelya__ Obsessive Yuri moment. 16:48 MTDiscord I already tried queueing and delaying for the mapblock to be definitely loaded so I guess that's not it. 16:49 MTDiscord For mapgen specifically I also ran into the lovely problem that sometimes mapgen modifies stuff outside of the newly generated area, like dungeons overwriting themselves multiple times. 16:49 MTDiscord So far I have found nothing other than an ABM that will definitely always eventually find a node and make sure some code runs against it. 17:36 erlehmann Warr1024 you may want to look into the work that kay27 does 17:36 erlehmann he is basically trying to make a non-racy mapgen that does not grief your map 17:37 erlehmann ppl suggest that he work with the engine devs, but i think he said he tried that and had bad experiences 17:37 erlehmann so he is doing it in lua 17:38 erlehmann meanwhile, i have fought the stupid stone clouds again today and won 17:40 Komodo Hello world 17:41 MTDiscord I have had some success with Lua mapgen. There are some things I'm not sure make sense to to in mapgen though, so in some cases I use a special node to mark things and then LBM+ABM to sweep them post hoc. 17:41 MTDiscord I almost added an "albm" abstraction but out of the like 8 cases, at least half of them are subtly different enough that it wouldn't have made much sense. 17:49 erlehmann yes, structure nodes 17:50 erlehmann the advantage of a structure node, that unpacks into a structure after mapgen: if is atomic 17:50 erlehmann you get either the whole structure or not 17:50 erlehmann but not half the structure griefed by cavegen 17:50 erlehmann or chewed up by an adjacent mapblock generating 17:50 MTDiscord Yeah, it's just annoying how much tooling is necessary to ensure they unpack... 17:50 erlehmann or chunk, whatever 17:51 erlehmann oh how much? 17:51 erlehmann have a link? 17:51 erlehmann is there maybe a generalized structure node unpacking mod? 17:51 MTDiscord I just mean the need for an ABM to catch LBM failures. 17:51 erlehmann ah 17:51 erlehmann i once read that some user managed to snag a dfcaverns (?) structure thing that unpacked into an underground fortress or something like that hehe 17:52 MTDiscord Also ABMs for node timer failures suck too. Seems like those will get purged out of a mapblock at save time if there are too many or something. 17:52 erlehmann just by mining it when the server was laggy 17:52 erlehmann timers are cursed 17:52 MTDiscord Everything is at least a little cursed ;-D 17:52 erlehmann coras fires using timers leaked memory a lot 17:53 erlehmann ABMs are the least cursed 17:53 erlehmann having 40k fires and an ABM to extinguish them randomly does not increase memory by a noticeable amount 17:53 erlehmann make each fire remember how long it burned and you fill the memory to the brim 17:54 MTDiscord ABMs are good for what they're good for but if you need periodic firing of an event for a node on a strict interval, it'd be a lot of work to avoid timers. 17:54 MTDiscord Node metadata at least is surprisingly less cursed than I'd have expected though. 17:55 erlehmann it is cursed in that you can put stuff in it 17:55 erlehmann it sees to be bottomless 17:55 erlehmann thicc mapblocks with lots of chests full of stuff 17:56 erlehmann way better than entity staticdata imo 17:56 definitelya__ erlehmann: Is a mapblock full of metadata nodes more prone to corruption? 17:58 definitelya__ Maybe it's unrelated; I just thought more node complexity = more breakage. 18:00 erlehmann definitelya__ having a lot of metadata and having a bit of metadata is the same complexity 18:00 erlehmann only when you get into stuff like split network packets it gets hairy 18:00 definitelya__ Ah I see, thanks. 18:31 MTDiscord Metadata fields can be marked private, which can help mitigate network impact. 19:25 MinetestBot 02[git] 04dennisjenkins75 -> 03minetest/minetest: Correct world_format.txt specification (#12061) 130cd9c5b https://github.com/minetest/minetest/commit/0cd9c5b5be47dffd433e9bad8fd2119eb9ddf0f5 (152022-02-12T19:23:46Z) 19:25 MinetestBot 02[git] 04Wuzzy2 -> 03minetest/minetest: Add support for 'seed' in disallow_mapgen_settings (#12023) 1310cf2f3 https://github.com/minetest/minetest/commit/10cf2f3eddb9106a87721e36f0dd284ec041c4d8 (152022-02-12T19:23:58Z) 19:25 MinetestBot 02[git] 04rollerozxa -> 03minetest/minetest: Apply texture pack main menu textures immediately (#12018) 13258ae99 https://github.com/minetest/minetest/commit/258ae994915e1b9fc5b3a72627886f2ce4334902 (152022-02-12T19:24:20Z) 21:07 lagash What's a quick way to determine is something is a player or a node? E.g. from docs `clicker`: an `ObjectRef` (may or may not be a player) 21:08 Krock lagash: it's always an ObjectRef 21:09 Krock nodes are not objects 21:09 Krock use clicker:get_player_name() to check if it's a player 21:09 MTDiscord no, use clicker:is_player() 21:10 MTDiscord clicker:get_player_name() returns the empty string for non-players, which I wouldn't rely on 21:11 Krock it's documented to return an empty string. but agreed, there might be better functions 21:11 MTDiscord Compare: if clicker:is_player() then ... end vs if clicker:get_player_name() ~= "" then ... end 21:12 lagash so when clicker is not a player, what can it be? a mob perhaps? 21:14 Krock any kind of lua entity, which includes mobs, vehicles, or dropped item stacks 21:16 Krock although I don't think there's a vehicle that performs right-click actions 21:16 lagash not yet you mean! }:) 21:17 Krock yes 21:17 Krock I have high expectations in you 21:36 MTDiscord lagash: or sometimes a "fake player". These might be NPCs, but sometimes are just Lua structures for automation purposes. 22:25 independent56 Is it normal to spawn to be full of bones? 22:25 independent56 Especially a spawn as mountainous as mine? 22:25 independent56 http://56i.duckdns.org:8080/#!/map/0/10/109/-3005 22:26 independent56 Here, see? Bones everywhere! 22:30 independent56 Should i make a button in spawn which grants shout for those who press it? 22:30 independent56 Or is it unethical? 23:22 sfan5 why would it