Time |
Nick |
Message |
00:05 |
|
Eragon joined #minetest |
00:11 |
|
SFENCE joined #minetest |
00:49 |
|
sparky4 joined #minetest |
01:44 |
|
Verticen joined #minetest |
03:20 |
|
squeaktoy joined #minetest |
03:27 |
cheapie |
Random screenshot, techage thermal energy storage (largest size, two of them): https://cheapiesystems.com/media/images/screenshot_20241224_212222.png |
03:29 |
cheapie |
Collider room in the basement of the same building: https://cheapiesystems.com/media/images/screenshot_20241224_212917.png |
03:30 |
cheapie |
I don't know how much concrete I went through building that place, but I went a bit crazy with the production and still have 23025 concrete sitting in a drawer. |
04:07 |
erle |
cheapie does technic etc. have flying machines? |
04:07 |
erle |
cheapie also, have you ever been to an anarchy server? |
04:09 |
cheapie |
I don't think technic has any (but I don't really like technic, so no idea). techage doesn't but it's often paired with digtron |
04:09 |
cheapie |
And no, more or less |
05:00 |
|
MTDiscord joined #minetest |
05:45 |
|
TheSilentLink joined #minetest |
06:22 |
|
lemonzest joined #minetest |
06:47 |
|
jonadab joined #minetest |
07:03 |
|
SwissalpS joined #minetest |
07:35 |
|
Glaedr joined #minetest |
08:57 |
|
SFENCE joined #minetest |
09:05 |
|
tarsovbak joined #minetest |
09:07 |
|
jaca122 joined #minetest |
09:08 |
|
gregon joined #minetest |
09:09 |
|
PoochInquisitor joined #minetest |
09:23 |
|
SFENCE joined #minetest |
09:35 |
|
SFENCE joined #minetest |
09:45 |
|
SFENCE joined #minetest |
09:51 |
|
SFENCE joined #minetest |
10:05 |
|
SFENCE joined #minetest |
11:10 |
sfan5 |
!tell LandarVargan ping |
11:10 |
MinetestBot |
sfan5: I'll pass that on when LandarVargan is around |
11:11 |
sfan5 |
cheapie: is it possible to visit the server/place where these builds are |
11:14 |
|
ireallyhateirc joined #minetest |
11:32 |
|
jluc joined #minetest |
11:37 |
|
SFENCE joined #minetest |
12:06 |
|
SFENCE joined #minetest |
12:14 |
|
SFENCE joined #minetest |
12:19 |
|
SFENCE joined #minetest |
13:13 |
|
SFENCE joined #minetest |
13:23 |
|
SFENCE joined #minetest |
14:03 |
ireallyhateirc |
do entities always wiggle when rotation is set? |
14:05 |
ireallyhateirc |
the process of rotating appears to be visible rather than instantenous |
14:33 |
MTDiscord |
<mark.wiemer> Merry Christmas everyone! Been so happy to join this community and contribute with you all 🙂 |
14:57 |
Krock |
Thanks. Merry X, Y and Z mas for you as well |
14:59 |
MTDiscord |
<luatic> ireallyhateirc: set_rotation is interpolated. you don't get control over the interpolation and it is slightly broken because it doesn't use quaternions. |
15:00 |
ireallyhateirc |
hmmm it's always about them quaternions. Well at least I know I can't do anything about that |
15:00 |
MTDiscord |
<luatic> sadly you can |
15:00 |
MTDiscord |
<luatic> the bone override API has controllable interpolation |
15:01 |
MTDiscord |
<luatic> so you could abuse that |
15:01 |
MTDiscord |
<luatic> in some cases it won't even be abuse |
15:01 |
ireallyhateirc |
I think it's not worth it in the end. I can live with toilets that wiggle in my shelf: https://files.catbox.moe/6frzli.mp4 |
15:01 |
MTDiscord |
<luatic> NO NOT WIGGLING TOILETS |
15:03 |
ireallyhateirc |
I'll just pretend the effect is on purpose |
15:22 |
ireallyhateirc |
Ok this toilet wiggling is annoying |
15:22 |
ireallyhateirc |
it also wiggles when I place an item |
15:49 |
|
freq joined #minetest |
15:50 |
|
silverwolf73828 joined #minetest |
16:28 |
|
Lunatrius joined #minetest |
16:31 |
|
shinbet joined #minetest |
16:48 |
|
sometalgoo joined #minetest |
17:30 |
|
kimapr joined #minetest |
17:34 |
ireallyhateirc |
Is there any sane way of merging several callbacks into one? For example when there are nodedef callbacks defined by modders and my mod adds an extra callback on top. |
17:34 |
ireallyhateirc |
I can imagine something that takes the old callback and calls it from the new callback |
17:36 |
ireallyhateirc |
It is technically possible but the real question is: should I do that? |
17:36 |
freq |
hm |
17:37 |
ireallyhateirc |
something like append_callback(nodedef, "on_construct", callback_function) |
17:38 |
ireallyhateirc |
The problem is when 1. order matters 2. the callback makes byproducts (like returning an itemstack with on_rightclick) |
17:41 |
Soni |
has anyone made a fully functional cave world yet |
17:52 |
Soni |
also can you use third-party contentdb yet |
17:53 |
Soni |
you can, nice |
17:55 |
Soni |
tho there are none yet |
17:56 |
whosit |
ireallyhateirc: https://www.gnu.org/software/emacs/manual/html_node/elisp/Advising-Functions.html :D |
18:26 |
cheapie |
sfan5: Yes - those two are on Cubika, in "building 4" in my area - -576,6,258 (not too long of a walk from the spawn) will get you close to that building, and then the collider is one floor down (floor CL) and the energy storage is 6 floors up (floor ST) from there, there are elevators and stairs in the back. |
18:27 |
|
SFENCE joined #minetest |
18:28 |
cheapie |
Buildings 1-3 are not open to the public, building 4 is but it's not entirely done yet |
18:28 |
ireallyhateirc |
whosit, now we only need to rewrite Luanti in Elisp |
18:58 |
|
chilledfrogs joined #minetest |
19:06 |
MTDiscord |
<wsor4035> ireallyhateirc: store the current function in a local var, then define a function with your logic that returns the orginal function at the end |
19:07 |
ireallyhateirc |
that's what I did, I just try to predict any pitfalls and/or generalize this into something more reusable |
19:08 |
MTDiscord |
<wsor4035> use vargs so if more arguements are added you dont have to care. other than that, tis fine |
19:11 |
ireallyhateirc |
hmmm sounds good then |
19:12 |
whosit |
it can be a disaster if many mods do it or function signature changes :p |
19:13 |
whosit |
we had very tricky bug because bunch of stuff was overriding functions and one didn't pass all arguments - was looking for a bug in one mod, it was completely elsewhere |
19:15 |
ireallyhateirc |
I'm not making that kind of mod soup but I'm doing an API for shelves (and other item stores). You can add items to a shelf by right-clicking and such and because of that a few callbacks need to be added to the node registered as an itemstore. |
19:15 |
ireallyhateirc |
So I want to preserve original callbacks rather than purge them |
19:15 |
whosit |
I say local old_func = blah; blah = function() ... old_func() end  --- is a sign of a lack of good API |
19:16 |
erle |
<Soni> has anyone made a fully functional cave world yet |
19:16 |
erle |
Soni cora i think has made a mineclone cave world generator |
19:16 |
erle |
it's only mineshafts and caves forever |
19:16 |
ireallyhateirc |
whosit, I'm doing a shelf mod, I can't really predict whatever modders may want to do with it |
19:16 |
ireallyhateirc |
so I either preserve the callbacks or purge them |
19:17 |
erle |
Soni https://content.luanti.org/packages/cora/mcl_stoneblock/ |
19:17 |
erle |
> Â The claustrophobic anti-skyblock challenge - everything is there but covered in stone, mine-to-win DO NOT USE WITH EXISTING MAPS! |
19:17 |
ireallyhateirc |
I could indeed purge all callbacks that conflict with those I add with my mod and let modders deal with the mess |
19:18 |
whosit |
yeah, conflicting callbacks is also confusing. I still don't know how engine decides which one to call when you click an entity with an item |
19:20 |
whosit |
sorry, I may be talking past you, because I don't know what exactly you are implementing and I'm too distracted... |
19:21 |
ireallyhateirc |
nah, it helps. At least I get the whole picture |
19:22 |
Soni |
erle: not like that. like this: https://minecraft.wiki/w/File:Buffet_world_with_the_Caves_generator_and_checkerboard_biomes_of_size_0.png |
19:23 |
MTDiscord |
<wsor4035> ireallyhateirc: depending on which callback, there might be a global register on (callback) |
19:24 |
ireallyhateirc |
I'm talking about callbacks that are registered in the nodedef, I suppose global callbacks run on top of them? |
19:25 |
MTDiscord |
<wsor4035> yeah |
19:27 |
whosit |
you want it to work kinda like an item frame? |
19:28 |
whosit |
place item on a shelf with a right-click? |
19:28 |
|
SFENCE joined #minetest |
19:30 |
ireallyhateirc |
gimmie a second, I'll upload a video |
19:32 |
ireallyhateirc |
whosit, like this: https://files.catbox.moe/lmtctg.mp4 |
19:36 |
whosit |
nice :D |
19:38 |
whosit |
you think you need to call item callback yourself? |
19:38 |
whosit |
idk how it's supposed to work to be honest :p |
19:39 |
ireallyhateirc |
the API takes a nodedef and adds callbacks to it, then registers the node |
19:40 |
ireallyhateirc |
the question is: should it preserve original callbacks in any way? |
19:40 |
whosit |
wait, is it a general "shelf api"? |
19:41 |
ireallyhateirc |
it's supposed to, yes. Basically turn anything into shelf |
19:41 |
whosit |
ah, I see now |
19:41 |
ireallyhateirc |
I called it "itemstore_api" because in reality you'll be able to put items into any kind of node |
19:42 |
ireallyhateirc |
for example on non-grid-aligned tables |
19:42 |
ireallyhateirc |
or even into the toilet |
19:43 |
ireallyhateirc |
but because it's supposed to be general users could want something to happen along inserting the item and such |
19:43 |
ireallyhateirc |
which usually is done by callbacks |
19:44 |
ireallyhateirc |
I could probably purge the original callbacks and tell users of the API to use shelf-related callbacks |
19:44 |
whosit |
if it's for defining new type of "shelves", providing your own API would make sense, like "on_item_put", "on_item_take" etc |
19:45 |
whosit |
and "can_take_item" ;) |
19:49 |
ireallyhateirc |
sounds decent I guess |
19:51 |
MTDiscord |
<luatic> ireallyhateirc: this "pattern" is typically called "overriding" or "monkey-patching". it unfortunately can't be abstracted very well from within lua, so i suggest you just type it out every time. |
19:51 |
MTDiscord |
<luatic> it is a powertool but don't let it turn you into a powerfool ;) |
19:52 |
MTDiscord |
<luatic> whether a function may be overridden should be part of the API contract. there are some luanti callbacks that are to be used in this way. |
19:52 |
whosit |
does not like overriding is needed? it was just me who got confused what this is about |
19:53 |
ireallyhateirc |
well my intuition tells me it's a terrible idea so I'll simply purge the original callbacks and call it a day |
19:53 |
MTDiscord |
<luatic> i mean in the end what you'll be doing here will be similar to overriding, though overriding is sort of reserved for after-the-fact mutating of callbacks |
19:53 |
MTDiscord |
<luatic> ireallyhateirc: no! |
19:54 |
MTDiscord |
<luatic> or rather, you can do it, if you're fine with having a more restricted api; then your users will probably do the monkey-patching to break free from your chains :D |
19:54 |
MTDiscord |
<luatic> but really, why not delegate here? first run your logic, then run the user-provided logic, if there is one. |
19:55 |
ireallyhateirc |
hmmmm I can do that but what about on_rightclick which gets an itemstack and returns an itemstack? |
19:55 |
ireallyhateirc |
the shelf eats the itemstack |
19:56 |
ireallyhateirc |
should I pass the original itemstack to the other callback or should I give it the leftover one? |
19:57 |
|
fluxionary joined #minetest |
19:58 |
MTDiscord |
<luatic> depends on what kind of API you want to provide. make a decision and document it. if you want to overengineer your API, you could even have callbacks for both. |
19:59 |
ireallyhateirc |
I'll think about it. Anyway, thanks for the advices, it helped me gather thoughts. |
20:05 |
|
Verticen joined #minetest |
20:11 |
|
rodrigo-` joined #minetest |
20:26 |
|
SFENCE joined #minetest |
20:27 |
erle |
<whosit> if it's for defining new type of "shelves", providing your own API would make sense, like "on_item_put", "on_item_take" etc |
20:27 |
erle |
look at hopper too |
20:28 |
ireallyhateirc |
hopper what? |
20:29 |
erle |
how mineclonia handles hoppers and containers in general |
20:58 |
|
SFENCE joined #minetest |
21:16 |
|
SFENCE joined #minetest |
21:25 |
ireallyhateirc |
In the end I decided to run the original callbacks before the shelf callbacks. Now users can implement a shelf that turns anything into asphalt |
21:28 |
|
jaca123 joined #minetest |
21:42 |
erle |
ireallyhateirc does your shelf work with hoppers? |
21:43 |
|
nopjmp joined #minetest |
21:43 |
cheapie |
I wonder if there's a mod that makes saplings make a subtle *pop* sound when growing into trees, or if I need to write that sometime... |
21:45 |
ireallyhateirc |
erle, that's up to mineclonia/voxelibre/whatever to work out. |
21:45 |
ireallyhateirc |
Each shelf has inventory in its meta and I provide basic API like itemstore:add_item(itemstack) |
21:46 |
ireallyhateirc |
so you could technically add support for hoppers and such |
21:47 |
ireallyhateirc |
The mod is here if you're curious: https://codeberg.org/perfect_city_game_studio/itemstore_api |
21:47 |
ireallyhateirc |
but right now there's 1. no documentation 2. no examples |
21:48 |
ireallyhateirc |
I need to add more stuff, document it and if it works well enough in Exile then I'll publish it on ContentDB |
21:49 |
erle |
ireallyhateirc do you have tests? usually, unit tests can serve as both examples and documentation |
21:51 |
|
SFENCE joined #minetest |
21:51 |
ireallyhateirc |
right now? no. Do I plan writing that? Probably not, who knows. I'd have to install the software for unit tests on my meme distro |
21:51 |
erle |
what |
21:51 |
erle |
lol |
21:51 |
erle |
i mean tests can simply you having a single lua file that is using that API |
21:51 |
ireallyhateirc |
I'll provide example shelves later |
21:51 |
ireallyhateirc |
erle, I could do that too yeah |
21:52 |
erle |
ireallyhateirc like, stuff like this: https://git.minetest.land/erle/tga_encoder/src/branch/master/examples.lua |
21:52 |
|
freq joined #minetest |
21:53 |
ireallyhateirc |
I could do that, the question is whether I'm motivated enough |
21:53 |
erle |
seriously, without *using* your API or having tests, how are you confident enough in it? :D |
21:53 |
ireallyhateirc |
it's primarily for my Perfect City game and Exile. If it works there then it works. |
21:54 |
erle |
oh i see, you *are* using it |
21:54 |
ireallyhateirc |
but since I made it I considered I could share it with the rest of the Luanti world |
21:54 |
erle |
sorry for misunderstanding |
21:54 |
ireallyhateirc |
erle, here's a demo: https://files.catbox.moe/lmtctg.mp4 |
21:55 |
MTDiscord |
<luatic> yeah unit tests are great |
21:55 |
ireallyhateirc |
well, I'm not crazy enough to write software I'm not going to use |
21:56 |
erle |
lots of people are |
21:56 |
erle |
like, i maintain an implementation of the redo build system … and it seems a lot of people write half-finished buggy implementations of it *as a toy* |
21:56 |
MTDiscord |
<luatic> even if you are the only user, you'll eventually find that unit tests save you from tediously repeating regression tests yourself |
21:56 |
erle |
they never build software with it |
21:56 |
ireallyhateirc |
people who rewrite X in Rust |
21:56 |
erle |
luatic i have found that this is a wisdom that has to actually be experienced |
21:57 |
erle |
luatic like LANGSEC, many people's intuition is “doing it this way, methodically, will not save me work and take much longer” |
21:57 |
erle |
so you have to force people to do it |
21:57 |
ireallyhateirc |
luatic, I'm aware that unit tests are great but what I work on depends priparily on my ADHD hyperfixation |
21:57 |
erle |
easy out: make testing your new hyperfixation ^_^ |
21:57 |
ireallyhateirc |
primarily* |
21:58 |
erle |
testing is really undervalued among hobbyists |
21:58 |
ireallyhateirc |
maybe I'll do some tests if I feel like it later, first I need to finish all features though |
21:58 |
erle |
many regressions i have found are so simple to catch |
21:59 |
erle |
campfires not burning anything in mineclonia for example |
21:59 |
erle |
or the “grass below sea level” thing |
21:59 |
erle |
which, by the way, will provide excellent player trails once it is fixed. you will be able to follow paths that users took into newly-generated biomes on 5.10 |
21:59 |
erle |
there are a bunch of other tricks |
21:59 |
erle |
fortunately, griefers are mostly too stupid to use them |
22:00 |
ireallyhateirc |
how do I test if a player can put an item into a shelf? Spawning a dummy player-like entity that'd punch the shelf? |
22:00 |
erle |
you can use fake players *or* you can use a CSM obviously |
22:00 |
ireallyhateirc |
I have no experience with writing CSMs |
22:00 |
erle |
the latter is harder to automate |
22:02 |
erle |
ireallyhateirc here is a funny one for you to laugh about https://repo.or.cz/waspsaliva.git/blob/HEAD:/clientmods/undying/init.lua |
22:02 |
erle |
it does /sethome on taking damage and /home on death |
22:03 |
erle |
and autodigs the bones |
22:03 |
ireallyhateirc |
are there any tutorials/documentation for writing CSMs ? |
22:03 |
erle |
voila, immortailty |
22:04 |
erle |
no idea |
22:04 |
erle |
this one eats when you are hungry: https://repo.or.cz/waspsaliva.git/blob/HEAD:/clientmods/autoeat/init.lua |
22:08 |
ireallyhateirc |
hmmm I'm cloning that repo, some good examples are there |
22:08 |
erle |
waspsaliva is coras client |
22:10 |
erle |
here are some dragonfire (lizzy's client) CSMs https://github.com/orgs/dragonfireclient/repositories |
22:11 |
erle |
haha there is one to aim bows at players that automatically includes gravity: https://github.com/dragonfireclient/bowaimbot |
22:11 |
erle |
https://github.com/dragonfireclient/bowaimbot/blob/master/init.lua |
22:22 |
|
SFENCE joined #minetest |
22:35 |
|
hunter0one joined #minetest |
22:43 |
|
SFENCE joined #minetest |
23:07 |
|
SFENCE joined #minetest |
23:33 |
|
panwolfram joined #minetest |