Time  Nick             Message
02:50 greeter          i have some falling water on a server. is there any easy non-admin way to despawn it?
02:51 erlehmann        greeter what do you mean with falling water?
02:52 greeter          i spilled some water near the top of the world. i'm done with it now and picked up the water with a bucket, but now what's flowed away just keeps falling
02:53 erlehmann        greeter get a sponge i gues??
02:54 erlehmann        greeter alternatively, get a cheat client
02:54 erlehmann        or ignore it
02:55 greeter          looks like it's despawned now. i followed it down about 1,000 nodes then flew away. when i came back it was gone
03:51 v-rob            erlehmann: Did you really recommend someone get a cheat client? That's very much against the rules.
03:54 erlehmann        v-rob i did, and i believe you are mistaken – https://wiki.minetest.net/IRC#Rules says nothing about cheat clients.
03:54 erlehmann        v-rob i believe cora has used waspsalive to fight runaway fires that caused server lag
03:55 erlehmann        so i guessed that code could pretty easily be changed to fight water
03:55 v-rob            The IRC rules say very few Minetest-specific things, but the forum rules do prohibit it, and most of those should extend to IRC by proxy.
03:55 erlehmann        the real solution is, of course, to fix the fire algorithm. cora also do that.
03:56 v-rob            I mean, it's certainly possible to have legitimate "cheat" clients, but I'm just trying to warn you that the rules are rather explicit about it. I'd personally rather not have you get banned or anything like that.
03:57 erlehmann        i am pretty sure that i have only ever suggested cheat clients that are constructive, i.e. automatically build stuff.
03:58 erlehmann        or similar things
03:58 v-rob            I know, but it could get questionable. Some might consider automatic building cheating.
03:58 erlehmann        waspsaliva can, for example, disable particle effects bc those can cause lag
03:58 erlehmann        that depends on the server
03:58 v-rob            That sounds like a legitimate fork feature.
03:59 v-rob            Forks are definitely different that cheat clients, as one is used for getting unfair advantages over others.
03:59 erlehmann        well, i call all of those cheat clients, yes
04:00 erlehmann        but that has to do with my view on the virtual lego games genre in general
04:00 v-rob            Well, it might behoove you to use better terminology then :)
04:00 erlehmann        i.e. that exploring an open world and building stuff is a modern robinsonade
04:00 erlehmann        the perfect neoliberal experience
04:00 erlehmann        work is always rewarded
04:01 erlehmann        well, waspsaliva has also goddess mode
04:01 erlehmann        and features to keep griefers at bay
04:01 erlehmann        i do not believe there is a good line to draw
04:01 erlehmann        i mean, i used halfbright mode myself because i have bad contrast vision
04:02 erlehmann        halfbright, as in: every node appears at least with light level 7
04:02 erlehmann        i do, of course, not do such stuff on CTF or so
04:03 erlehmann        apart from all of this: i believe that the forum rules neither do nor should they extend to IRC and i believe this is the first time someone explicitly disagrees on that.
04:03 erlehmann        one reason for that is that as a game dev, i need to discuss cheat clients
04:04 erlehmann        for the simple reason of “how to defend against that”
04:04 v-rob            Discussing cheat clients is a different matter than recommending cheat clients
04:05 erlehmann        if you are more comfortable with that, i can also recommend to not use them. there is historical precedence, wait for it.
04:05 erlehmann        https://en.wikipedia.org/wiki/Vine-Glo
04:06 erlehmann        > On the packaging, it included a very specific warning: "After dissolving the brick in a gallon of water, do not place the liquid in a jug away in the cupboard for twenty days, because then it would turn into wine."
04:07 erlehmann        > old in the United States during Prohibition by Fruit Industries Ltd
04:07 erlehmann        sold ;)
04:09 erlehmann        v-rob i do, of course, not want to be banned. so if someone who actually can ban me threatens me with a ban for recommending waspsaliva, i may try to compy.
04:10 v-rob            Well, start distributing source patches that allow cheating features, and you'll probably find out that we're a bunch of Prohibitionists and not Supreme Court members with conflicts of interest then ;)
04:10 erlehmann        v-rob but until that happens, i will continue to tell people about that stuff when i deem it apropriate.
04:10 erlehmann        wdym start distributing source patches?
04:11 v-rob            I'm making an analogy between giving out wine bricks and code that would allow you to turn Minetest into a cheat client.
04:11 erlehmann        i *strongly* doubt that anyone is going to ban cheat client authors for anything outside forums. cora and fleckenstein were not banned.
04:11 erlehmann        neither was anon5
04:11 erlehmann        all three of those have contributed something to minetest in the end, like fixes for exploits.
04:12 erlehmann        e.g. i believe fleckenstein fixed the entityspeed exploit (where being attached to an entity allowed players to break the speed limit)
04:12 v-rob            In any case, I have no power to ban, as I am not a moderator. I'm just stating that you appear to be on shaky ground.
04:13 erlehmann        i doubt it, but i appreciate your concern.
04:13 erlehmann        oh also
04:13 erlehmann        cheat clients are, definitely, something on almost all servers that have anarchy in the name or description
04:14 erlehmann        v-rob have you ever used a cheat client btw? if not, i suggest to try. some features would very well fit into minetest proper.
04:15 v-rob            Now you're recommending them to me :)
04:15 v-rob            But no, I have not.
04:15 erlehmann        yes, because you are a dev and i would like mainline minetest to have more interesting CSM APIs
04:15 v-rob            Ah
04:16 erlehmann        i mean WS is basically a bunch of CSMs
04:16 erlehmann        some of them even work on vanilla minetest
04:16 erlehmann        like, cora gave me one once with which i could see the ghost inventories that a specific dupe polluted the world with
04:16 erlehmann        so i could research server history
04:17 erlehmann        like, where did people dupe
04:17 erlehmann        invisible trails
04:17 v-rob            I do have a lot of interest in SSCSM (although I'm GUIing for now and the immediate future), and many SSCSM APIs would extend to CSM as well.
04:18 erlehmann        i believe that SSCSM is a foolish and dangerous endeavour and should never be done. but apart from that, i do think that we share a goal of better CSMs.
04:18 v-rob            It's interesting, I've seen other games that have Lua scripting, and there is no form of SSM, only SSCSM-type things, which is the exact opposite of Minetest
04:18 v-rob            Then again, security is not their highest priority...
04:18 v-rob            Potential buffer overflows being the norm rather than the exception :/
04:18 erlehmann        do you know about afl-fuzz btw?
04:19 erlehmann        well, buffer overflows are a reality in the CVE++ programming language ^^
04:19 erlehmann        about lua scripting: notch once mentioned that minecraft could have a server-side lua API, with no installation of client side mods necessary
04:19 erlehmann        turns out he lied
04:20 erlehmann        MC never got that hehe
04:20 erlehmann        v-rob what kind of CSM interests you if it is not automating player actions?
04:20 v-rob            Rendering
04:21 erlehmann        please be more specific about that
04:21 v-rob            Like this PR: #10801
04:21 erlehmann        btw, automating player actions is important for accessability. i used autoforward, for example, bc it literally hurts to press the forward key after a long time.
04:21 ShadowBot        https://github.com/minetest/minetest/issues/10801 -- Add CSM 2D Drawing API by v-rob
04:22 erlehmann        i look at it
04:22 v-rob            I closed it partly because of a change in GUI development direction and partly because I wanted it to be entirely decoupled from Irrlicht
04:22 v-rob            But definitely something I want to pursue more, and also in the 3D realm.
04:23 erlehmann        i see what you are doing there, but i believe the approach can be better done by declarative vector graphics and declarative animations
04:23 v-rob            For instance, the ability to render arbitrary objects in the world, like client-side entities, but super light-weight
04:23 erlehmann        like, see my website here: http://dating.dieweltistgarnichtso.net – the entire thing has rich animations and interactivity, but absolutely no javascript
04:23 v-rob            Well, it was a light wrapper around Irrlicht's 2D API, so just image and rectangle drawing, mostly.
04:23 erlehmann        it is almost all declarative SVG animations
04:24 erlehmann        the difference in performance between declarative drawing and programmatic drawing is A LOT in my experience
04:24 erlehmann        like svg animations will work on 10 year old phones … javascript bloatware, not so much
04:25 erlehmann        the reason, of course, being that a declarative API means you can improve the renderer
04:25 erlehmann        and do not rely on each document to be improved
04:26 erlehmann        i believe it to be a collosal mistake to have 2d graphics be programmatic. time and time again it has lead to security and performance problems.
04:26 erlehmann        like, take postscript
04:27 v-rob            Different things for different jobs. That PR was originally meant for the formspec replacement. All elements have managed rectangles, and then all they need to do is draw an image or box inside that rectangle, so that was the correct approach.
04:27 erlehmann        maybe. i can not really tell, formspecs are a cursed thing
04:27 v-rob            Well, the formspec replacement is supposed to replace the formspecs, so they're really entirely separate.
04:27 erlehmann        i remember having heard a story once, that someone (maybe lutz donnerhacke?) figured out that not only you can make a fractal in the postscript programming language, you can also send that document to a printer
04:28 erlehmann        contrary to that, you can not do that using svg, short of including documents fragments in themselves – which can easily be forbidden.
04:29 v-rob            Really, that PR was meant to be a backend for more general drawing, not as a thing that general users would use for their drawing needs.
04:29 erlehmann        i understand. i took it as an example of a general drawing approach.
04:29 erlehmann        and having seen how badly mineclone2 manages client resources, i am strongly against such things.
04:29 erlehmann        fire texture metadata, for example, in mineclone2, was sent each frame.
04:30 erlehmann        cora calls it “a singleplayer game” for reasons ;)
04:30 v-rob            Ouch. The more I hear about MineClone 2, the more I never want to touch it.
04:30 erlehmann        well, it is a very successful thing for reasons. but those reasons do not include performance.
04:31 MTDiscord        <Jonathon> mineclon* is literally the handbook on what not to do in minetest
04:31 erlehmann        a thing you may not have noticed is though that a lot of code in there was cobbled together from other mods.
04:31 v-rob            The code is the #1 thing I never want to see from it :)
04:31 ShadowBot        https://github.com/minetest/minetest/issues/1 -- GlowStone code by anonymousAwesome
04:31 erlehmann        originally, i mean. minetest_game, for example, also had similar bugs. not *too* bad, but similar.
04:32 erlehmann        #0
04:32 ShadowBot        erlehmann: Error: That URL raised <HTTP Error 404: Not Found>
04:32 erlehmann        well
04:32 v-rob            Hmm, #-1
04:32 erlehmann        hehe
04:32 v-rob            Nope, OK
04:33 erlehmann        so regarding CSMs
04:33 erlehmann        anything else you are interested in?
04:34 v-rob            I haven't thought in great detail. My favourite potential application for SSCSM would be entity management, since it's super slow to do it from the server, but that doesn't extend very well to CSM.
04:34 erlehmann        here is some inspiration btw https://repo.or.cz/waspsaliva.git/tree/HEAD:/clientmods
04:35 erlehmann        there is an encrypted messenger in there and teamchat
04:35 erlehmann        and a way to mark other players as friend or foe
04:36 erlehmann        i like the simplicity of this one https://repo.or.cz/waspsaliva.git/blob/HEAD:/clientmods/kamikaze/init.lua
04:36 erlehmann        basically, someone spammed hostile mobs at the spawn of a server
04:36 erlehmann        which kills noobs
04:37 erlehmann        kamikaze logs in and punches those, then dies, respawns, does it again
04:37 erlehmann        to make the server safe again
04:37 erlehmann        it also punches fire and tnt and exploding crystals
04:38 erlehmann        v-rob would you consider that cheating? the admin did not interfere  with both spamming hostiles nor cleaning it up
04:38 v-rob            Not really
04:38 v-rob            But the same code could easily be abused to attack other players
04:39 erlehmann        well the bot is too lazy for wayfinding i just realized
04:39 erlehmann        so it just flies lol
04:39 v-rob            Which makes it difficult to add APIs for such a thing
04:39 erlehmann        it's not too difficult
04:39 erlehmann        you are thinking of a different thing probably, killaura
04:39 erlehmann        it can be detected pretty easily, spawn invisible entities close to players and see if they start punching them
04:40 erlehmann        if so, they must be cheaters
04:41 erlehmann        v-rob what about autoeat, where if a player has food and is hungry, the script will make the player eat it. cheating?
04:42 v-rob            It would probably depend on the hunger mod
04:42 v-rob            If it's an extreme survival server, it might be.
04:43 v-rob            Minetest Game + hunger? Maybe not.
04:43 erlehmann        well, anarchy servers, where players lie, cheat & kill
04:43 erlehmann        extreme survival ehehehe
04:44 v-rob            Anarchy is a class of its own, and certainly shouldn't be the basis for CSM APIs, to be sure.
04:44 erlehmann        to the contrary, i think it should. you get a very good testing that way if an API can and will be used to cheat.
04:45 erlehmann        if you have a CSM API and it is not used to cheat on an anarchy server, it's probably fine
04:45 v-rob            I mean we shouldn't design APIs _for_ anarchy servers
04:46 erlehmann        well, anything that improves user control is like that. so i totally get it that anarchists will want CSMs that are not server-controlled and … others … will want to prevent that level of user autonomy.
04:47 MTDiscord        <Jonathon> hey vrob, would you be up for looking at some formspec stuff?
04:47 erlehmann        uh, are CSM formpsecs still broken?
04:47 v-rob            Sure, which formspec stuff?
04:47 MTDiscord        <Jonathon> https://github.com/minetest/minetest/issues/11898 and https://github.com/minetest/minetest/issues/11907
04:48 erlehmann        https://github.com/minetest/minetest/issues/11700
04:48 MTDiscord        <Jonathon> i have a example out in the wild(pr for fixing it) https://github.com/mt-mods/travelnet/pull/32
04:49 MTDiscord        <Jonathon> is this something that would block 5.5?
04:49 erlehmann        oh my, this is horrible
04:50 erlehmann        i was not aware of that problm
04:50 erlehmann        problem
04:50 erlehmann        Jonathon, can the pattern be greped for in contentdb? i have an older cdb dump and some scripts to grep it
04:50 erlehmann        like, the pattern of close a formspec, open one again
04:51 MTDiscord        <Jonathon> it seems unknown if this is a server or client side.
04:51 MTDiscord        <Jonathon> erlehmann: im asking vrob
04:52 erlehmann        and 0.1 is enough of a delay to always win the race?
04:52 erlehmann        unclear to me from the info i have read
04:52 erlehmann        maybe appgurueu knows more
05:15 v-rob            Confusing bug...
05:16 MTDiscord        <Jonathon> is it client, server, both?
05:16 v-rob            Actually, I think I found it
05:17 v-rob            It might only happen in singleplayer, lemme check
05:18 v-rob            Well, maybe not
05:32 v-rob            I found the source of the bug.  It's an old one; it's been around since 5.0.0 at least, probably way, way longer than that.
05:32 MTDiscord        <Jonathon> is it client, server, both?
05:34 MTDiscord        <Jonathon> odd it finally surfaced now if its been around that long
05:35 v-rob            Both
05:36 v-rob            button_exit[] is clicked, client sends fields to server and destroys GUIFormSpecMenu directly after. However, before the client gets that far, the server sends a formspec right back, which then gets shown. Then the client destroys GUIFormSpecMenu, including the newly shown formspec.
05:36 v-rob            Nasty
05:37 v-rob            It looks difficult to fix cleanly.
05:37 v-rob            However, servers with highish latency shouldn't have this problem, so y'all should make the server lag out more :P
05:38 MTDiscord        <Jonathon> well, thats a new one
05:38 MTDiscord        <Jonathon> how does the issue occur?
05:39 v-rob            As far as I can tell, it's essentially a race condition between client and server
05:39 MTDiscord        <Jonathon> yikes
05:39 v-rob            It's pretty bad
05:39 MTDiscord        <Jonathon> is this a 5.5 blocker or?
05:40 v-rob            I'd guess no because it's been around such a long time, but IDK
05:40 erlehmann        v-rob please post your new knowledge to https://github.com/minetest/minetest/issues/11907
05:41 MTDiscord        <Jonathon> so probably need sfan5/other devs opinion or something
05:41 v-rob            I will, I'm just doing more testing
05:41 erlehmann        ok cool
05:41 MTDiscord        <Jonathon> Thank you for looking into ir v-rob
05:41 MTDiscord        <Jonathon> *it
05:41 v-rob            No problem
05:44 erlehmann        v-rob how about canceling GUIFormSpecMenu destruction if the client got a new formspec since the last button press or something?
05:44 erlehmann        by which i mean “why is this a bad idea?”
05:44 erlehmann        almost all “obvious fixes” are bad ideas, after all
05:46 erlehmann        https://gitlab.com/torkel104/libstrangle
05:46 erlehmann        > Cap the FPS (frames per second) of a chosen game by using the included script strangle Example:
05:47 v-rob            The difficulty is that GUIFormSpecMenu has almost no knowledge of when a new formspec is shown. This is also the cause of difficult problems like showing the same formspec with minetest.show_formspec not causing the formspec to be regenerated.
05:51 v-rob            Updated the issue
06:34 erlehmann        v-rob what do you think of declarative animations btw?
06:36 v-rob            They're certainly the proper way to do nearly all animations in a GUI
06:37 erlehmann        what animations would you not do with them?
06:39 v-rob            Assuming they're a good set of rules, you'd use them for all GUI animations. If you're doing something like a 2D game, of course, they won't be enough.
06:41 erlehmann        i still do not know what you mean by “they won't be enough”
06:42 erlehmann        you want shaders in your 2d images?
06:44 v-rob            "2D game". Try making Super Mario Bros. with only declarative animations.
06:45 erlehmann        right, you can only make games that have a limited state space with that
06:45 v-rob            Granted, that is starting to fall outside the realm of normal GUIs as the term is used, but Minetest does need to support such use-cases.
06:45 erlehmann        i wish i could just use svg for interface tbh
06:45 erlehmann        it's so damn clean to do everything in it
06:45 erlehmann        compared to … literally everything else i have seen
06:46 erlehmann        aren't dvd menus SMIL animations?
06:46 v-rob            No idea
06:47 erlehmann        i looked it up, yes
06:47 erlehmann        dvd menus and SVG use both smil
06:47 erlehmann        v-rob did you look at the SVG at my website?
06:47 v-rob            I definitely should use SVG myself sometime
06:47 v-rob            I had a brief look, yes
06:48 erlehmann        well if you ever have any svg questions, ask
06:48 erlehmann        i wrote every animation in there by hand
06:48 erlehmann        in emacs
06:48 erlehmann        it's super easy
06:48 v-rob            Will do
06:49 erlehmann        also, click the red square here, then watch the animation, then look at the source code http://daten.dieweltistgarnichtso.net/src/svg-smil-events.svg
06:50 erlehmann        SVG formspecs when
06:51 erlehmann        now i wonder
06:51 v-rob            Wow, that's pretty clean
06:51 erlehmann        if there is some drop-in library for this
06:52 erlehmann        v-rob now this ;) http://daten.dieweltistgarnichtso.net/src/svg-animation.html
06:53 erlehmann        one advantage i see in declarative animation btw is that it is impossible to mess up the state management
06:53 erlehmann        websites that animate using js often have weird races and get in some impossible state
06:54 erlehmann        css and svg animations can not have that by design
06:54 v-rob            I mean, there's Cairo, which I think supports SVG, but I think a lot of these libraries don't support hardware acceleration.
06:54 erlehmann        wdym?
06:55 erlehmann        you can just render it onto a surface though?
06:55 v-rob            Yes, but relatively slowly
06:55 erlehmann        chrome already has GPU acceleration for SVG and CSS
06:56 v-rob            I dunno, I haven't looked into it much
06:56 erlehmann        most CSS/SMIL animation is hardware accelerated in some way per https://mozillagfx.wordpress.com/2013/07/22/hardware-acceleration-and-compositing/
06:56 erlehmann        > Some canvas operations are very fast on the gpu (like blitting surfaces) but others are not (drawing bezier curves and shapes in general), so there is a trade-off and “hardware-accelerated canvas” is not always “accelerated” depending on what you are doing with your canvas.
06:58 erlehmann        > “achieving hardware acceleration” is the wrong goal. You should pursue performance and/or smoothness,
06:59 erlehmann        https://greensock.com/forums/topic/11842-hardware-acceleration-and-svg/
07:00 erlehmann        > GPUs work with a fixed number of triangles. Paths are not defined by triangles, nor do all the points of a path lie on the path itself e.g. Beziers.
07:01 erlehmann        v-rob btw the svg path attribute language is a neat little thing that might make sense in minetest for some things you want. not sure.
07:02 v-rob            You know, a little bit off the original topic, but I wonder what SVG in 3D would look like
07:02 v-rob            As in, make 3D shapes, animate them along 3D paths, etc.
07:02 v-rob            Sounds interesting
07:02 erlehmann        uh, that's relatively simple. let me see if i have something for you.
07:03 erlehmann        v-rob http://daten.dieweltistgarnichtso.net/src/political-compass-surreal.html
07:03 erlehmann        there is zalgo text in there, so it might have rendering errors
07:04 erlehmann        note that the hyperlinks are clickable
07:04 erlehmann        and that, again, everything is purely declarative
07:04 v-rob            Well, there we go. SVG's pretty fancy
07:05 erlehmann        as i said, give me your svg questions and i shall answer ^^
07:06 erlehmann        regarding hardware accelleration, that space thing actually is something that i have checked worked on >10 year old phones with ~256 MB RAM or so
07:06 erlehmann        no idea if it was accelerated, but it was smooth
07:07 v-rob            Well, I guess I didn't know quite as much as I thought.
07:07 erlehmann        that's always a good thing to happen. now you have new things to think about and tinker with!
07:08 erlehmann        once youk now a bit of svg, i suggest to check out <svg:use>
07:08 erlehmann        you can basically include subtrees, i.e. have icon libraries
07:08 erlehmann        hmmm
07:09 erlehmann        now i wonder if this can be used to have a simple portable include mechanism without frames
07:09 erlehmann        in xhtml
07:09 erlehmann        by using the <svg:use> to include a some <svg:foreignObject> that has xhtml in it
07:09 erlehmann        would be super useful if that works
07:10 v-rob            That would be really nice. Frames would be great if they worked better.
07:10 erlehmann        the thing with including a subtree is: you can actually include some icon from an svg file, then have the site css apply to it
07:10 erlehmann        (it would not apply to iframe content)
07:12 erlehmann        v-rob btw, if you want to move something along a path in 3d space, i think you will have to have a 2d path (since the path language is 2d) and rotate the path in 3d space when you want it to change direction.
07:12 erlehmann        maybe there is a less hacky method, not sure.
08:36 hlqkj            hello, is there someone who can help me with building mt on Mingw64?
08:40 MTDiscord        <Sublayer plank> cross-compiling for windows on linux or are you on windows?
08:42 MTDiscord        <Sublayer plank> there's buildbot scripts in util/buildbot/ for building for windows on linux, idk if they can be used on windows as well
08:46 hlqkj            I am on windoes
08:47 hlqkj            already using the buildbot.sh script, but i get a weird error on CheckSymbolExists for ZSTD
08:47 hlqkj            ld can't find the file at the path, yet it's there
08:47 hlqkj            C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find /d/minetest/minetest/winbuild/libs/zstd/lib/libzstd.dll.a: No such file or directory
08:48 MTDiscord        <Sublayer plank> are you trying to build stable 5.4.1 or the latest development version?
08:48 hlqkj            master
08:48 hlqkj            i can try stable, didn't think at that sry
08:49 hlqkj            oh actually, idk if it's the buildbot script checking things out for me?
08:50 MTDiscord        <Sublayer plank> yeah it does. you can change the branch name inside the script to I think it's stable-5 to switch to building 5.4.1
08:50 hlqkj            ok, i
08:51 MTDiscord        <Sublayer plank> it clones a separate copy for the repository from the specified branch, but for building with local changes there's an environment variable to specify an existing directory
08:51 hlqkj            *i'll try
10:32 sfan5            the buildbot script is only tested on linux for cross-compilation
10:32 sfan5            if you have a mingw environment on windows you can probably install all deps from its package manager much easier
10:33 sfan5            and just run cmake, make manually then
10:34 MTDiscord        <luatic> [OFF] yep I was right: string.char(0x77, 0x73, 0x6F, 0x72) == "wsor"
10:39 MTDiscord        <Sublayer plank> erlehmann: so the tga encoder has been broken on windows ever since you implemented the RLE compression?
10:39 erlehmann        Sublayer Plank so the thing is, the encoder did not work on windows, but devs and servers run linux
10:39 erlehmann        Sublayer plank, yes, but that was relatively recently. before, it apparently corrupted some images, but the header did not contain \n
10:40 MTDiscord        <luatic> side note: minetest.safe_file_write should work fine with binary files
10:40 erlehmann        let me look it up
10:40 erlehmann        i did not write the file code. i guess we need a unit test for that.
10:41 erlehmann        oh, also: i guess i should rework my tga devtest nodes to actually *generate* the textures
10:41 erlehmann        some time in the future
10:41 erlehmann        Subplayer plank, just out of curiousity, the devtest test nodes work fine?
10:41 erlehmann        the ones from https://github.com/minetest/minetest/pull/11978
10:42 erlehmann        luatic are there other ways that minetest can mangle files?
10:42 erlehmann        luatic or is this the only thing?
10:43 MTDiscord        <luatic> huh? MT doesn't mangle files AFAIK
10:44 erlehmann        so this is a general lua thing i assume
10:44 erlehmann        that depending on the platform bytes are replaced unless you set binary mode?
10:44 MTDiscord        <luatic> not only a Lua thing - if you want to write binary files, always use "wb"
10:44 erlehmann        ok!
10:45 erlehmann        luatic oh, i did “man 3 fopen” and it says the b is ignored on POSIX and linux, but “non-UNIX” environments might need it
10:46 MTDiscord        <Sublayer plank> erlehmann: yeah all of the devtest tga test node textures work fine
10:46 erlehmann        cool
10:46 erlehmann        Sublayer plank so if you set the mode for the tga_encoder to wb, can you reproduce the “sometimes the map does not show up” thing?
10:46 MTDiscord        <Sublayer plank> also it's just a general thing that omitting "b" puts the file writer in plain text mode, which converts EOL to the platform default. python does this too
10:46 MTDiscord        <Sublayer plank> alright will do
10:47 erlehmann        i guess i have used linux and mac for too long
10:47 erlehmann        but good to know
10:47 erlehmann        luatic i guess it makes total sense that the PNG magic value has \r\n in it hihi
10:48 erlehmann        always funny when during debugging you find another bug
10:50 MTDiscord        <luatic> PNG is actually a decent spec, it just has it's fair share of bloat
10:51 MTDiscord        <Sublayer plank> erlehmann: changed the mode to wb and now it writes proper TGA images, and can also reproduce the fact the map texture does not show up sometimes (5.5.0-rc1)
10:51 erlehmann        Subplayer plank that means dynamic media is broken in 5.5 i guess
10:51 erlehmann        was it recently rewritten?
10:51 erlehmann        like … an incompatible change?
10:51 MTDiscord        <luatic> there was the dynamic media v2 rewrite
10:52 erlehmann        i think maybe minetest needs to be forked into some game engine which is almost exactly like it, only all the incompatible changes are not in it
10:52 MTDiscord        <luatic> @floofy ralsei have you checked the warnings?
10:52 MTDiscord        <luatic> my recommendation: always set the chat log level to warning
10:52 erlehmann        Subplayer plank is there anyhing that you can figure out about this?
10:53 erlehmann        luatic what in the rewrite could have broken dynamic media from 5.4.1?
10:53 MTDiscord        <luatic> IDK if it wasn't always broken, but sfan5 recently added a warning if a race condition prevents it from working
10:53 MTDiscord        <luatic> So I'd be worthwhile to check if that warning appears
10:53 MTDiscord        <luatic> it'd be*
10:53 erlehmann        for me, it definitely was not always broken like that
10:54 erlehmann        i mean maybe there was a race condition, but you always won the race
10:57 MTDiscord        <Sublayer plank> what would the "race condition warning" be? I only get the 'generateImage(): Could not load image "mcl_maps_map_texture_27.tga" while building texture; Creating a dummy image' error even with my chat log level set to action
10:57 MTDiscord        <Sublayer plank> anyways I can in fact reproduce the fact the map textures always do show up in 5.4.1 though
10:59 erlehmann        i have a log
11:00 erlehmann        luatic does this look like the race that sfan5 mentioned? https://mister-muffin.de/p/ItLK.txt
11:00 MTDiscord        <luatic> https://github.com/minetest/minetest/commit/379473b67007abf78d87ebbaf925b4948cf72ae6
11:00 erlehmann        it seems that the file is generated and sent, but then the client assumes it does not have it, even though it does, indeed, have it
11:02 MTDiscord        <luatic> ah yes, that's because dynamic media has been changed to use a callback
11:02 MTDiscord        <luatic> you must ensure in your mod code that the client has received it already, as dynamic media isn't blocking anymore
11:03 MTDiscord        <luatic> so this is in fact not the race condition I had in mind
11:03 erlehmann        well this is not my mod
11:03 erlehmann        another incompatible change
11:03 erlehmann        i will file an issue
11:03 MTDiscord        <luatic> why would you file an issue?
11:04 MTDiscord        <luatic> https://github.com/appgurueu/epidermis/blob/master/dynamic_add_media.lua#L27-L59 is how it can be done BTW
11:04 erlehmann        well the thing is
11:04 MTDiscord        <luatic> this is IMO the mod author's fault
11:04 erlehmann        this rug-pulling has to end
11:04 erlehmann        why
11:04 erlehmann        this worked in the past?
11:04 MTDiscord        <luatic> the feature was always considered experimental
11:05 erlehmann        look, i'll file at least an issue so that i can link to it and collect the knowledge
11:05 erlehmann        and then i fix it in mineclonia
11:05 erlehmann        but this is super shitty from an API standpoint
11:05 erlehmann        like why not call it minetest.dynamic_add_media2
11:05 MTDiscord        <luatic> it's not, experimental means devs are free to do whatever they want
11:05 erlehmann        if the entire calling paradigm is changed
11:05 erlehmann        yeah, sure
11:06 erlehmann        i think devs should take reality into account. reality is: no one cares if something is marked experimental, if it works in the default install
11:06 erlehmann        web browsers have had this with prefixed css properties
11:06 MTDiscord        <luatic> NTM that dynamic_add_media had a callback already to ease migration (that was called immediately though and not per player IIRC)
11:06 erlehmann        NTM?
11:07 MTDiscord        <luatic> Can you link the relevant mod code? If the callback isn't used at all, this is clearly on the mod authors.
11:07 MTDiscord        <luatic> not to mention
11:08 MTDiscord        <Sublayer plank> does claiming it to be "experimental" really excuse breaking compatibility like this
11:09 MTDiscord        <luatic> yes
11:09 MTDiscord        <luatic> NVM, 5.4.1 already had the per-name callback
11:10 MTDiscord        <luatic> So this is 100% on the mod authors who assumed undocumented and frowned upon behavior for an experimental feature
11:10 MTDiscord        <luatic> https://github.com/minetest/minetest/blob/5.4.1/doc/lua_api.txt#L5455-L5456
11:11 MTDiscord        <luatic> 5.3 probably didn't have the callback?
11:11 erlehmann        luatic it does not matter who is at fault
11:11 MTDiscord        <Sublayer plank> where does it say it is experimental?
11:11 MTDiscord        <luatic> argh indeed this was broken: https://github.com/minetest/minetest/blob/5.3.0/doc/lua_api.txt#L5233-L5236
11:11 erlehmann        it reminds me of hitchhikers guide to the galaxy
11:12 MTDiscord        <luatic> 5.3.0 it used to be "blocking", even documented
11:12 MTDiscord        <luatic> So yes, this is on the MT devs
11:13 MTDiscord        <luatic> But should they really have preserved the very dirty initial API, which sent all media twice and basically blocked everything else (all other packets) while sending media?
11:13 erlehmann        yes
11:15 MTDiscord        <luatic> Fine, file an issue if you want - this is indeed breakage of documented features between minor versions
11:16 erlehmann        luatic, i have a word for changing the API while you try to avoid bugs like sending stuff twice or race conditions
11:16 erlehmann        it's called refucktoring
11:16 erlehmann        a known agile technique!
11:16 erlehmann        (i am joking of course, agile devs usually have unit tests)
11:18 erlehmann        Sublayer plank, you are krock?
11:18 erlehmann        on github?
11:19 MTDiscord        <Sublayer plank> no lol, I'm ROllerozxa
11:19 erlehmann        ok!
11:19 erlehmann        thx
11:19 erlehmann        are you a core dev?
11:20 erlehmann        i am asking bc i want approval for the TGA test nodes before i make more test nodes for more complicated formats, in particular PNG
11:20 erlehmann        i am pretty sure there are bugs that are platform-specific
11:21 MTDiscord        <Sublayer plank> I'm not a coredev, but I do hope the TGA test nodes do be merged
11:21 erlehmann        i think all variants of all file formats should have demo files in devtest
11:21 erlehmann        i actually compared your file against the devtest textures because they are known-good
11:23 MTDiscord        <Sublayer plank> yeah definitively. might not be as useful for png and jpeg since they mostly use standard libraries (libpng and libjpeg) for working with them but TGA is irrlicht's own code we need to maintain
11:23 erlehmann        well
11:23 erlehmann        i think especially then it makes sense
11:23 erlehmann        because the user might have a different version of libpng or libjpeg
11:24 erlehmann        so figuring out if some variants of textures do not show up becomes even more important
11:24 MTDiscord        <Sublayer plank> yeah that's true actually
11:24 MTDiscord        <Sublayer plank> having too much tests is always better than not enough tests :)
11:24 erlehmann        tga is so simple everyone of us can write a decoder in a day and make it bulletproof in a week
11:24 erlehmann        other formats. not so much
11:25 erlehmann        luatic btw i figured out why gamedevs still use TGA. it seems to be the simplest format supported by software (like gimp) that allows having a true alpha channel. all other simple formats either lack it or only have an alpha bit.
11:26 erlehmann        also libjpeg-turbo uses it for reference pictures
11:27 erlehmann        Sublayer plank, btw mineclone5 is the “merge all the things” mineclonia variant. it also has like 2 crossbows and at least one of them makes colorfull fireworks.
11:27 erlehmann        basically kay27 (the maintainer) just picks a lot of stuff up
11:27 erlehmann        without reviewing it more than “does the game start”
11:27 erlehmann        i mean, maybe a bit more.
11:28 erlehmann        but he thinks that having more features is better. whereas mineclonia is the opposite, we take forever, but then it absolutely has to work.
11:28 erlehmann        which is also why i find bugs all the time.
11:28 erlehmann        minetest bugs that i do not find through fuzzing are usually a side effect of mineclonia code reviews
11:41 sfan5            <luatic> argh indeed this was broken: https://github.com/minetest/minetest/blob/5.3.0/doc/lua_api.txt#L5233-L5236
11:41 sfan5            this api was deprecated in 5.4.0 specifically because it was obvious that it's not viable to keep
11:42 sfan5            and with 5.5 the deprecation period has ended and the old usage no longer works
11:45 erlehmann        cool, please call the next release 6.0 i guess
11:46 erlehmann        given that we just *now* figured it out, i think this whole API change deprecation thing is totally unworkable in the long-term
11:46 erlehmann        and you already pointed out that you can just name the new API differently
11:46 sfan5            maybe read the warnings the game gives you
11:47 MTDiscord        <luatic> Depends. dynamic media wasn't used widely enough to warrant a longer deprecation period.
11:47 erlehmann        look if the new function had a different name, it would OBVIOUSLY break
11:47 MTDiscord        <luatic> sfan5: hence my recommendation to turn chat log level to warning if you're a mod dev ;) literally can't oversee it then
11:47 MTDiscord        <luatic> s/oversee/miss
11:48 erlehmann        first you add send_dynamic_media2, then later when you remove send_dynamc_media in a minor update, everything relying on it breaks obviously
11:48 erlehmann        and not silently
11:48 erlehmann        instead of that, we get a function that changes from synchronous, to synchronouos but optionally callback, to callback
11:49 sfan5            your proposal is all cool but I haven't heard why you can't read warning messages
11:49 erlehmann        mineclone5 is not even my mod
11:49 erlehmann        kay27 maintains it
11:50 erlehmann        mineclona has a maps branch, but in the process of figuring out if stuff works, i encounter bugs (about half of them engine breakage, half of them “how did this ever work” stuff like the binary writing thing on windows)
11:53 MTDiscord        <luatic> I've brought this up a while ago but nothing has changed so here it is again, paired with a bit of irony: #11998
11:53 ShadowBot        https://github.com/minetest/minetest/issues/11998 -- Too damn many unconfirmed bugs
11:53 erlehmann        phew, i commented my sarcasm just in time!
11:54 erlehmann        https://nikolas.github.io/github-drama/
11:56 erlehmann        i think this was my best issue speedrun yet
11:56 erlehmann        though i do not appreciate the outcome, thanks for the debugging help Sublayer plank and luatic
12:45 MTDiscord        <MisterE> Just wondering, is it planned to allow light sources to cast dynamic shadows in the future?
12:46 erlehmann        MisterE i thought so, which is why i constantly keep saying that a nonexistent *sun* or *moon* should not cast shadows, but on the other hand a shadows API should allow people to define angle or source of shadow casting light sources
12:46 erlehmann        even if a sun or moon does not exist
12:46 erlehmann        like deep underground
12:46 rubenwardy       afaik, it's not planned
12:47 MTDiscord        <luatic> MisterE: unlikely
12:47 MTDiscord        <luatic> it is very nontrivial to implement in an efficient manner
12:47 erlehmann        rubenwardy just to be clear, forum rules do not apply here, do they? v-rob brought it up and i think he is mistaken, but you have OP here so i better ask.
12:48 MTDiscord        <MisterE> Hmm... it just seemed to me that having the sun cast shadows but not eg torches eas incoherent :|
12:48 MTDiscord        <MisterE> *was
12:48 MTDiscord        <luatic> it is
12:48 MTDiscord        <luatic> but rendering as a whole is basically a mess, as you have to compromise on realism for performance
12:49 MTDiscord        <luatic> the way shadow mapping works, a depthmap of the scene is rendered from the perspective of the light source to determine where shadows should be cast
12:50 MTDiscord        <luatic> for multiple light sources, you'd have to rerender the scene for each light source
12:51 MTDiscord        <MisterE> yes but correct if wrong, you only have to render to a distance of 10 for a torch
12:51 MTDiscord        <luatic> perhaps an approximation suffices - such as only doing this for a couple close light sources or reducing shadowmap resolution for small light sources
12:51 MTDiscord        <MisterE> Which is much simpler than rendering the whole scene for the sun
12:51 MTDiscord        <luatic> MisterE: yes, optimizations may be possible, but this is still hard to implement efficiently
12:52 MTDiscord        <luatic> I mean, even a render distance of 10 will probably have the GPU do lots of work
12:52 MTDiscord        <luatic> MT currently generates meshes per mapblock, so the GPU has to render the entire 16^3 mapblock
12:53 MTDiscord        <luatic> It can then discard faces as after transforming them if it sees they are out of range
12:54 MTDiscord        <luatic> But a proper implementation would require lots of carefully tweaked ducttape
12:55 erlehmann        i think optifine has it though
12:55 erlehmann        whatever, i am fine with the torch fakery that destroys rollback
13:15 MTDiscord        <luatic> #10741 must be reopened. I feel devs never test with TPs with empty hearts.
13:15 ShadowBot        https://github.com/minetest/minetest/issues/10741 -- Health & breathbar ignore max properties
14:58 erlehmann        rubenwardy i do not want to cause undue load on your server, but would like to update my local cdb search. can you tell me where to find the latest dump?
15:37 erlehmann        luatic how can i make a dynamic-add-media that works in all situations from 5.3 to 5.5?
15:38 erlehmann        do you have something like that?
16:17 MinetestBot      02[git] 04sfan5 -> 03minetest/minetest: Add game name to server status string 1391c6728 https://github.com/minetest/minetest/commit/91c6728eb8cebf060b5a3aaed588a7b6dbf266ad (152022-01-28T16:15:10Z)
16:17 MinetestBot      02[git] 04sfan5 -> 03minetest/minetest: Get rid of legacy workaround in SQLite backend 1366e8aae https://github.com/minetest/minetest/commit/66e8aae9f2a28ee31ffe30694fdb61a8fdceb8d7 (152022-01-28T16:16:02Z)
16:18 erlehmann        luatic rebase this? https://github.com/minetest/minetest/pull/11940
16:19 erlehmann        not sure if you get a mail or notification from a simple label
16:19 sfan5            don't think so
16:59 MTDiscord        <Jonathon> >how can i make a dynamic-add-media that works in all situations from 5.3 to 5.5? dynamic media wasnt even in 5.3. you would have to use [combine hacks
17:01 erlehmann        https://github.com/minetest/minetest/blob/5.3.0/doc/lua_api.txt#L5233-L5236
17:01 erlehmann        * `minetest.dynamic_add_media(filepath)`
17:01 erlehmann        tell me again it was not there
17:01 erlehmann        Jonathon did it not work?
17:07 sfan5            it did work
17:10 freshreplicant[m erlehmann: The Minetest wiki's IRC page has rules on it. Not sure if they're up-to-date. https://wiki.minetest.net/IRC (bottom of page)
17:11 erlehmann        sfan5 i have since investigated mineclone5 and found that in between minetest.send_dynamic_media() must have *both* accepted a callback *and* blocked. which is a bit weird.
17:12 erlehmann        is that true?
17:12 sfan5            yes
17:12 sfan5            this is the case on 5.4.0
17:12 erlehmann        no wonder that the callback was empty then
17:12 sfan5            the callback was added to prepare for the changes now in 5.5 but the implementation was not changed
17:12 erlehmann        there was nothing to do after all
17:13 erlehmann        i do not think that is a good way to handle it, since that means it will not crash, but be racy.
17:13 sfan5            well this was done so mod authors could already make use of the callback to write code that would seamlessly work on 5.5 (once it comes out)
17:13 erlehmann        any other APIs that were changed from blocking to non-blocking?
17:14 erlehmann        i mean, if devs insist on breaking stuff all the time, maybe it belongs into the release notes
17:14 erlehmann        i mean, code in a big project is *rarely* changed
17:15 erlehmann        if it still works
17:15 sfan5            so let me get this straight
17:15 sfan5            you are still blaming coredevs instead of the person who commited the empty callback without reading the docs or any warnings?
17:15 sfan5            plus whoever reviewed it (you do have a review process, right?)
17:16 erlehmann        i am not blaming anyone, i want the breakage to stop. i literally do not care.
17:16 erlehmann        who messed it up.
17:16 erlehmann        i mess up stuff all the time, but it gets caught in reviews usually
17:16 erlehmann        so i would probably say the reviewer had not the standards i would have, but you don't even let me review stuff (i asked)
17:16 sfan5            if you do not care why why aren't you yelling at passerby's on the street?
17:16 sfan5            after all they share equally much blame
17:16 erlehmann        i care about the breakage, not who messed it up
17:17 erlehmann        and also that there is a persistent pattern of people breaking APIs and expecting some code written years ago would magically be updated
17:17 sfan5            I hope you went and annoyed the mineclone5 dev equally then
17:18 erlehmann        i believe jordan4ibanez has a lot of stories about me annoying mineclone* devs lol
17:18 erlehmann        sfan5 can you maybe tag @kay27 in the issue? i can't, since you locked it
17:18 erlehmann        he is the lead of mcl5
17:18 sfan5            you can send them a link
17:19 erlehmann        no idea how to reach, but then i'll open an issue on mcl5 i guess
17:19 erlehmann        after eating
17:19 erlehmann        btw, i think my big problem with the coredev API breaking thing is that it practically does not result in smooth upgrades
17:20 erlehmann        processes to do that do exist though, it's not a question of capability. minetest has protocol versions and funny hacks.
17:21 jordan4ibanez    My brain has become too overcooked to remember right no
17:22 erlehmann        well, i doubt mcl2 and mcl5 are going anywhere fast
17:22 jordan4ibanez    no->now
17:26 erlehmann        jordan4ibanez you should update this bc the API different in 5.5 due to sentimental versioning scheme https://github.com/oilboi/Crafter-Minetest/blob/b33c96b3f99f8faf8ccf7bc3760f8f1f74a45832/mods/skins/init.lua#L73
17:27 erlehmann        by which i mean unexpectedly broken
17:28 erlehmann        unless you read the lua API file again
17:28 erlehmann        :P
17:31 jordan4ibanez    Oh that game mode is pretty dead for now, perhaps one day I will rewrite it in a more data oriented cache happy approach to minimize volatile memory utilization and maximize on chip branch prediction
17:32 erlehmann        wdym
17:32 jordan4ibanez    localizations littered throughout the code, pretty disgusting
17:32 erlehmann        are you making fun of me?
17:32 erlehmann        oh
17:32 erlehmann        that
17:32 erlehmann        well
17:32 erlehmann        it's not like lua is *that* slow unless you create a lot of strings
17:33 jordan4ibanez    JIT maps it's data translation to C pretty closely, all those localizations need to be mapped to the central station of the linear loading model so that all functions utilize an already cached memory pointer instead of stack memory, or maybe they need to all be on the stack unless local primitive floats in a function get mapped to the heap anyways, I am unsure of this
17:36 jordan4ibanez    Pretty extreme edge cases of snake case causing issues like this where when I was re-reading my own code I thought I misspelled "read" but it is re-add https://github.com/oilboi/Crafter-Minetest/blob/b33c96b3f99f8faf8ccf7bc3760f8f1f74a45832/mods/skins/init.lua#L320
17:36 jordan4ibanez    An absolute mess
17:38 erlehmann        oof
17:39 jordan4ibanez    Another major things is, is it more efficient for the item entity to get the players, or is it more efficient for the players to get the item entities? Should the item entities just be held in their own table where the elements are the pointers to the item with the only gotten data value is the Vector3f of their position to quickly do math without getting the objects? Just too much to think about
17:40 erlehmann        well good that you mention those
17:40 erlehmann        you once made a pretty good player magnet
17:40 erlehmann        that did not have the lag pingpong problem
17:41 erlehmann        do you have a cleaned up version of it or want to explain what your code does?
17:41 erlehmann        bc i do not understand it
17:41 jordan4ibanez    Yes because it utilized move_to but you cannot set the interpolation speed of move_to so it was using the internal delta to interpolate which for some reason does not stay consistent with it's normalization
17:42 erlehmann        uh
17:42 erlehmann        i do not understand that
17:42 erlehmann        what is the normalization in this context?
17:44 jordan4ibanez    normalization of a direction which is a vector 3 float in this context is taking 2 vectors, subtracting VecX from VecY to get a direction, then normalization takes the points from these, gets the biggest one, gets the dividend from it to make it equal to 1, and then divides the other two values to get a normalized vector direction
17:44 jordan4ibanez    That is what the regular item drop uses, in this case, this is happening in engine to do the same thing, but client side
17:48 erlehmann        so what you worked out is how the client side prediction and the server position can match closer ig?
17:55 jordan4ibanez    Here https://paste.ofcode.org/6ChiVqTKAnUSAatZTfsyEC
17:55 jordan4ibanez    :O and that's why you do not use tabs instead of spaces
17:56 erlehmann        thx
17:57 jordan4ibanez    Oh wait what I explained is an older version of item magnet, this one just avoids shooting out by adding in the player's velocity https://github.com/oilboi/Crafter-Minetest/blob/b33c96b3f99f8faf8ccf7bc3760f8f1f74a45832/mods/itemhandling/init.lua#L289
17:59 jordan4ibanez    I think I literally explained why I didn't use move_to, whoops
18:09 erlehmann        sfan5, by the way, i looked at the deprecation warning for minetest.dynamic_add_media … and i believe ppl did indeed read the warning at one point – but the warning only says you have to give a callback function. there is nothing in the warning about that the function will stop being blocking. only that calling it without a callback is deprecated.
18:09 erlehmann        but then in the code, the callback is literally called synchronously, so no wonder ppl add an empty callback
18:10 erlehmann        probably just assumed weird api design
18:10 erlehmann        i would have done the same
18:10 erlehmann        (added an empty function)
18:10 erlehmann        i guess that clears it up then
18:12 erlehmann        jordan4ibanez, can i copypaste that to mineclonia under GPLv3+?
18:13 jordan4ibanez    Yeah it's MIT you can just change the license
18:14 erlehmann        those are two different statements
18:14 erlehmann        conrary to popular opinion, you can not just change the license
18:14 erlehmann        but add to id
18:14 erlehmann        it
18:14 erlehmann        i will do
18:14 erlehmann        thank you jordan4ibanez
18:14 erlehmann        that was nice
18:15 jordan4ibanez    I guess you can just take a screenshot of this statement
18:15 jordan4ibanez    I expressly give you permission to relicense my code boi
18:15 erlehmann        ah ok!
18:15 erlehmann        btw, what is the best version of crafter if i want to try it
18:15 erlehmann        i saw your exremely dangerous spiders
18:15 erlehmann        and minecart trains
18:15 erlehmann        and i still remember them
18:16 jordan4ibanez    I wasn't allowed to use code licenses to relicense under any license besides BSD but BSD is boring
18:18 MTDiscord        <Warr1024> Of all the criticisms I've seen of BSD as compared to MIT, this is the first time I've heard "boring"
18:20 jordan4ibanez    Probably 0.07 but I didn't make any releases for some reason because I have no brain
18:24 jonadab          My personal favorite is when people claim the BSD license isn't GPL compatible.
18:32 jordan4ibanez    I wonder how optimized the JIT can truly be with pure function oriented approach
18:45 MTDiscord        <Warr1024> Which BSD license tho
18:45 MTDiscord        <Warr1024> You're not still talking the ancient 4-clause, are ya?
22:05 jordan4ibanez    What if: Hand can be custom mesh
22:08 sfan5            can't it already?
22:09 MTDiscord        <Jonathon> if i recall correctly no
22:09 MTDiscord        <Jonathon> as its a item
22:10 MTDiscord        <Jonathon> it can be a mesh if you use the hand inventory
22:10 MTDiscord        <Jonathon> and a node def
22:15 sfan5            ah yes I remember
22:15 sfan5            there was even an issue about ":" being a node breaking existing worlds
22:15 MTDiscord        <Jonathon> and a pr