Time Nick Message 01:10 FavoritoHJS here's a stupid idea: it seems like `file:`URIs act as an url that returns an arbitrary stream depending on what it's pointing... 01:10 FavoritoHJS so can you use that to make a kiwiirc theme without relying on another server? 01:20 MTDiscord i suppose they are just css files ? 01:20 MTDiscord in that case even if a file url doesnt work you can use local css overrides - most browsers prob have that 01:20 MTDiscord userContent.css or something in firefox 02:14 Yad Is it possible to create moving structures out of nodes rather than entities? 02:14 Yad For example, ships which sail upon the seas. 02:42 MTDiscord there's a mod that can make a movable/ridable entity out of a bunch of nodes 02:42 MTDiscord https://github.com/stujones11/meshnode 02:42 MTDiscord https://git.minetest.land/Mineclonia/mcl_meshnode 02:43 MTDiscord (the latter works in mtg too despite the name + ithas a couple fixes the original doesn't i think ) 02:44 MTDiscord of course a mod could theoretically make a bunch of nodes seemingly move coherently 02:44 MTDiscord but that's probably not a good idea 17:26 independent56 Ok, so my CV is missing "Worked with others on a collaborative project providing a platforms for people to provide a platform on" 17:27 independent56 So, what should i do to contribute to Minetest as a begginer? 17:32 celeron55 what skills do you want to use? generally i'd say, go browse some PRs and issues to see if someone needs something to be tested 17:33 independent56 I need to do programming TBH, and doing solo projects gets kind of old and unteaching eventually, thus Minetest 17:34 independent56 I'm looking for issues but can't seem to find many that are at my skill level and yet unsolved 17:34 independent56 Should i do this one? https://github.com/minetest/minetest/issues/8982 17:37 rubenwardy look for [beginner friendly] 17:37 rubenwardy or things that annoy you 17:38 independent56 Thank you 17:39 independent56 Ah yes, that password one is annoying and begginerfriendly. I don't want ANYONE to know my new password is "accountLocked" or something lol 18:12 Yad independent56: Are you someone with C++ experience? Or more in the direction of Lua? 18:13 independent56 I have a bit of Lua experience from modding 18:13 Yad independent56: Modding of what? 18:13 independent56 But looking at the code, it seems quite simple to just learn based on surroundings how to implement stuff; a line might do something and i can paraphrase that line quite easily 18:13 independent56 I have made a few small mods, but not many 18:14 Yad independent56: Nice, so you're less of a beginner than many people. :-) 18:15 independent56 I do have experience with other languages. 18:15 independent56 Like Python and Ruby, which are similar to Lua 18:15 Yad independent56: Something which isn't necessarily obvious, but you might do well to consider, is that we have some very short words which take alternate definitions in the namespace of writing/speaking about Minetest in English. 18:16 independent56 Let's see some examples 18:16 Yad independent56: So for example, unless I'm mistaken when we say "mod" it's less short for "modification" and more short for "module" 18:16 Yad independent56: And a "game" is simply a collection of "mods" 18:16 independent56 Intresting 18:16 independent56 A bit like a "multiplication" is a collection of "additions" in maths 18:16 Yad independent56: so the verb "modding" could be misleading 18:17 Yad independent56: hmm, that might actually be a good analogy 18:17 Yad independent56: of course it's topologically true that every mod ("module") modifies ("mods") a game (a collection of mods) 18:18 Yad independent56: but in many gaming situations there is a strong distinction between "official" or "in-the-actual-ganme" code and code which is considered to be part of a mod ("modification") 18:19 independent56 intresting 18:19 Yad independent56: I suppose a person could contend that the C++ code is the "in-the-actual-game" code and the Lua code is the mod ("modification") code 18:19 Yad independent56: but the role of the C++ code in Minetest is more that of an engine or a platform than that of a game 18:19 Yad independent56: hence we call collections of mods, games -- games for Minetest 18:20 Yad independent56: and of course the game which is bundled with Minetest is confusingly titled "Minetest Game" 18:21 Yad independent56: and contributing further to obscuring the situation from newer people such as yourself, many of the mods ("modules") which make up the Minetest Game game for Minetest, are stored in the /games/Minetest Game/mods folder within the application folder... 18:21 independent56 At least Java programmers didn't make it "DefaultGameforGameEngineMinetestConstructorClassGame" lol 18:21 Yad independent56: ...rather than being in the ~/.minetest/games/Minetest Game/mods folder 18:22 Yad independent56: LOL at least that level of verbosity might be less ambiguous to new people xD 18:22 independent56 If you want Java, go to Minecrap lol 18:22 independent56 I have been running a server for about a year so i wouldn't say i'm a begginer to minetest 18:22 Yad independent56: if I may indulge in a shameless plug, I think a great game for learning the Lua API for Minetest, is Exile 18:22 independent56 I've had to modify modifications many times 18:23 Yad independent56: Oh then I feel even better about suggesting Exile. 18:23 Yad independent56: It shouldn't be too far beyond you to learn from. 18:24 Yad https://content.minetest.net/packages/Mantar/exile/ 18:24 Yad independent56: Founded by Dokimi, now maintained by Mantar, and I'm one of the more-casual developers for it. 18:25 Yad There are at least two public servers running Exile currently, but it's also a great single-player game. 18:25 independent56 I'm not as intrested in mods as i am in developing software a ton of people use 18:25 independent56 I plan to work on the linux kernel later just to get my keystrokes running the world 18:26 Yad independent56: Hahah, nice. Kernel development is vitally important. Perhaps I have misunderstood what you are seeking in this chat today? 18:26 FavoritoHJS ehh, not quite, independent56, it's more like `@Subgame("minetestgame") MinetestGame extends Modpack`... in a class called net.celeron55.minetest.subgames.mtg.MinetestGame... and all the mods are in other classes... 18:26 independent56 yeah but then that's not as funny as excess verbosity 18:26 FavoritoHJS the funny lies in the packages 18:27 Yad FavoritoHJS: hahah, we are still joking here right because there's no Java in Minetest's codebase? 18:27 FavoritoHJS yes 18:27 FavoritoHJS (cries in mcp) 18:30 independent56 Yad, My goal is to add to my CV with the most impressive bullet points "contributed to a shared project promoting education and API programming" seems cool, alongside "contributed to code for the server you're reading this CV from" 18:30 Yad independent56: Well it's easy to create impressive-sounding bullet points but the question will be how much knowledge you have backing them up heheh 18:31 independent56 lol whoops 18:32 independent56 "Submitted 50 keystrokes to a distrobuted network for communication of good ideas using the IRC protocol" also sounds impressive 18:37 ROllerozxa minetest actually does have a small amount of java code for the android version though it's mostly just glue for the native code to communicate and work with android APIs 18:37 Yad ROllerozxa: Ohhh, I completely forgot about the Android port in this conversation hahahah 18:38 Yad ROllerozxa: I'm not a fan of using Android for this. heheh 18:38 independent56 Java <<<< Kotlin 18:38 independent56 Imma port it RN if i could 18:38 Yad ROllerozxa: But maybe if people would use USB or Bluetooth mouse/keyboard for their Android devices that could be okay with me hahah 18:38 Yad independent56: :P 18:39 independent56 Why am i suprised 2017 is already 6 years ago? Advtrains can't possibly be that old! 18:39 Yad independent56: If you could remove the range limits from `minetest.set_eye_offset([firstperson, thirdperson])` that would actually help me in a game I'm working on, and shouldn't be too difficult to change in the Minetest C++ 18:40 independent56 I'll have a look 18:40 Yad independent56: Thanks. ^^ 18:40 MTDiscord I've never seen a <<<< operator before, but I guess it looks like it'd mean something like Java << (1 << Kotlin) 18:41 independent56 I'm not rubwaenrdy 18:41 Yad independent56: Rumour has it those limits were put in place by a developer who left the project years ago in an unfriendly fork. 18:41 Yad independent56: And it's a function not often used so nobody has fixed it. 18:41 independent56 It's great they finally left Minetest alone 18:42 FavoritoHJS rule 2 of programming: if jank, blame someone else 18:42 Yad independent56: Yeah all that drama happened before I got involved, apparently. 18:42 Yad independent56: I first used Minetest circa November 2019. 18:42 MTDiscord If there are limits in the engine, it's often because of some other limit which is harder to remove (e.g. because the map coords are 16-bit ints, or because increasing the maximum size of hitboxes makes collision checking costs grow very fast). 18:43 Yad Warr1024: Yeah I'm curious if that's the situation with set_eye_offset, or if it's arbitrary. 18:43 independent56 https://pastebin.com/j1ZPa6Zg 18:43 independent56 HEre's the git diff i made 18:43 independent56 You can merge it if you want (CC-BY) 18:43 MTDiscord If you could set eye offset arbitrarily far away, you'd probably find that it starts to break terrain loading, because that's tied to body location, not viewpoint location, and disconnecting these things is non-trivial. There might be a PR in the works already (Camera API) that might fix the underlying flaw, though, so that limit might not always remain the same. 18:44 Yad Thanks independent56 ! 18:44 Yad Warr1024: Well sure there's probably a practical limit, but I'd rather have it throw a warning into the in-game chat than to ignore my command. 18:44 MTDiscord "prevent abuse" sounds more like it's some kind of "prevent players from using eye offsets to clip into terrain for xray vision cheats" kind of thing, I suppose. 18:45 independent56 You'd have to make your own engine for now, but you can make it a Minetest fork (finished minetest?) 18:45 Yad independent56: Well if nothing else you saved me the time of finding it in the source code, so thanks for that. :D 18:45 Yad independent56: Now I know it really is as simple as two or three lines in the C++ 18:46 Yad Warr1024, independent56 : The reason I want wider ranges is I want to be able to pan the camera when using certain furniture in 3rd-person view. 18:46 MTDiscord You can work around a lot of these sorts of things, it's just Jank City, that's all. e.g. create a luaent to represent the player's body, make the player invisible, use attachments to attach them wherever you want relative to the body ent, and then plug your ears and LALALA whenever anyone mentions multiplayer or network latency. 18:47 Yad Warr1024: Jank City indeed...we're basically treating the *camera* as being the same thing as the *player* which seems to be the limiting factor here. xD 18:48 MTDiscord I've got a mod that follows players with a 3rd person camera. Because of the way MT's camera works right now, I can't do much fancy camera work, about all I can do is jump cuts to a new angle where the player is in frame, and then jump away again if they move out of frame. I'm hoping Camera API improvements give me more options, but I guess I just have to live with it for now... 18:49 Yad Yeah I'd like to be not limited to humanoid characters. 18:49 Yad And the current camera API makes it very difficult to create vehicles. 18:50 Yad Warr1024: And have you ever seen that stuff about people making ships out of nodes which are able to move independently of the main matrix? 18:50 MTDiscord I don't see any reason you can't do non-humanoid characters as it is, other than just cultural friction (e.g. players expecting to be able to import skins from other games). You can't necessarily do ones at arbitrary scale relative to nodes, but you could still probably just change the effective scale of nodes themselves... 18:51 MTDiscord I've seen the videos of people turning a bunch of nodes into a bunch of entities and then piloting them around, yeah. 18:51 Yad Warr1024: Is that what they're doing? 18:51 Yad Warr1024: I felt like nobody was able to give me a straight answer as to whether it was actually entities. 18:51 MTDiscord I hear somebody talk about it every month or so. I don't think any real advancements have been made in a couple years though. 18:51 Yad Warr1024: Hahah, that would not surprise me. 18:53 MTDiscord I think they decide which nodes to convert, make them into entities, attach them all to one central controlling entity to make it easy to pilot, then remove the original nodes, drive it around, say "well, collision detection is an abomination right now but I'll fix it after I make the video", record the video, and then effectively give up on the project a few hours later 😄 18:53 Yad Warr1024: LOL Thanks for your insight on this topic. Now I can see that I'm not off-track to be wanting to learn entity attachment next. 18:54 MTDiscord It has become easier, at least lately, and if you ignore shading inconsistencies, to make entities that look convincingly like nodes. 18:54 Yad Warr1024: Yes I'm actually doing that for plant-growth in my experiments. 18:54 MTDiscord Oh, interesting ... entities can scale arbitrarily, you don't need different node registrations for each, so I could see some interesting potential there. 18:55 MTDiscord You do have to be careful though because entities impose significantly more computational and rendering costs than nodes, and if you don't have some kind of artificial limiting factor that prevents players from making arbitrarily many of something, that can become significant. 18:55 Yad Warr1024: Yes at this point you could think of it as I'm basically making the top segment of a cactus extend slowly rather than popping into existance. 18:55 muurkha presumably the reason for nodes is that you can have many more en... yeah that 18:56 MTDiscord NodeCore uses entities to represent objects placed on the ground or in storage, and while its mitigations of the computational cost server-side are pretty effective, it still imposes significant rendering costs client-side, especially once you've got thousands built up in one place. 18:56 Yad Warr1024: Then when the cube-shaped entity's mesh is in the same position as y+1 relative to where I spawned it in the top node of the "cactus", the entity does a node_swap and then self.object:remove() 18:57 FavoritoHJS remember that the entity might be moved by something, so I'm not sure if that's the best solution 18:57 muurkha I didn't know that about NodeCore objects on the ground; I thought they were nodes 18:57 Yad FavoritoHJS: Might be moved? As in what? A collision transferring momentum into the entity? 18:57 MTDiscord If you want to have cactus growth come in short spurts, then using the entity to do an eased animation for cactus growth could work fine. If you want true linear growth, then the points where the cactus height would be an exact even node multiple would be short-lived, and that'd mean you'd have the entity persist throughout the cactus' growth cycle, which could be expensive. 18:58 independent56 Do you want me to try anything else before i revert back to copy-pasting git diffs under issues? 18:58 MTDiscord NodeCore objects on ground are dual node/entity things. There's a node that stores the information for your item, but there's an ephemeral entity that's used to actually display the thing. 18:58 Yad Warr1024: Yes the client-side load is what I'm trying to mitigate with having the entities replace themselves with nodes as often as possible. 18:58 FavoritoHJS I was thinking more like mesecon pistons or nc hinges 18:59 FavoritoHJS ooh, that's why lesha had phantom items a while back 18:59 MTDiscord Entities should not automatically be moved by things happening in-world, i.e. if you set physical=false ... but they CAN still be moved by other mod code, e.g. if someone adds one of those "water flows push items" mods that's naively coded and doesn't actually make sure that it's an item entity, and then flows water over your cactus... 18:59 independent56 I'm thinking of making a Minetest fork called "pure Minetest", where you only have two nodes and you have to combine them differently to make more nodes and nodes are also entities and objects at the same time 19:00 Yad Warr1024: Yes regarding the continued cactus growth (a new entity gets created as soon as the old one is removed, in order to continue growth) but once the cactus reaches its mature height, no more entity is required. 19:00 independent56 A bit like Lambda and non-lambda functions in a programming language 19:00 FavoritoHJS world edit probably deleted the items metadata (thus triggering an item removal failsafe on nc's end) but not the entity, so phatom item 19:00 Yad independent56: a Minetest fork? Do you mean a fork of Minetest Game? 19:00 MTDiscord Yeah, keeping the ent display of items connected properly to the physical node is a pain, especially since you can't just loop over all of them every tick and still get acceptable performance. The existing system works okay usually but it can get tripped up on sufficient boundary conditions. 19:00 ROllerozxa independent56: you could just make a game for that, no fork needed 19:00 independent56 No, one where the LuaAPI is very basic and you only have two nodes 19:01 independent56 A minimalist version of Minetest 19:01 Yad independent56: Because minetest.register_node() takes place in the Lua API, not in Minetest. 19:01 Yad independent56: What does "have" mean? 19:01 independent56 that's the default game. 19:01 independent56 Only a max of two nodes; mixing and their types are determined in the engine 19:01 Yad independent56: Yeah so be careful to call it "Minetest Game" not "Minetest" which is the platform. 19:01 MTDiscord "default" is a bug 19:01 Yad xD 19:01 independent56 something like 12112112221212212 19:02 Yad independent56: Minetest already has only two or three nodes...they're the ones you have set with an alias. 19:02 independent56 `12212121211221212112` = factory 19:02 independent56 I 19:02 independent56 I'll have to plan it later 19:03 Yad independent56: mapgen_stone mapgen_water_source and mapgen_river_water_source 19:03 ROllerozxa those are just mapgen aliases, not real nodes 19:03 ROllerozxa however the engine *does* have unknown, air and ignore which are all nodes defined by the engine 19:03 Yad ROllerozxa: Yeah, you have to do minetest.register_node using the LuaAPI 19:04 Yad ROllerozxa: we're explaining to independent56 that you don't need a fork of Minetest in order to have there be only two nodes registered, because there are already only three required by the platform. 19:04 Yad I call Minetest a platform because Irrlicht is the engine. 19:05 independent56 Yeah, but i mean the engine provides the nodes; `1` and `2`. It's up to the games to combine them 19:06 Yad independent56: What do you mean by "provides"? 19:06 independent56 Basically brainfuck but in Minetest 19:06 independent56 Provides? The LuaAPI will be very simplified to make it as minimalist as possible to only give you the tools you really need, not fancy abstraction 19:07 independent56 As such, you can't define a node, only the combination of them 19:07 independent56 `minetest.combine(1111112222222222) = "stonebrick" 19:07 independent56 Goal is to allow the exact same possibilites as current minetest just minimalist 19:07 Yad independent56: I might need you to make a flowchat of that. xD 19:07 Yad independent56: But I also feel like you're trying to express satire. :D 19:09 FavoritoHJS oh, so something like a binary identifier for each node? 19:10 independent56 Yeah kind of 19:10 independent56 The point is to give you the bare minimumm to make mods so you think on a more basic level, like Assembly programming 19:13 independent56 Instead of Lua you have to write block logic in Brainfuck and the output is the return value 19:16 MTDiscord If you want to make a game where there are only 2 kinds of nodes, then just register your nodes, and then replace minetest.register_node so that more can't be added later. Good luck with that though, from a user acceptance perspecive. 19:16 independent56 In fact: new idea: keep minetest engine the same but change the API to only accept a dialect of brainfuck known as "Minimalismtest Brainfuck" which has a few new operators 19:16 independent56 Such as those for file writing and for function definitions 19:17 MTDiscord Better idea: just rewrite the entire engine in BF. Have fun with that 😄 19:18 independent56 Yeah but BF gives no GUI libraries or file-writing capabilities so is unsuitable for application making 19:20 independent56 I'll make a dialect if i have to, but i've already made a compiler for a minimalist programming language i made which lets you cheat by importing Lisp functions. 19:32 independent56 In theory, is any issue which is "open" up for grabs for me to "fix"? 19:33 independent56 Even if they're tagged with "discussion" and "DO NOT IMPLEMENT WITHOUT WRITTEN WORD OF DEVELOPER"? 19:34 Yad independent56: Well I mean you can't force maintainers to merge your branches in Git, so you can't really *hurt* the project, but you could end up wasting your own time. 19:35 independent56 that's ok 19:36 independent56 Not until i make so many contributions i become a core dev out of convinience for the team, but that probably won't happen anytime soon# 19:39 independent56 "Ugh, 56independent's 2,000th commit today! Maybe it's time we just make him a core dev" or something 19:40 ROllerozxa LOL, implying being coredev somehow gives you the right to push stuff to master without approval 19:41 independent56 oh, it don't? 19:42 independent56 You //have// to make a branch? 19:43 ROllerozxa yeah, usually all changes need to go through a PR 19:43 independent56 Fine. Due to my ADHD and Autism cocktail, i might end up making 20 commits per day for a few days before doing 0 per day for a few months 19:43 ROllerozxa all PRs need two approvals from a coredev, if you're a coredev it's assumed you approve of yourself so another one is needed to approve it before it can be merged 19:45 independent56 Ah yes 19:47 * independent56 secretley considers a sockpuppet with a different writing style working with different types of commit to self-approve merge requests and reveal the largest social experiment of all time 19:47 independent56 How do you know it's not too late muahahahaha 19:50 independent56 I'm joking by the way lol 19:53 ROllerozxa o.o 19:54 independent56 But it's these types of security vulnrabilities we should work against; the weakness here is that the sockpuppet and independent56 use the same IP 20:05 independent56 Even if i used Tor, it would locate to the same continent so you can ban all of Europe from core devs and be safe /j 20:07 independent56 Should i try unhardwiring things? 20:07 independent56 Like look at things which are hardwired and make setting for them? 20:08 independent56 https://dev.minetest.net/List_of_hardcoded_features 20:12 ROllerozxa most of those hardcoded features aren't exactly trivial to unhardcode but yeah I guess 20:28 Noisytoot independent56: Why would your exit node be in the same continent if you used Tor? That's not how the route selection works. 20:28 independent56 Fine, same planet 20:29 independent56 Ban everyone on Earth for maximumm security 23:14 independent56 Well, it's all my fault the pull request counter went from 74 to 75 23:14 independent56 It's probably not even that good of a commit TBH but you gotta start small 23:17 independent56 I'm probably going to exhaust all possible issues and then i'll have to leave begginer friendly