Time Nick Message 00:40 MTDiscord Yes, this was a good call to check. There are some weird behaviors in here, for now I'm withdrawing my approval until the relevant values are handled properly 00:41 MTDiscord Special mention goes to minetest.string_to_area, which sometimes allows ~nan and sometimes doesn't, depending on what position in the vector it is 00:43 MTDiscord Anyway, thanks again for the suggestion. I've been a little out of it for the past week or two, hopefully things clear themselves up soon 00:44 erle Hugues Ross happy to help! 01:06 MTDiscord What if it's the windows kernel task scheduler itself causing problems for minetest on windows? 01:24 erle jordan4ibanez what kind of problems would be connected to that? 09:04 sfan5 > core.parse_relative_number will parse them though, so if some mod uses that function … possible boom! 09:04 sfan5 the function should be made private, mods aren't supposed to use it 10:09 erle sfan5 i strongly disagree. 10:09 erle given that there are already functions like /setblock that could benefit 10:10 erle or, for example, structure placement functions 10:10 erle i would *love* to have a function that enables me to place some structure 10 nodes in x+ direction from me or so 10:10 sfan5 what does this have to do with the engine? 10:11 erle it's a convenience function. why should it be reimplemented? 10:11 erle also, just to make it clear, people are generally bad at parsing 10:11 erle a bunch of mods reimplementing it leads to worse code and probably incompatbile too 10:14 sfan5 putting it into the API puts it under the guarantees of compatibility which can be an obstruction to future changes 10:14 erle sfan5 in mineclonia, there are the following commands that could benefit from it: lightning setblock spawnentity/summon setblock 10:14 erle all of those take a position and could be more useful if they took a relative position 10:14 erle i imagine a lot of mods gave commands that take positions 10:15 erle so it makes sense to me to offer them a way to unify parsing for relative positions 10:17 erle sfan5 you are 100% correct about that publicly exporting a function prevents changing it. but in this case, the scope is so small that it is possible to get it right the first time – i.e. define a grammar for it, thenr make it accept that grammar (and only that). 10:18 sfan5 so for what reason should the engine do this, again? 10:24 erle to prevent mod authors from writing bullshit code when they face the same problem 10:24 erle i have seen the same issue with durability calculations already 10:25 erle everyone implements it, but everyone except wuzzy implemented it wrong 10:25 erle giving an error that is as small as 1 or as big as 32000 or so 10:26 erle if the engine just had exposed a function to calculate the number of uses a tool had, this could have been avoided – or at least fixed, because the engine calculation *was* wrong and is now right thanks to the “bresenham's axe” algorithm that wuzzy built. 10:26 erle so now mods that have some “remaining uses” display are still wrong, unless i am misinformed. 10:27 erle as i said before, parsing is hard – as evidenced by me finding parser bugs in builtin commands btw. 10:28 erle i much prefer if a problem is solved in the engine than if 1000 monkeys reinvent the wheel on 1000 typewriters, but their weel is rectangular 10:29 sfan5 durability calculation is an implementation detail of the engine that mods have to deal with, relative positions are not 10:30 sfan5 if you want the engine to set a standard every mod is supposed to use (though a bit late for that) then that's okay, but should it? 10:31 erle kinda, yes 10:31 erle also regardless of how much i moan about minetest API woes, the review work is *much* better than what most mods get 10:32 erle so there is a much higher chance to get it right in the first place 10:32 sfan5 and if yes that begs the question why this and not a million other things, e.g. builtin has time parsing, command line flags and probably a bunch of other things that are potentially useful 10:33 sfan5 s/$/ to mods/ 10:33 erle given the amount of bugs i have seen in custom commands i doubt it would be a *bad* thing to at least make the things that are used for builtin commands bulletproof enough so they can be exported 10:34 erle also, why this? because this is the issue currently at hand. i see potential. this function can literally be made perfect, as in: never needs to change in an incompatible way – since the scope is so small. 10:35 erle also there has been a long-standing desire in mcl2 to have this kind of parsing, but they never got to it 10:35 erle as far as i know 10:35 erle it's relatively low effort for high gains. i can add some adversarial tests if that is desired. 10:36 erle to make sure it won't blow up if some griefer with a grudge uses the chat console and types in the first thing that comes to mind 10:37 sfan5 that argument also works in reverse: if it's so low effort why hasn't the game you keep mentioning managed to implement it themselves? 10:38 erle i may have failed at conveying the argument in a proper way. let me try again. 10:38 sfan5 no you have not, I am just annoyed you keep mentioning "look, mcl2 can use it!!!" at every opportunity 10:38 erle a single game needs to start at zero for their parsing code. whereas the PR already here has very low *additional* effort. 10:39 erle because the majority of the work is already done. it is almost finished. 10:39 erle also the payoff for a single mod or game is that maybe 4 or 5 commands can use this typically. 10:40 erle the pay off for minetest having this in the API is everyone being able to use player-relative positions for commands that previously only took absolute positions, with a simple change. 10:40 erle so the effort/reward calculation is, as i see it, massively skewed in terms of having it in the API. 10:41 erle even without the “joe random coder will fuck it up if asked to parse a relative position” 10:42 erle the answer to “why hasn't the game managed to implement it themselves” is “i think someone started doing a general command parsing overhaul and it stalled because they bit off more than they chose”. it's certainly not a huge task. it's just a task and there are others. 10:42 erle chose → could chew 10:42 erle i am really getting worse at languaging, sorry 10:43 erle sfan5 if “could anyone use this API” is not an argument, then what is? maybe you could make it clear what exactly would convince you or has convinced you in the past. 10:46 erle and i keep bringing up mcl2 because a) i know stuff about it b) it's popular c) it's a good example of how people invent their own stuff if the engine does not provide it, sometimes badly 10:51 erle sfan5 ultimately, i think that the minetest API should be influenced by the needs of mods and by architectural decisions that try to limit the amount of bugs in mod code under the assumptions that mod devs will do the minimum effort to get something to work. 10:51 erle maybe you have different ideas regarding that 19:07 Pexin As a matter of future-proofing, if relative numbers will be solidified as part of the API, I still feel ~ will be confusing. since in lua it's "not", and elsewhere it's "roughly" 19:07 Pexin @ = "at" = "current", allowing @+100 @-100, feels much more logical to me 19:07 Pexin I understand this has been in the queue for way too long, and nobody wants to think about it anymore, but.. there it is 19:15 MTDiscord @ sounds like a decent suggestion to me 19:59 erle Pexin, you keep saying that, but ~X ~Y ~Z has been used in minecraft for over 10 years. the reason people do not agree with you is not that “nobody wants to think about it anymore”, but because the most popular voxel game using relative coordinate notation uses a tilde. 19:59 erle well, you can correct me on the 10 years, i may be wrong here. but it is a long time. 20:00 erle also, if you want to bikeshed it, why not use Δ ? 20:00 erle ~ in location has a lot of meanings. some GIS systems use it to mean “degrees”. 20:02 erle pexin luatic the problem with @ is that ultimately you can construct at least *two* notations for relative coordinates that take the current location as the origin. the first one being ~x ~y ~z, the second one being ^x ^y ^z. 20:03 erle where ^ would apply the rotation of the player for the relative coordinates 20:04 erle i.e. “/summon zombie ^ ^ ^1” would summon a zombie 1 node-width in front of the user 20:05 erle or behind? i do not know lol 20:07 erle regardless, what i'm saying is: there is another application doing the exact same thing in a voxel world. deviating from it because “it is more logical” creates friction. and about the meaning of tilde … there is like soooo much if you start leaving the context of “what could it mean in a voxel game user command?”. 20:07 Pexin are we minecraft? 20:07 Pexin also does minecraft use lua? 20:08 erle not at all, but which character to choose is essentially arbitrary. so the easiest choice is to just go for what a lot of people know. it reduces friction. 20:09 Pexin is the assumption that most people are coming from minecraft? 20:09 erle i think you misunderstand me. i do not even play minecraft and the ~x ~y ~z notation got to me via cultural osmosis. 20:12 erle also the argument “tilde will be confusing” is absolute bollocks. tilde can mean a lot of things *outside of voxel game input commands*, like “approximately” (in english language), “not” (in lua), “user home directory” (in unix and URLs), nasalization (IPA), range (~3 can mean “up to three” in some cultures), sarcasm mark (japanese?), equivalence (math) … 20:12 erle you could argue against an exclamation mark or a dot or so on the same grounds 20:12 Pexin uguu~ 20:12 erle meaning is context dependent 20:12 erle hehe 20:12 erle Pexin, you get what i mean ^^ 20:12 * Pexin forks super kawaii minetest version 20:14 erle Pexin do you know any other notations in computer games in general that are different than ~x ~y ~z and ^x ^y ^z though? 20:15 sfan5 if you don't have negative numbers the +relx +rely +relz notation seems obvious 20:16 erle ex falso quod libet 20:18 erle (we do have negative numbers) 20:23 erle the thing is, if i use a search engine with terms like “tilde coordinates” or “teleport relative coordinates” or “player relative coordinates” or “chat command relative coordinates” i always get about a page full of stuff using the tilde notation of ~x ~y ~z. 20:23 erle even without mentioning minecraft or minetest at all 20:24 sfan5 "if i use a search engine with terms like “tilde coordinates” [...] i always get about a page full of stuff using the tilde notation" ? 20:24 erle you got me there lol 20:24 sfan5 not really, it's a smartass comment just like yours five minutes ago 20:26 Pexin first result for "relative coord notation" https://knowledge.autodesk.com/support/autocad-lt/learn-explore/caas/CloudHelp/cloudhelp/2019/ENU/AutoCAD-LT/files/GUID-F64F8008-E1C0-49CC-A268-A6B8C6E9B566-htm.html 20:26 sfan5 maybe you're ... yeah https://0x0.st/oqzr.png 20:28 erle oof. again, it's about context. autoCAD is definitely less like minetest than minecraft is. 20:28 Pexin maybe also remember google biases its results based on your browser history 20:28 sfan5 there's another CAD thing in the results also using @, something that uses 'r' as a prefix, minecraft on the second page 20:28 Pexin no idea if that's relevant here 20:28 sfan5 and this thing which is apparently different https://www.minecraftforum.net/forums/minecraft-java-edition/redstone-discussion-and/commands-command-blocks-and/2927164-local-coordinates-aka-caret-notation 20:29 sfan5 erle: look if your point is "minetest should look like minecraft" just say so and everyone can decide whether they agree instantly 20:29 sfan5 you saying you don't even play minecraft is not at all convincing by the way since you can't shut up about mcl2 which just so happens to be a clone 20:29 sfan5 s/look/work/ 20:30 erle but mcl2 does not support the ~ notation afaik 20:30 sfan5 that's irrelevant 20:30 sfan5 mcl2 sets the expectation that everything should work like minecraft and you seem to have internalized this 20:31 erle uh, part of why mcla was forked was because of disagreement. i have a history of making fun of the “everything should be exactly like minecraft” crowd! 20:32 sfan5 ok 20:33 erle in this case the principle i am following is “there is a widely known notation in the context of voxel game chat commands, not deviating from it reduces friction, as the intention is exactly the same” 20:33 erle if minetest was a CAD application, i might argue for using @ btw 20:34 * Pexin ponders a MT mod to create/export 3D printer schems 20:40 erle sfan5 FYI the caret notation is rotating the coordinate system based on the users view direction. without it, you can not express stuff like “1 node left of me”. 20:40 erle (as “left” is user-relative) 20:40 erle it's interesting, but very niche 20:42 erle by the way, including a forwards-compatible relative coords parser in the API also opens up a way to use caret notation later for player commands without mods having to update their code. 20:42 erle (that is, if they use the function) 20:43 Pexin what about when (when, not if) full yaw/pitch/roll rotation is included? 20:43 Pexin MT v7.0.0 20:44 erle nice idea 20:44 Pexin ooh and relative gravity, and 20:44 * Pexin stops now.. >_> 21:12 MTDiscord someday I plan to have a PR for server sent client side physics, so all that is possiible, but not for a long time, sadly.... 21:15 erle exe_virus gravitational direction would be pretty easy though. or what do you mean? 21:16 erle if it is about client-side prediction i want again point out that you can solve this in a delarative fashion using some kind of path syntax 22:07 MTDiscord I prefer tilde purely because it looks nicer than @. /teleport @1 @2 @3 looks cluttered IMO 22:08 MTDiscord The CAD notation seems to prefix the whole vector with the @, not the individual components, so that doesn't apply so much 22:09 MTDiscord opinions are cheap though :P 22:11 erle btw, in minecraft @ actually means the origin for the relative calculations if i am not mistaken 22:11 erle so that you can have coordinates relative to something else than the current player 22:11 erle which is useful for microcontrollers / command blocks 22:43 \ (@ indicates a target selector like @a, @e, @s, etc. ot necessarily the origin of the command) 22:43 \ s/ot/not/ 22:44 erle oh sorry then!