Time Nick Message 01:48 Gustavo6046 People still use Pipeworks? 01:49 Gustavo6046 Is it compatible with Tubelib? 01:50 Gustavo6046 How do the two compare? 01:50 Gustavo6046 And what is the state of the art for automatic items transport? 01:57 Conradish006 Pipeworks is the best 01:58 Gustavo6046 mhm 01:58 Conradish006 Especially the lua controlled tubes 02:52 SwissalpS If possible, I prefer a combo of Lua Controller with Digiline Detector tubes over Lua Sorting Tubes. The Lua Tubes have a weird way of reversing output events and sometimes simply fail. It seems they can't load Lua part as fast as the items in tubes load. 03:11 MTDiscord <05e​xe_virus> apparently it is possible to force disable the "enable damage" setting, does anyone know how to do so? 06:56 MTDiscord <07J​oSto> It may see that a bit biased, but: - pipeworks has the better visual animation which helps when looking for errors in the construction - tubelib is more server friendly because "lean and efficient" was the first design goal 08:58 Zetta1Reid0 Wanna ask . Why doesn't minetest support C++ modding 09:04 anuke[m] 1. malware because why would a player check the source code before downloading a fishy library 09:04 anuke[m] 2. having to compile for many platforms 09:09 Zetta1Reid0 You can get malware from lua code too . Dont forget you can use non minetest code too in lua script. Also user wont check code either way 09:54 anuke[m] yeah but youd have to disable sandboxing for that mod 09:54 anuke[m] if you do that without reading the code you pretty much deserve to get rm -rf /*'d or whatever 09:55 * Scarecrow is not going to compile mods for musl-arm 09:56 Scarecrow anything that requires engine-level abuse should be exposed in a general way to the environment mods run in anyway 10:01 blaise lol 10:26 Zetta1Reid0 Even if regular users do read the code , do you think they will understand anything . Except if programmer didnt put a big comment "here starts driver erase" :D 10:30 Zetta1Reid0 Anyways from Security point it is unsecure for sure . But c++ gives you access to all code . Not just 1 developer exports to lua 10:48 rubenwardy Lua mods are sandboxed 10:48 rubenwardy the main reasons are needing to compile for many problems, unstable C++ ABIs, and a preference for Lua 11:12 Gustavo6046 :o 11:12 Gustavo6046 my changes were merged 11:33 MTDiscord <05e​xe_virus> Zeta: the lua is sandboxed for sure, the only endpoints that could currently allow issues are c++ functions we have exposed to lua 11:33 MTDiscord <05e​xe_virus> Lua is used professionally like this all the time, even luaJIT 11:57 rubenwardy "But c++ gives you access to all code" How's is reflection in C++? I'm not sure this is true 12:00 MTDiscord <08a​ppguru> You can already mod in C++ 12:00 MTDiscord <08a​ppguru> All you got to do is fork the engine :] 12:02 MTDiscord <05e​xe_virus> C++ has no built in reflection 12:02 MTDiscord <05e​xe_virus> C++ doesn't really "mod" well 12:02 rubenwardy I didn't think so 12:03 MTDiscord <05e​xe_virus> You can "patch" executables 12:03 rubenwardy one area that C++ mods would be good at would be with mapgen 12:03 rubenwardy as they're mostly self contained and need good performance 12:03 rubenwardy you'd expose a C API for good ABI 12:03 MTDiscord <05e​xe_virus> We could do a better job of exposing the mapgen to lua 12:03 sfan5 the sane way to do native mods is to expose a clearly specified API in C just like with Lua 12:03 sfan5 no mucking around with engine internals 12:04 rubenwardy in which case, it doesn't allow you to do more 12:04 sfan5 yeah, not more just better 12:04 rubenwardy for a truly powerful C++ API, you'd need a more modular and datadriven structure. And perhaps compiled in mods 12:04 rubenwardy that's not going to happen 12:04 MTDiscord <05e​xe_virus> It can't, basically 12:05 MTDiscord <05e​xe_virus> Without being completely insecure 12:05 rubenwardy well yeah, that's implied 12:05 rubenwardy we don't even allow Lua bytecode 12:05 MTDiscord <05e​xe_virus> For good reasons 12:05 MTDiscord <05e​xe_virus> That's the most** insecure 12:06 MTDiscord <05e​xe_virus> What if we exposed mapgens to shaders ... 12:07 rubenwardy interesting idea to use compute shaders for that 12:07 rubenwardy I suggest trying it 12:07 rubenwardy not in MT ofc 12:07 MTDiscord <05e​xe_virus> Why not in mt? 12:07 rubenwardy because overhead 12:07 MTDiscord <05e​xe_virus> I guess cause vps don't have a gpu typically 12:07 rubenwardy better to do a proof of concept first 12:08 rubenwardy well, that to 12:08 rubenwardy *too 12:08 sfan5 it also doesn't work on embedded GPUs (phones) 12:08 sfan5 well, doesn't = very unlikely to be supported 12:08 rubenwardy yeah, this is interesting but not very portable 12:08 MTDiscord <05e​xe_virus> Right 12:11 MTDiscord <05e​xe_virus> Either way, I suspect we can get better mapgen integration with lua than we currently do 12:15 sfan5 https://github.com/minetest/minetest/issues/10800 12:47 Zetta1Reid0 "How's is reflection in C++?" : Didn't get that . Also when you have to compile the whole engine it is not a mod anymore . 13:01 Zetta1Reid0 A simple way to load mods would be dynamic loading like done in gmodule load from glibc 13:14 rubenwardy Reflection is the ability to find out information about objects and functions at runtime, and modify them 13:15 rubenwardy It looks like C++ mods would not allow access to all code anymore than Lua mods do 13:17 rubenwardy Perhaps you'd have access to all public functions and classes, but you wouldn't be able to hook into any where that isn't exposed 13:29 Zetta1Reid0 Unless you subclass the classes 13:30 rubenwardy that requires virtual methods and you need a way to inject the subclasses 13:30 rubenwardy this is possible if you designed the code in a certain way from the beginning, but: 13:30 rubenwardy for a truly powerful C++ API, you'd need a more modular and datadriven structure. 13:30 rubenwardy that's not going to happen 13:35 Zetta1Reid0 Why ? 13:38 rubenwardy because a massive rewrite is not justified 13:53 nly require() is disabled 13:54 nly can i disable mod security for just mymod? 14:01 MTDiscord <05e​xe_virus> You can, but only on your machine 14:01 rubenwardy nly: secure.trusted_mods 14:01 MTDiscord <05e​xe_virus> Add it to trusted nods and request an insecure environment 14:02 rubenwardy then ie = minetest.request_insecure_environment() and ie.require 14:02 rubenwardy secure.trusted_mods is a .conf setting 14:14 nly mod.conf -> secure.trusted_mods = mymod 14:14 nly init.lua -> minetest.request_insecure_environment() 14:15 rubenwardy minetest.conf not mod.conf 14:15 rubenwardy it's a user setting 14:15 nly ah yes, minetest.conf 14:15 rubenwardy it wouldn't be very secure if a mod could just go "yes, you can trust me" 14:16 nly dint work 14:16 rubenwardy are you requiring lua code? 14:16 rubenwardy have you made sure ie.package.path is as expected? 14:24 nly ie = mintest.request_insecure_environment() 14:24 nly local socket = ie.require("socket") 14:25 nly attempt to index global 'ie' (a nil value) line 38 14:25 sfan5 evidently it did not return an insecure environment, did you check the output? warnings? errors? 14:26 nly maybe socket is not present in my libs 14:29 rubenwardy > attempt to index global 'ie' (a nil value) line 38 14:29 rubenwardy means you didn't edit trusted mods 14:29 rubenwardy also, local 14:29 rubenwardy local ie = 15:18 daiNoZord with after_place_node, I (try to) make sure "player" has a value - so local player = placer:get_player_name(), but then any attempt to call player:get_meta() crashes as get_meta() is a nil value. Did I miss a step? 15:20 sfan5 post the relevant excerpt from your code 15:21 Krock we're supposed to guess it 15:23 daiNoZord no it's basically that with all the comments and other things removed - sorry was tidying it up https://pastebin.pl/view/b2112426 15:23 daiNoZord to make it readable 15:23 Krock {} -> postr 15:23 Krock set_string expects a string 15:24 Krock and placer != player 15:24 sfan5 "placer" is the player object, what you did was set "player" to the name of the player 15:24 sfan5 get_meta is a method that operates on a player object 15:25 daiNoZord if i change placer to player then player becomes a nil value 15:27 daiNoZord and I thought set_string required both a key and a value? 15:29 daiNoZord and if i remove the line player:get_player_name() then player is also nil 15:30 sfan5 you need to call placer:set_meta 15:32 daiNoZord ah.. fancy that! it doesn't crash now on placing the node.. thanks! :) 15:32 MTDiscord <11I​hrFussel> Or you change 'placer' to 'player' inside the (...,...,...) 16:13 nlyy attempt to index local 'ie' (a nil value) 16:13 nlyy but i got secure.trusted_mods = opmod in ~/.minetest/minetest.conf 16:13 rubenwardy did you close and reopen MT? 16:14 nlyy so many times.. 16:14 nlyy i deleted my world. rip 16:20 rubenwardy what's the code? 16:20 rubenwardy is the mod name different `opmod` 16:24 nly this https://git.sr.ht/~op/opmod/tree/master/item/init.lua 16:25 rubenwardy ah 16:25 rubenwardy needs to be in the root of the init.lua 16:25 rubenwardy like, not in a function 16:40 nlyy thanks 16:47 daiNoZord sorry to keep asking - but when I try to retrieve that string on_punch.. i get a nil value. please excuse the commented-out bits, they show other approaches: https://pastebin.pl/view/32ad9531 16:49 MTDiscord <11J​onathon> did you set the string anywhere? 16:50 daiNoZord ah yes - after_place in another node 16:50 MTDiscord <11J​onathon> did you place that node before punching this one? 16:51 daiNoZord yes its placed 16:52 daiNoZord i get: Invalid position coordinate 'x' (expected number got nil) 16:53 MTDiscord <11J​onathon> from which line? 16:53 daiNoZord set_pos 16:54 MTDiscord <11J​onathon> where does postr come from? 16:54 daiNoZord https://pastebin.pl/view/cfbc4d98 16:55 MTDiscord <11J​onathon> local spos = minetest.string_to_pos(postr) should be local spos = minetest.string_to_pos(rmeta) 16:55 MTDiscord <11J​onathon> i think is what you want 16:56 daiNoZord ah i get the same error 16:57 MTDiscord <11J​onathon> since it looks like your putting postr(in after_place_node) in player meta to save it, then you should get back from there 17:05 daiNoZord darn curly braces! Thanks Jonathon, it works :) 17:31 LoneWolfHT Was this ever considered as an engine replacement? They just had a 2.0 release 9 days ago https://github.com/horde3d/Horde3D 17:34 rubenwardy never heard of it 17:35 LoneWolfHT Maybe I'm thinking of Ogre3d 18:48 daiNoZord is arena_lib a thing to use to reset an environment - an arena - ie chest inventories, node positions (including falling nodes) etc? 18:49 rubenwardy I believe that mod is more about having multiple minigames at once on a server, their worlds tend to be readonly to avoid the unpredictable server freezers 18:49 rubenwardy Zughy[m]1: can answer that 18:50 daiNoZord ah ok thanks. I can possibly achieve a reset of certain things with node timers? 18:51 rubenwardy on CTF, the world is saved as a schematic. It's then placed when a new world starts 18:51 rubenwardy this allows each map to be git versioned in a folder 18:51 rubenwardy however, on a server with multiple minigames at once this isn't viable 18:51 rubenwardy you could use readonly backup databases and delete area 18:51 rubenwardy Minetest supports having two .sqlite file 18:52 rubenwardy one contains changes, one is readonly. Minetest reads from the changes before reading from readonly 18:52 rubenwardy this means you can put things in readonly, play a game, and then delete the area to read from readonly again 18:52 rubenwardy you could also do clever stuff with LVMs and storing which nodes have changed 18:52 rubenwardy but it's not always possible to keep track of changes, callbacks tend to be partially unreliabl 18:53 rubenwardy for example: LVMs don't call callbacks 18:54 Krock if there's lvm support, when will there be lvm2?! 18:54 daiNoZord ah.. ok.. but if a game ends.. manually loading a schem (like with worldedit) would work wouldn't it? so (sorry if im simplifying it..) but shouldn't it be possible to automate that? 18:55 MinetestBot 02[git] 04rubenwardy -> 03minetest/minetest: Fix short_description fallback order (#10943) 13a8f6bef https://git.io/JtM7n (152021-02-17T18:53:44Z) 18:57 rubenwardy daiNoZord: yes, if you only have one game at a time you can use schematics 18:57 rubenwardy that's what CTF does 18:57 rubenwardy it takes about 8 seconds to place IIRC 18:57 rubenwardy most of that is light calcs 18:58 rubenwardy https://github.com/MT-CTF/capturetheflag/blob/master/mods/ctf/ctf_map/ctf_map_core/schem_map.lua#L332 18:59 daiNoZord But you can place schems in game using WE. There must be a way of resetting various areas depending on a "condition" being met 18:59 daiNoZord ie by placing schems 18:59 rubenwardy ...? 18:59 rubenwardy I don't get what you mean 18:59 rubenwardy When a new match starts in CTF, it places a schematic for the new map 19:00 rubenwardy if this were done on the same location it would reset the map 19:01 daiNoZord u say schems can only be used to reset one minigame, but surely a number of different areas can be reset in the same way? I can place buildings etc all day long... there must be a way to reset individual areas depending on when a specific condition is met 19:02 rubenwardy I still don't get the question 19:02 rubenwardy what do you mean by reset? 19:02 rubenwardy To mapgen? 19:02 rubenwardy To some predefined state? 19:03 rubenwardy I don't get the question because I never said that it's not possible to reset other types of area 19:03 rubenwardy you can use the same technique on any position of the map 19:03 daiNoZord ok so a game ends and all players (objects_inside_radius) are teleported away - then when a new player hits a block and is teleported into the "lobby", then maybe objects_inside radius could be used to set a aschem 19:04 daiNoZord oh sorry i misunderstood 19:04 daiNoZord *a schem 19:04 daiNoZord and this could be done in multiple locations? 19:08 daiNoZord ah you said the world is saved as a schematic - I would only be saving small areas 19:09 rubenwardy the world in CTF is only 200x100x200 19:09 rubenwardy I also said "map" 19:09 rubenwardy and this could be done in multiple locations? 19:09 rubenwardy Yes, you can place a schematic wherever you like 19:10 daiNoZord rubenwardy: on CTF, the world is saved as a schematic. It's then placed when a new world starts 19:10 daiNoZord ok thanks ill look into that 19:10 rubenwardy oops 19:11 daiNoZord if that's a suitable way of returning an area to a "default" state then that's the method i'll try to employ :) 19:16 Zughy[m]1 daiNoZord: the arena reset won't be available till 7.0 (meaning not soon, we're on 4.6) => https://gitlab.com/zughy-friends-minetest/arena_lib/-/milestones/32 19:16 Zughy[m]1 so you have to do it manually, like Skywars does (you can find it on CDB) 19:17 daiNoZord ah ok thanks Zughy[m]1 - i'll go look at that now :) 19:29 daiNoZord haha.. skywars seems to be missing the islands.. 19:51 MinetestBot 02[git] 04rubenwardy -> 03minetest/minetest: Add nametag background setting and object property (#10937) 13f85e9ab https://git.io/JtMdD (152021-02-17T19:51:28Z) 20:57 Sven_vB hi :) 21:19 Sven_vB how can I start my singleplayer world directly? with "minetest --name singleplayer --world worlds/test --go" I get "ERROR[Main]: Access denied. Reason: Player name not allowed.", but without --name, I start with a wrong name and thus empty inventory. 21:19 Sven_vB using MT 5.3.0 on Ubuntu focal 21:30 LoneWolfHT Does it work without the --name? 21:40 sfan5 yes you need to omit that