Time Nick Message 00:04 gentoobro ok, thanks :) 10:06 sfan5 https://github.com/minetest/minetest/pull/1510 10:06 sfan5 ^ comments please 10:13 Krock +1 10:53 sfan5 BlockMen: any comments on #282 - #287 ? (at _game) 10:57 BlockMen sfan5, 282 seems fine. 287 could cause crash when node is nil 10:58 sfan5 how about #282 - #286 ? 10:58 sfan5 I'll merge 282 now 10:59 sfan5 how about #282 - #286 ? -> how about the others? 11:00 Zefram_Fysh the door code already relies on node definitions not being nil 11:00 Zefram_Fysh that should probably be fixed; it's just not a new issue introduced by that patch 11:01 BlockMen 283, no; 284 yes; 285 yes; 286 yes 11:01 Zefram_Fysh why no for 283? 11:02 Amaz imo 283 doesn't make sense. 11:03 sfan5 merging the ones BlockMen said yes to. 11:03 Zefram_Fysh the filled buckets are distinct inventory items, and are useful in creative mode. why would they not be in the creative inventory? 11:03 BlockMen creative inventory is already overstuffed 11:04 BlockMen we need categories first (or something else to sort it) and then we can add more items 11:04 Zefram_Fysh categorisation would be nice, sure 11:05 BlockMen Zefram_Fysh, you can still convince nore and sfan5, then it goes in 11:05 sfan5 nore is not here ATM 11:05 sfan5 he told me we should not wait for his approval of things 11:05 Zefram_Fysh ah, sporting 11:05 Zefram_Fysh yeah, nore is on holiday 11:05 BlockMen well, then for now no 283 11:05 Zefram_Fysh sfan5: what is your opinion on 283? 11:06 sfan5 filled buckets in creative menu would make sense 11:07 Zefram_Fysh nore has occasionally come online from holiday. I'll try to catch him for at least a quick opinion 11:07 sfan5 and the {water,lava}_source nodes should probably get removed from the creative inv 11:07 Zefram_Fysh thanks for your attention to these issues 11:09 Zefram_Fysh I vacillate about the source nodes. it is useful in creative mode, for some operations, to be able to take a stack of source nodes and place them directly. but they're clearly in a different class from the rest of the inventory, as they're not items that should ever appear in inventory in the regular game 11:10 Zefram_Fysh the status of "in creative inventory" is a bit overloaded. unified_inventory uses it to decide which items should be visible for the survival-mode craft guide, which is kinda inevitable because there isn't any more specific flag for that 11:11 Zefram_Fysh and I worry somewhat about creative inventory bloat, for things that would add tens of items to the creative inventory. but I wouldn't worry about it for one-per-liquid-type filled bucket items 11:12 BlockMen this time its 2 buckets, next time something else. the sum is the point ;) 11:12 Zefram_Fysh in the technic game, I have an idea for uranium enrichment that would add about 50 grades of uranium metal, potentially each in dust, ingot, and block form. *that's* a bloat worry 11:13 BlockMen because somewhere else its even worse we dont make it bad 11:13 BlockMen *need to make 11:13 sfan5 idea: creative inventory categories 11:14 Zefram_Fysh true, but I don't think adding the filled buckets is making it bad at all. the filled buckets are distinctly different items; the essence of bloat is to have explicit listing of items that are essentially repeating information 11:14 BlockMen sfan5, feel free to add it 11:14 Zefram_Fysh slab and stair and microblock items for each solid block type: that's bloat 11:18 Zefram_Fysh what do you want to do on 287? I can work up an additional patch that makes the door code generally robust against unregistered nodes. or, the weaker option, I could do a new version of the pairing patch that just avoids repeating that vulnerability in the new code 11:21 BlockMen https://github.com/minetest/minetest/blob/aebbcbf398a9dde6b2cbc8ab05c103f44f6f703d/builtin/game/misc.lua#L83 11:22 Zefram_Fysh oh, that's convenient. didn't know about that 11:22 Zefram_Fysh will revise the patch 11:28 Zefram_Fysh http://paste.scsys.co.uk/409107 is revised patch for #287 11:34 BlockMen it should be ~= 0 since the function should return 1 if its a door 11:34 Zefram_Fysh it was always a negated test 11:38 Zefram_Fysh BlockMen: it was always a negated test. the line being replaced has a "not"; the meaning of the line is "if pt3 isn't a (matching) door" 11:38 BlockMen oh, right 11:38 BlockMen sfan5, could you merge ^ 11:39 sfan5 sure 11:40 Zefram_Fysh thanks 11:44 Kalista hey Blockmen i heard you got leveldb to compile from source in windows? 11:45 Kalista I tried and ran into a few problems, was wondering if you had any specific tips/versions used to get the .lib compiled 11:45 BlockMen Kalista, just search for leveldbwin 11:45 BlockMen the download includes a msvc project file 11:46 Kalista the vs2010 project file? might of got that version already 11:46 BlockMen yes 11:46 sfan5 Kalista: I used the leveldb from here https://github.com/bitcoin/bitcoin/tree/master/src/leveldb (just btw) 11:46 Kalista i ran into a linker error with its .lib after linking it 11:49 Kalista i upgraded the 2010 project to 2013 to match my IDE, then during compilation get 'error LNK2001: unresolved external symbol __imp__PathFileExistsW@4 C:\x\leveldb.lib(env_win.obj) minetest' 11:49 BlockMen what os are you using? 11:49 Kalista win7 64bit 11:50 Kalista trying to build 32bit bin 11:50 BlockMen hmm...have you been using multithreaded (/MT) codegeneration for the lib? 11:50 Kalista ill double check 11:51 Kalista set to Multi-threaded Debug DLL (/MDd) 11:51 Kalista should i recompile with MT? 11:52 BlockMen yes 11:52 Kalista kk trying now :) 11:54 Kalista same error, file was the same size too so maybe it was already /MT 11:55 Kalista oh wait i made a debug .lib 11:55 Kalista retrying with release 11:57 Kalista nope still LNK2001 error :/ 12:04 BlockMen do you get the link error when trying to compile minetest with leveldb or when compiling leveldb 12:04 Kalista compiling minetest with leveldb, leveldb compiles file 12:06 BlockMen could you show me all your additional dependencies for linker input? 15:35 ShadowNinja ''tell BlockMen I removed the collision detection a while ago, or at least removed the property, so unless it defaults to true it should be disabled. *checks* 15:35 HLuaBot I'll tell that to "BlockMen" next time I see them around. 15:36 ShadowNinja celeron55: http://pastebin.ubuntu.com/7831616/ 15:36 celeron55 maybe you can fix it 15:42 ShadowNinja celeron55: Maybe, but I don't know much about how launchpad works, so I might just break all the builds. 15:42 ShadowNinja Comments? (better non-freetype font) https://github.com/minetest/minetest/pull/1427 15:42 Krock ^ don't know about license 15:43 celeron55 ShadowNinja: me neither 15:43 celeron55 launchpad is basically working on pure luck by now 15:44 celeron55 there was some reason why the stable build was locked to a version 15:45 celeron55 i don't remember what it was; someone maintaining it at that time made it so 15:46 celeron55 i guess the same person who committed the stuff in packaging? 15:46 celeron55 https://code.launchpad.net/~minetestdevs/minetest-c55/packaging 15:48 celeron55 http://irc.minetest.ru/minetest-dev/2014-03-25 15:48 celeron55 looks like he is called spillz on IRC 15:49 celeron55 (found this by searching "minetest launchpad gettext site:irc.minetest.ru #minetest-dev" on duckduckgo.com) 16:12 Calinou Krock, isn't it the same? 16:13 Krock Calinou, I think, it's LGPL but it's a font... 16:13 Calinou it's the same if you didn't changed stuff substantially 16:14 Krock ok 16:14 ShadowNinja Krock: Where did you get that font? Did you make it yourself? 16:14 Krock ShadowNinja, it's an edited .png file 16:14 Krock already contain in the minetest project 16:17 ShadowNinja Krock: Same license then. 16:17 Krock fine. I just was a little confused about the source of that font 16:19 Calinou likely from Irrlicht 16:51 ShadowNinja Hmmm, there are two ways to implement case-insensitive player names, but one might not work. The player name has to keep it's proper case, because mods do case-sensitive checks and otherwise chests, areas and the like will only work when you connect with the correct case. However, does the client depend on it's player name? If a player connects as sHaDoWnInJa can I forcibly change the name to 16:51 ShadowNinja ShadowNinja on the server without there being any issues? 16:51 sfan5 https://github.com/minetest/minetest/pull/1510 16:52 sfan5 ^ comments please 16:52 ShadowNinja If not, we'll have a pseudo-case-insensitivity where you can only connect with the right case. 16:52 ShadowNinja sfan5: Done. 17:04 ShadowNinja celeron55: Do you know if changing the playername on the server will affect anything? 17:13 ShadowNinja Well, if it doesn't I might have a working case-insensitive-playername patch soon... 17:16 Zefram_Fysh the sensible way to be case-insensitive is to fold all strings to canonical case (usually lowercase), so that you're not preserving distinctions that you've decided don't make a difference 17:18 Zefram_Fysh I wouldn't object terribly to names being fully case insensitive, but please don't give us a bastardised sometimes-case-insensitive-sometimes-case-sensitive (aka "case-insensitive-but-case-preserving") system 17:29 ShadowNinja -_- Using the player name as the salt is being wonderfully helpfull. 17:30 ShadowNinja Zefram_Fysh: That's exactly what I intend to do. Like IRC does, but with persistence and some semplance of compatability. 17:31 Zefram_Fysh you will not succeed in maintaining compatibility unless you fully separate the concepts of internal name and display name 17:32 Zefram_Fysh that's the only way to prevent the "preserved" case screwing up normal string operations on the true name 17:33 celeron55 hmm, this is pretty hard actually 17:34 celeron55 doing it adequately could be practically impossible 17:35 celeron55 even with completely discarding compatibility it would be stupidly hard to get mods work like players would expect 17:37 ShadowNinja celeron55: Minetest's braindead hashing makes it impossible to do anything much better than https://github.com/ShadowNinja/name_restrictions/blob/master/init.lua#L40-L73 17:37 ShadowNinja (Must connect with proper casing) 17:37 celeron55 braindead hashing? 17:37 sfan5 -_- Using the player name as the salt is being wonderfully helpfull. 17:38 ShadowNinja celeron55: hash = sha1(password + name); 17:38 sfan5 better than no salt 17:38 celeron55 that's not braindead 17:38 celeron55 it's just incompatible with this thing 17:40 ShadowNinja celeron55: The proper way to do it is with a long random string and a seperately transmitted salt. 17:40 celeron55 so? 17:41 Zefram_Fysh name as salt isn't a great choice generally, it's just a lot better than having no salt at all 17:41 celeron55 i'm not going to continue arguing about this; it is what it is and you can't change history 17:41 ShadowNinja But the sent hash and the hash in our Auth table may differ and still be for the same password. 17:42 sfan5 the auth system wasn't designed with case-insensetivity in mind 17:43 ShadowNinja So, for case-insensitive player names we've got that mod, that's about as smart as it gets. 17:45 Zefram_Fysh the issue you run into here is generally of the form that you can't have different parts of the system disagree about which distinctions (case distinctions here) are significant. IRC gets away with case preservation because it was always so, so everything that talks IRC (at least in theory) knows to treat names that way. you can't retrofit case insensitivity 17:47 ShadowNinja Zefram_Fysh: You can by forcibly changing the name of the player when they connect to the proper case, if you don't salt the password with the playername. 17:47 celeron55 we could make this work so that for all new hashes, a special character is prepended to the hash in auth.txt to mean that it is made using a lowercase name; also we will add the hash generated using lowercased name in TOCLIENT_INIT as a new field 17:47 celeron55 i mean 17:47 celeron55 TOSERVER_INIT 17:47 celeron55 then this allows us to move forward with this during the next versions 17:48 Zefram_Fysh you've got here a disagreement between the auth system and your new code about case sensitivity. that's firmly in the class of problem that I mentioned. if you overcome that, you'll run into an unlimited number of similar disagreements with existing mod code 17:48 ShadowNinja celeron55: Better yet, don't hash with the player name at all. 17:49 Krock I got an idea about case insensitive names: create file "renamed.mt", rename all players/* files to lowercase, after then, only use lowercase of each name to open that file 17:49 celeron55 ShadowNinja: in that case please write a full proposal of how to rework the password hashing scheme 17:49 celeron55 ShadowNinja: and when agreed, then implement it 17:49 celeron55 of course we could just push this to 0.5 and do it in an incompatible way; but 0.5 can be even years awayy 17:49 celeron55 -y 17:50 ShadowNinja celeron55: salt = random_bytes(); hash = sha1(password + salt) + "$" + salt; 17:50 celeron55 yes, then the network protocol please 17:51 celeron55 you need to send the salt to the client at some point, and at the moment that point does not exist 17:51 celeron55 there is no packet moving before TOSERVER_INIT 17:51 ShadowNinja That needs work, because the strings are sent with a fixed size. You'll have to add another saly field to TOSERVER_INIT. 17:51 celeron55 the client can't generate the salt because the salt has to be grabbed from the server's storage 17:51 ShadowNinja I'd rather just redo this incompatibly in 0.5 though. 17:52 sfan5 ^ 17:52 celeron55 do you feel like starting to implement it now? 17:53 celeron55 i've been fine with the idea of somebody starting an official 0.5 branch for a long time already 17:53 sfan5 BTW: minetest.net could use some new screenshots 17:53 ShadowNinja Hmmm, yes, the client needs the salt, which means that it would have to send the password in TOSERVER_INIT@ or similar. 17:54 ShadowNinja INIT2* 18:02 * VanessaE shudders at the thought of starting the 0.5 branch 18:02 Exio there have been 18:02 Exio like, a lot of "start 0.5 branch, why not" 18:04 ShadowNinja https://github.com/minetest/minetest/pull/1511 18:04 ShadowNinja ^ Fully compatible, but not ideal. 18:04 Zefram_Fysh actually, looking at the way you use hashing, the salt isn't winning you anything at all 18:05 Zefram_Fysh the only benefit you get from the hashing is to force the password's entropy into a fixed size 18:05 sfan5 are you saying we shouldn't hash passwords? 18:05 Zefram_Fysh you might as well hash with no salt at all 18:05 sfan5 nope 18:05 sfan5 that makes brute-force even easier 18:05 sfan5 -> rainbow tables 18:06 Zefram_Fysh I'm not saying you shouldn't hash passwords. the issue is that you're not using hashing in the way that's normally reckoned to be helpful 18:06 Zefram_Fysh as things stand, there's no need for an attacker to brute-force or otherwise reverse the hash 18:06 sfan5 we shouldn't use sha1 for passwords anyway 18:06 sfan5 uh, why? 18:06 VanessaE sfan5: AES or blowfish then? 18:07 Zefram_Fysh if an attacker swipes the hash from a server's password database, all he needs to send to login is the captured hash 18:07 ShadowNinja VanessaE: SHA256 or 512. 18:07 sfan5 VanessaE: thats not a hashing function 18:07 sfan5 VanessaE: bcrypt 18:07 sfan5 ShadowNinja: no 18:07 sfan5 Zefram_Fysh: no 18:07 ShadowNinja SHA1 was deprecated for password hashing a while ago. 18:07 VanessaE I know, but I thought I'd read somewhere that those two could be used for the purpose. 18:07 VanessaE sha256? bad idea I think. 18:07 Krock md5? 18:07 VanessaE md5? O_o 18:07 VanessaE you're kidding, right? 18:08 Krock don't know. but it hashes 18:08 sfan5 Zefram_Fysh: IIRC passwords are sha1(name + sha1(password)) with the sha1(password) coming from the client 18:08 sfan5 Krock: gtfo 18:08 VanessaE md5 is, as I understand, somewhat trivial to reverse now. 18:08 sfan5 http://codahale.com/how-to-safely-store-a-password/ 18:08 Zefram_Fysh the way password hashing is normally done, the way that's really useful for security, is that the client needs to send the actual password, and the server hashes it and compares that to the stored hash. that requires that an attacker who swiped the hash reverse the hash. what you've done is that the client sends the hash, so the server has no proof that the client knows the password, only that he knows the hash 18:09 sfan5 Zefram_Fysh: no, see what I said 18:09 VanessaE "You can use huge salts or many salts or hand-harvested, shade-grown, organic Himalayan pink salt." <-- plol 18:10 celeron55 Zefram_Fysh: yeah, that is true; it doesn't make much sense to do anything more special than the current thing when we have no encryption 18:10 celeron55 and encryption doesn't make sense unless we have certificates 18:10 celeron55 and it gets kind of totally over the top 18:10 VanessaE celeron55: but if you go that route, what good are passwords at all then? 18:10 Zefram_Fysh sfan5: src/server.cpp around line 1570 appears to just compare the supplied value against stored value, without performing a hashing operation 18:10 celeron55 VanessaE: just as good for any https web service? 18:10 celeron55 +as 18:10 VanessaE celeron55: nononono 18:11 ShadowNinja Zefram_Fysh: Correct. The client sends the hash the first time and it's compared on every subsequest connection. 18:11 VanessaE celeron55: I mean as in how some other games do it, where you supply a name, and the game/server generate and exchange a cert and THAT is serves as the user's credentials in the future 18:11 VanessaE I forget exactly which games - maybe some Quake/OA derivatives. 18:11 sfan5 VanessaE: how mumble does it? 18:11 VanessaE sfan5: maybe the same 18:12 ShadowNinja sfan5: You don't need the password, you just need the hash and an appropriatly modified client. 18:12 sfan5 ShadowNinja: last time I checked it wasn't like that 18:12 ShadowNinja VanessaE: The problem with that is that users have to keep track of their cert. 18:12 VanessaE jeez, my english sucks. 18:13 ShadowNinja sfan5: Check again. 18:13 VanessaE ShadowNinja: apparently, the games in question do that automagically. 18:13 sfan5 ShadowNinja: currently doing 18:13 ShadowNinja VanessaE: How? 18:13 VanessaE ShadowNinja: beats me how. I've never looked into it in great detail 18:14 Zefram_Fysh celeron55: proper password hashing is still useful in the absence of encryption, as it tackles a major threat model (hash spied from static storage), even though it doesn't tackle another major threat model (password sniffed in transit) 18:14 Zefram_Fysh also, encryption is still useful without certs, as it tackles passive sniffing, even though it doesn't tackle MitM 18:14 VanessaE I'm surprised sapier isn't here right now ;() 18:14 ShadowNinja I don't see how that's possible. But SSL/TLS doesn't require you to explictly provide a custom cert, it can make one for you for the duration of the connection. 18:14 VanessaE ;) he loves these security discussions 18:16 VanessaE ShadowNinja: well it's not like the user needs to know where their key files are stored 18:16 ShadowNinja Zefram_Fysh: The server could optionally have a custom cert, and on connect you could see something like "this server's certificate fingerprint is 11:22:33:44 do you trust it?". 18:16 VanessaE I mean, honestly, they don't. 18:16 ShadowNinja VanessaE: But what if I switch computers? 18:17 VanessaE ShadowNinja: THEN you can copy your keys over. Surely it would be documented? 18:17 Zefram_Fysh SN: yes, there are many options along those lines. having certs would be sensible, and the ssh behaviour of picking up public key on first contact to check all later contacts is sensible 18:17 VanessaE just as when you copy your worlds, mods, etc etc etc over to the new machine 18:17 ShadowNinja VanessaE: Too much work for users, too easy to lose your accounts. 18:17 VanessaE ShadowNinja: tell that to the users who play the games I mentioned 18:18 VanessaE apparently it's not that big a deal in practice 18:18 PenguinDad VanessaE: but what would happen if you accidentally delete your cert? 18:18 celeron55 VanessaE: that's a client-side certificate then 18:18 VanessaE or maybe there's a graceful way to recover one's keys? 18:18 celeron55 VanessaE: it's an additional thing to what i described 18:18 celeron55 VanessaE: i was talking about a server certificate so that the client can trust the server 18:18 ShadowNinja VanessaE: I connect from multiple devices, including my tablet(s), and I don't want to have to copy an SSL cert to all of them. 18:18 VanessaE celeron55: ah, ok. different issue then 18:18 celeron55 or, maybe just a key pair 18:18 celeron55 but something like that anyway 18:19 VanessaE PenguinDad: I don't know. I'm no security expert but come on, there are people who figured this stuff out long ago. doesn't matter, c55 was talking about something else anyways 18:19 sfan5 ShadowNinja: you were right. last time I tried this with a modified client it didn't work 18:19 VanessaE (or rather a different part of the same problem) 18:20 * VanessaE shrugs 18:20 VanessaE I'll shut up now 18:22 Calinou I forget exactly which games - maybe some Quake/OA derivatives. 18:22 Calinou it uses GUID (globally unique ID) 18:22 Calinou it's quite evadable and fakable 18:22 Calinou VanessaE: how mumble does it? 18:23 Calinou certificates, self-signed, automatic generation 18:23 Calinou worth as much as a dirt block 18:23 sfan5 hm? 18:23 sfan5 care to explain why? 18:23 Calinou self-signed and automatically generated 18:23 Calinou it's exactly how certificates are not meant to be used 18:23 sfan5 who cares about that 18:24 sfan5 [citation needed] 18:24 sfan5 as long as the server checks the certificate against a know cert 18:24 sfan5 it doesn't matter whether self-signed or not 18:28 ShadowNinja TLS would be good, but that depends on TCP. This is all best done in 0.5 to avoid compatability headaces or even impossibilities. 18:29 sfan5 ShadowNinja: dts 18:29 sfan5 dtls* 18:29 VanessaE now how about something new... this just came up: http://pastebin.ubuntu.com/7837622/ 18:30 sfan5 this is not useful without a backtrace 18:30 VanessaE that's all I got, sorry. 18:33 VanessaE (you know I'd have produced a backtrace had that been running in gdb or so) 18:44 VanessaE I've got it loaded in gdb for the next time though. 18:45 VanessaE one thing I have noticed is rather high CPU usage lately. can't pin down why 19:24 fireglow http://bpaste.net/show/T5cQ4vnJuYGDms2vlI4C/ 19:25 VanessaE https://github.com/minetest/minetest/issues/1270 19:27 VanessaE fireglow: ^^^ 19:27 VanessaE bbl 20:15 luizrpgluiz hi devs 21:14 RealBadAngel https://github.com/minetest/minetest_game/pull/290 21:17 VanessaE RealBadAngel: line 327, make it math.random(90) 21:17 RealBadAngel i picked 180 to be able to flip the plant 21:17 Zefram_Fysh math.random has inclusive bounds, so math.random(0, 180) has 181 possible outputs, including both 0 and 180. that's not what you want 21:18 VanessaE RealBadAngel: turning it 180 will flip the textures? 21:18 Zefram_Fysh you want math.random(0, 179) or math.random(0, 89) 21:18 RealBadAngel Zefram_Fysh, doesnt really matter 21:19 Zefram_Fysh it's easy to get it right 21:19 VanessaE RealBadAngel: then use math.random(180) 21:19 VanessaE you don't need the 1, 21:19 VanessaE er 0, 21:19 Zefram_Fysh math.random(180) is equivalent to math.random(1, 180). that's also a correct approach, if you're not fussy about where you wrap 21:20 VanessaE since you already offset them by 1 degree anyway to avoid the z-fighting glitch, m.r(180) would be just as good 21:25 RealBadAngel i made it 0,179 21:26 RealBadAngel it afftects dry shrubs, grass, flowers, wheat, papyrus 21:26 RealBadAngel and ofc not the jungle grass 21:26 VanessaE cotton too 21:27 VanessaE if you change wheat, don't forget to change cotton to follow. 21:28 VanessaE though in this case I guess you already did 21:28 RealBadAngel yeah 21:28 Zefram_Fysh is the change of an ABM from interval=90 chance=2 to interval=2 chance=90 intentional? it seems unrelated to the rotation 21:28 RealBadAngel ouch 21:28 RealBadAngel thats a mistake 21:29 VanessaE haha 21:29 VanessaE good catch, Zefram_Fysh 21:30 RealBadAngel i was testing that and messed values when restoring defaults ;) 21:33 RealBadAngel VanessaE, with 180 deg whole the plant will be flipped just 21:34 RealBadAngel it applies to vertices and texture will follow 21:34 VanessaE ahh 21:34 VanessaE ok then 180 ist is. 21:34 VanessaE it is* 21:34 Zefram_Fysh with an asymmetric texture, wouldn't a rotation of 181 deg be different from a rotation of 1 deg? 21:35 Zefram_Fysh I think you need a 360 deg range to cover all visually distinct possibilities 21:35 RealBadAngel i cant 21:35 RealBadAngel param2 is u8 21:35 VanessaE Zefram_Fysh: 8 bits. 21:35 Zefram_Fysh oh, of course 21:35 VanessaE besides, plantlike drawtype has some mirroring anyway 21:36 Zefram_Fysh you could scale so that the unit is 2 deg, so that param2 in [0, 180) covers a 360 deg range 21:36 Zefram_Fysh or make the unit 360/256 deg, so that param2 in [0, 256) covers 360 deg 21:36 RealBadAngel is that really needed? 21:37 Zefram_Fysh if you rely on mirror symmetry, then surely the relevant rotational symmetry is four-way, because of the crossed polygons of plantlike drawtype, in which case you only want a 90 deg range, not 180 deg 21:37 RealBadAngel we dont wanna make plants smoothly animate, we want them to be some random 21:37 Zefram_Fysh absent mirror symmetry, covering the full 360 deg range is not necessary, it just produces a better result 21:38 RealBadAngel and 180 for sure, textures are asymetric 21:38 RealBadAngel 90 would be correct for symetric texture 21:39 Zefram_Fysh using as small a rotation unit as possible is also not necessary, just produces a fractionally better result, making better use of the available resources (the u8) 21:39 Zefram_Fysh there's nothing magical about the degree as a unit 21:40 RealBadAngel and theres no need to add some magical code to scale it in draw loop 21:40 Zefram_Fysh oh, but there is 21:41 Zefram_Fysh if param2 is denominated in degrees, then it *does* have to be scaled 21:41 RealBadAngel no 21:41 RealBadAngel its just adding the value 21:41 luizrpgluiz devs, what programs do I need to do my first mod for minetest? 21:41 RealBadAngel https://github.com/minetest/minetest/commit/9dc8901e32fcf875c2b3bc52c2dec6b03a29bf37 21:41 Zefram_Fysh adding to a value that then gets scaled? 21:42 RealBadAngel it doesnt get scaled or whatever 21:42 VanessaE luizrpgluiz: a text editor, an image editor, and minetest. 21:42 luizrpgluiz But which one? have a good program that can recommend me to use? 21:42 VanessaE luizrpgluiz: I use gedit and sometimes nano 21:43 VanessaE RealBadAngel uses geany 21:43 VanessaE some folks are happy with notepad++ or whatever it's called 21:43 Zefram_Fysh rotateXZBy is obviously doing some scaling internally 21:43 RealBadAngel but thats not our concern, its irrlicht 21:44 luizrpgluiz and to draw the blocks? 21:44 VanessaE luizrpgluiz: you specify the blocks in your code by telling the engine what draw type you want to use. 21:44 Zefram_Fysh anyway, if you insist on using a degree-denominated API, you can have the unit be 2 deg, with "+ n.param2 * 2", and on x86 that's exactly the same cost as "+ n.param2". that's cheap scaling 21:45 VanessaE luizrpgluiz: i.e. you tell the engine that a given node is a cube, or a plantlike, or flat, or one of a number of others 21:45 VanessaE and you tell it what the properties are of that node, such as how much light it projects (if any), what groups its in, its name, and a whole host of other things 21:45 VanessaE supply textures to it 21:46 VanessaE and the engine does the rest 21:46 VanessaE later on you can tell the engine to execute pieces of code in response to your node being punched, right clicked, etc. 21:48 VanessaE RealBadAngel: he does have a point - if the processor won't run any slower with a multiplier/shift operation added, you may as well designate it in 2-degree increments. 21:50 Zefram_Fysh it's the LEA (load effective address) instruction. you get an addition of up to two registers, one of them optionally shifted left by up to 3 bits, and a constant, all in one instruction that executes in one tick 21:50 Zefram_Fysh CISC, eh 21:53 RealBadAngel please explain me what for? 21:54 Zefram_Fysh so that the range of possible plant rotations covers the full circle 21:54 RealBadAngel 180 degs cover whole circle 21:54 Zefram_Fysh no, 180 deg covers half a circle 21:54 RealBadAngel remember that texture is 2 sided 21:55 VanessaE RealBadAngel: yeah, but the other side is mirrored. 21:55 RealBadAngel back of it will come in front 21:55 RealBadAngel exactly 21:55 VanessaE I mean left-to-right mirrored. 21:55 Zefram_Fysh if you ignore asymmetry of the texture, then the fact that the texture is shown in two places 90 deg apart means that 90 deg range would effectively cover the whole circle 21:56 RealBadAngel but most of the textures are asymmetric 21:56 Zefram_Fysh if asymmetry applies, then you need 360 deg. neither way is 180 deg both necessary and sufficient 21:56 RealBadAngel its good enough 21:57 Zefram_Fysh try it out with a temporary very-asymmetric texture. try to get a screenshot showing plants covering the whole 360 deg at intervals of 30 deg 21:57 RealBadAngel as i said its used to randomize stuff, not for smooth animations of plants 21:58 RealBadAngel nobody will walk around and check if flowers in the world does rotate in full circle 21:58 Zefram_Fysh the randomisation would be appreciably better if it covered the whole range. not attempting smooth animation is exactly why a 2 deg step will be fine 21:59 Zefram_Fysh as for "good enough", the game is good enough without this param2 rotation at all 21:59 RealBadAngel no its not 21:59 luizrpgluiz I want to create a biome using the blocks game 21:59 RealBadAngel all the plants in the row look the same 22:00 RealBadAngel and thats not any good 22:00 Zefram_Fysh it doesn't affect gameplay. it's only cosmetic 22:00 VanessaE luizrpgluiz: can you be more specific? 22:00 RealBadAngel like almost everything i code in the engine lately 22:01 luizrpgluiz I looked a mod minecraft with giant trees using the blocks game 22:01 VanessaE luizrpgluiz: https://forum.minetest.net/viewtopic.php?id=4394 22:02 RealBadAngel if you doesnt care bout it make flowers full nodes ;) 22:02 RealBadAngel no rotations or whatever needed, funcionality will remain the same 22:03 Zefram_Fysh I do like the game to look better than what is merely good enough. as do you 22:03 luizrpgluiz yes, bad blocks using the game itself without using other dependencies 22:04 VanessaE RealBadAngel, Zefram_Fysh all of this aside, what about the placement of the orthogonal textures? Would a rotation of +90 look the same as 180? 22:05 Zefram_Fysh no 22:05 VanessaE luizrpgluiz: you could always code your own game or mod to do the same thing but why re-invent the wheel? 22:06 Zefram_Fysh looking at the node, you can pick out, for example, the right-hand sides of each instance of the texture. the combination of the two uniquely identifies a quadrant of the node 22:06 VanessaE Zefram_Fysh: good point 22:06 Zefram_Fysh if you rotate that by 90 deg, you have textures in the same planes, but one of them the opposite way round 22:09 luizrpgluiz is not it, what I want is to create new biomes using blocks minetest own, such as a biome where trees have one on top of another 22:12 VanessaE luizrpgluiz: well that should be easy enough to code. 22:14 luizrpgluiz yes 23:11 Jordach apparently minetestserver is not detecting existing games with --gameid