21:36 <+SirCmpwn> fwiw 21:36 < redstonehelper> >the project was bought by Mojang 21:37 < redstonehelper> that's not very specific 21:37 < nickelpro> that still makes no sense 21:37 < redstonehelper> all that means is that someone and/or mojang bought something relating to and/or including bukkit 21:37 < nickelpro> ya 21:37 <+SirCmpwn> someone should start selling bukkit just to piss off mojang 21:37 < nickelpro> lol 21:37 <+SirCmpwn> I would love to see where that goes 21:38 < dx> >selling bukkit 21:38 < dx> you mean like the spigot 1.7 protocol patches? 21:38 <+SirCmpwn> spigot was selling things? 21:38 < dx> not spigot 21:38 < dx> unidentified third parties 21:38 <+SirCmpwn> well, yes 21:39 <+SirCmpwn> that'd probably be a-okay with LGPL and the decompiled confusion out of the way 21:39 < dx> hahah damn 21:39 < dx> this is just terrible 21:40 <+SirCmpwn> what happend with spigot? 21:40 < dx> nothing yet 21:40 <+SirCmpwn> spigot is LGPL, too 21:40 <+SirCmpwn> so it can be modified and sold 21:40 < dx> "LGPL" 21:40 <+SirCmpwn> ? 21:41 < dx> ignoring what happened today, the minecraft server code is under the mojang EULA which says don't sell, don't redistribute 21:41 <+SirCmpwn> well, I imagine it could be construed as dual-licensed 21:41 <+SirCmpwn> or worst case, the licenses are incompatible and Mojang implicitly sacrifices all copyright to them 21:41 <+SirCmpwn> by way of neither being enforcable 21:41 < dx> is that a thing? 21:41 < nickelpro> dx: LGPL trumps that if mojang claims to be distributing under it 21:42 <+SirCmpwn> IANAL, but I believe so 21:42 < nickelpro> at the very least it would make for an interesting challenge 21:42 <+SirCmpwn> do not dual license your projects under incompatible licenses :) 21:42 < dx> dual-licensing under incompatbile licenses is really common actually 21:42 <+SirCmpwn> is it? 21:42 < dx> "our project is GPL but contact us if you want to use it for closed source software" 21:43 < dx> most typical case of dual licensing 21:43 <+SirCmpwn> more permissive licenses are compatible with GPL 21:43 <+SirCmpwn> like MIT and GPL are compatible 21:43 <+SirCmpwn> again, though, IANAL 21:43 <+SirCmpwn> I'd definitely consult one if I were about to assert that minecraft cannot be coyprighted 21:44 < dx> seems like md_5 is going to have to ask for donations 21:44 < nickelpro> zlib, beer, MIT, anything that is > GPL permissiveness is usually compatible, it's just when you get into the more lengthy licenses you see incompatibilities ie Apache 21:44 <+SirCmpwn> I ask for donations on projects that require money to maintain 21:44 * eddyb had a thought today... what if Realms would become so profitable one day that Mojang could opensource Minecraft? 21:44 <+SirCmpwn> like mediacrush 21:47 < M4GNV5> eddyb: then they would have to block the standard server version i think... otherwise ppl would use free hosting provider and play minecraft completely free 21:48 < nickelpro> M4GNV5: point being they wouldn't care, because they made enough money off of realms 21:48 < eddyb> not made, but making 21:48 < nickelpro> ^ ya that 21:49 < dx> minecraft realms with in-game ads and in-game microtransactions 21:50 < M4GNV5> yay 42 diamonds 3,99$ 21:54 < Dinnerbone> > mojang goes out of their way to disassociate themselves from microtransactions as far as possible, upsetting many people in the process who *want* microtransactions 21:54 < Dinnerbone> > mojang love microtransactions 21:54 < Dinnerbone> Looks legit :D 21:56 < dx> :D 21:59 < Thinkofdeath> Since DB is doing updates again when can we start the asking for etas every 5 minutes? 21:59 < dx> yes 21:59 <+SirCmpwn> Dinnerbone: how long until that one thing is done 21:59 < M4GNV5> normally i would be suprised that D!nnerbone aka sethblingsbitch is talking to us/me but today i am just... dunno 22:00 < dahendriik> Hey Guys 22:00 < Dinnerbone> It's done already we're just waiting to monetize it. 22:00 < dx> Dinnerbone: i like you 22:00 * Thinkofdeath saves Dinnerbone quote 22:00 < dahendriik> What would you monetize? 22:00 <+SirCmpwn> "we're just waiting to monetize it" -Dinnerbone 22:00 * Thinkofdeath posts out of context everywhere 22:00 <+SirCmpwn> to twitter! 22:00 < dx> to reddit! 22:00 * dx hoards all the karma 22:01 < nickelpro> to tumblr? 22:01 <+SirCmpwn> no. 22:01 < nickelpro> G+? 22:01 < eddyb> I love how everyone ignored M4GNV5 22:01 < nickelpro> You guys took the good ones 22:01 < M4GNV5> facebook? :P 22:01 < M4GNV5> eddyb: pssssst i hope d!nnerbone wont see it ;) 22:02 < dx> always ignore M4GNV5 22:02 < Thinkofdeath> https://twitter.com/thinkofdeath/status/502546194804277248 22:02 < M4GNV5> dx: yeah why not ^^ 22:02 * Thinkofdeath waits 22:02 < eddyb> dx: I don't have enough space on the HDD 22:02 < eddyb> dx: to put their ego in the ignore list 22:02 * SirCmpwn sighs in Thinkofdeath's general direction 22:03 < Thinkofdeath> SirCmpwn: Hey at least I followed through with the plan 22:03 < Thinkofdeath> I don't see your reddit post 22:03 <+SirCmpwn> /s 22:03 < Thinkofdeath> :) 22:04 < dahendriik> Thinkofdeath, srsly? 22:05 < nickelpro> I would love to see how much a frenzy /r/minecraft would get whipped into 22:05 <+SirCmpwn> let's not. 22:05 < nickelpro> You started this 22:05 < dx> here guys, ready to post on reddit: http://dump.dequis.org/IIy4q.jpg 22:05 <+SirCmpwn> can we not 22:06 < dahendriik> Dinnerbone? Mojang will monetize Bukkit? Or is that irony? 22:06 < eddyb> dx: oh wow is there a generator for that kind of stuff? 22:06 <+SirCmpwn> my apologies to Dinnerbone 22:06 < dx> eddyb: MS paint 1998 enterprise edition 22:06 < nickelpro> Way to censor M4G, hiding information from the people 22:06 < Dinnerbone> This is why I stopped making jokes in here. 22:07 <+SirCmpwn> I don't blame you 22:07 < M4GNV5> ... 22:07 * Thinkofdeath deletes tweet 22:07 < dx> Dinnerbone: i'm joking too, sorry ♥ 22:07 < Thinkofdeath> Too be fair no-one normally reads my twitter 22:07 < dx> i mean seriously half of that pic is lorem ipsum 22:07 < nickelpro> can confirm I never read Thinkofdeath's twitter 22:07 <+SirCmpwn> I think now is the appropriate time to forget it and move on 22:08 < eddyb> dx: hmpf, so you copy-pasted it and changed a few words? 22:08 < dx> yeah 22:08 < dx> rocket science 22:08 < eddyb> dx: it actually... worked... it was like a bunch of text I can't read and the rest was important 22:08 < M4GNV5> dx: you censored me :( 22:09 < Fenhl> :D 22:09 < eddyb> I guess people would catch on after a while. so better use that research paper generator 22:09 <+SirCmpwn> has anyone here seen yuru yuri 22:09 < Kaybass> lol 22:09 <+SirCmpwn> somehow I'm reminded of it righ tnow 22:09 <+SirCmpwn> right now* 22:09 < dx> M4GNV5 is invisible except for a dotted outline 22:11 < M4GNV5> dx: then it doesnt matter that i say: ajkshgjkahgkjh mojang ppl are all assholes jkasdghjasgbsdn,gbmsdf,ghmdfsghjksdfgh 22:11 <+SirCmpwn> ugh 22:11 < dx> SirCmpwn: oh well, it doesn't work well in reality 22:11 < dx> can always dream. 22:12 < nickelpro> Back to something vaguely relevant, I'm thinking I'm going to use a union + type id and index for the metadata struct 22:13 < nickelpro> Should work-ish 22:13 < shoghicp> SirCmpwn: what reminds you of yuru yuri here? 22:13 <+SirCmpwn> M4GNV5 22:13 < M4GNV5> SirCmpwn: 22:14 < M4GNV5> and now? 22:14 < shoghicp> hmm 22:16 * eddyb hands ADTs down to nickelpro 22:17 < eddyb> and thy shall see the light 22:17 <+SirCmpwn> last time I did fancy stuff with unions and such in C was for an emulator 22:17 < dx> shoghicp: http://i.imgur.com/PvwxBdD.jpg 22:18 < nickelpro> eddyb: what is the functional difference between an ADT and a union? 22:18 < eddyb> > functional 22:18 < eddyb> hurr durr 22:18 < nickelpro> not in the programming sense of the word 22:18 <+SirCmpwn> oh, is eddyb the erlang dude 22:18 < nickelpro> :-P 22:18 < eddyb> nickelpro: ADTs can be represented as a tagged union 22:18 < shoghicp> dx: thanks for the reference, I saw it long ago 22:19 < eddyb> nickelpro: but you don't get to see the wrong "union" type or modify the tag 22:19 < nickelpro> eddyb: So its a union with a type id, very fancy 22:20 * Fenhl looks at L3viathan 22:20 < eddyb> well, it's not an ID, it's an enum (type ID could mean a global ID - sequential, a hash, a pointer, etc.) 22:20 < M4GNV5> Fenhl: who is L3viathan another mojang team member? 22:21 < L3viathan> No, someone who should be writing his thesis 22:21 <+SirCmpwn> ugh 22:21 * Fenhl looks at M4GNV5 22:21 < M4GNV5> ^^ 22:21 < Fenhl> apparently today is “Fenhl looks at people” day 22:21 * SirCmpwn tries to remember why he looked at this channel today 22:21 < eddyb> SirCmpwn: Fenhl 22:21 < eddyb> he didn't look back 22:21 < nickelpro> eddyb: Sorry, enum. I'm just used to naming my tag enums "id" 22:21 < dx> SirCmpwn: blame akarin 22:21 < eddyb> nickelpro: hehe 22:25 <+SirCmpwn> I've been spending most of my time lately in the KnightOS community, which is now sizable 22:26 <+SirCmpwn> mabye I should do a little more minecraft stuff sometime 22:26 < nickelpro> SirCmpwn: Knight make TIs worth half what they cost yet? 22:27 <+SirCmpwn> you still can't use them to do math, but it's a respectable unix-like system now 22:27 < nickelpro> SirCmpwn: I'm going to quote that to my teachers 22:27 <+SirCmpwn> I plan on buying some textbooks and sitting down with teachers to make sure math support is up to snuff when the time comes 22:32 < dx> SirCmpwn: make them run python and sympy, problem solved 22:32 <+SirCmpwn> yeah, I'll get right on top of porting python to my 8 bit non-POSIX system 22:33 < dx> go go go 22:33 < nickelpro> Glad we set that straight 22:33 < dx> you have 30 minutes 22:33 < nickelpro> Option2: Make it run doom 22:33 <+SirCmpwn> we are working on kpy, a subset of which should be compatible with python 22:33 < nickelpro> equally acceptable to the scientific computing community 22:33 <+SirCmpwn> nickelpro: some dude is working on porting doom ^_^ 22:34 < dx> i thought these were the same TIs where other people ran doom already 22:35 < dx> guess not. 22:35 <+SirCmpwn> yeah, but it's like trying to run Windows software on Linux 22:35 <+SirCmpwn> where the stock OS is windows and KnightOS is linux 22:35 < nickelpro> dx: On top of the TI OS yes 22:35 < dx> ooh. 22:36 <+SirCmpwn> #knightos might be a better place to ask questions if you're interested in this 22:37 < dx> depends 22:38 < dx> can i get one of those calculators for $1 or less? 22:38 < dx> if not, not interested 22:38 <+SirCmpwn> you can get an emulator for free ;) 22:38 < dx> HMMM 22:38 < dx> well i dunno, i'll lurk and see if it seems fun 22:38 <+SirCmpwn> the best emulator is not very good, though. Do you like C and do you want to help us write our own emulator? 22:39 <+SirCmpwn> https://github.com/KnightOS/z80e 22:39 < dx> i do like C! 22:39 < M4GNV5> #off/old topic http://www.spigotmc.org/threads/bukkit-project-shutting-down-edit-not-anymore.27217/page-3#post-304114 23:01 < Fenhl> what did i just click 23:02 < Thinkofdeath> Fenhl: lol the drama forum was created to contain that rubbish :P 23:03 < Thinkofdeath> keep it out of the rest of the forum 23:03 < dx> drama forum, you mean the whole spigot forum? *cough* 23:03 < Thinkofdeath> .-. 23:04 < Fenhl> I like how people talk about skimming the post 23:04 < Fenhl> “I saw the word EULA in there! Mojang has failed us all!” 23:09 < Fenhl> I'm sorry, it's just that this all reminds me of Spoutcraft's reaction to Mojang acquiring the Bukkit team back in the day --- Day changed ven. août 22 2014 00:21 < Aaron1011> What is the 'Looked at block' field of the Tab-complete packet used for? http://wiki.vg/Pre-release_protocol#Tab-Complete 00:21 < Aaron1011> I don't remember seeing anything in the changelog that looked like it would use that 00:21 < redstonehelper> coordinates for tab-completing 00:22 < redstonehelper> look at a block, type in "/summon Zombie " and hit tab, it'll give you the x coordinate of the block you are looking at 00:22 < redstonehelper> space and tab again, y coordinate, space and tab again, z coordiante. 00:22 < redstonehelper> coordinate* 00:22 < Aaron1011> Cool! 00:22 < Aaron1011> I can't believe I missed that :) 00:22 < Aaron1011> Thanks redstonehelper 00:22 < redstonehelper> np 00:23 < redstonehelper> it wasn't mentioned on the mojang.com blog post and no devs tweeted about it, so you had to find it for yourself 00:23 < redstonehelper> I wonder if the wiki has it 00:24 < Aaron1011> Was it the "secret bugfix"? 00:25 < redstonehelper> no, searge didn't reveal that mystery yet 00:27 < Aaron1011> Dat searge :) 00:27 < Aaron1011> Always hiding stuff in the snapshots 00:38 < ackpacket> When I generate the hash to send to the login servers, the documentation says to use the server's encoded public key. What does it mean by that? Encoded into what? Do I just dump in the whole ASN.1 that I received in the 0x01? Do i encode it into base64? Or do I extract the 1024-bit key 00:46 <+SirCmpwn> ackpacket: https://github.com/SirCmpwn/Craft.Net/blob/master/source/Craft.Net.Server/Handlers/LoginHandlers.cs#L61-L77 00:48 < ackpacket> i'll take a look, ty 00:48 < ackpacket> Also when I go to grab a token from mojang, what's the profile field? 00:49 <+SirCmpwn> are you a client or a server? 00:49 < ackpacket> client 00:49 <+SirCmpwn> why does no one ever mention that 00:49 < ackpacket> that's fair 00:49 <+SirCmpwn> this is as far as I've gotten on client auth with the newer mojang API 00:49 <+SirCmpwn> https://github.com/SirCmpwn/Craft.Net/blob/master/source/Craft.Net.Client/Handlers/LoginHandlers.cs#L24-L42 00:49 <+SirCmpwn> https://github.com/SirCmpwn/Craft.Net/blob/master/source/Craft.Net.Client/Session.cs 00:52 < ackpacket> Ok. It looks like you're using the raw key as it arrives in the enc packet 00:52 < ackpacket> which is about 162 bytes for my server 00:52 < ackpacket> *target server* 00:54 < ackpacket> What's craft.net anyway? 00:54 <+SirCmpwn> a third party terraria server/client 01:03 < M4GNV5> wut? ^^ 01:17 < belak> Hm, does xPaw still hang out here? 01:29 < ackpacket> SirCmpwn: Incase you wanted to know for future reference, the Profile field can be filled in using one of the 'availableProfiles' from /authenticate, when retrieving an access token 01:29 <+SirCmpwn> I didn't really want to know, but I'll take pull requests 01:29 * SirCmpwn doesn't really work on Craft.Net these days 02:02 < barneygale> ackpacket: I have a reasonably readable login implementation here, if you need it https://github.com/barneygale/quarry/tree/master/quarry/net 02:02 < ackpacket> it's working? 02:03 < ackpacket> and in python too. you angel 02:03 < ackpacket> barneygale: which file is the logging in handled in? 02:03 < barneygale> https://github.com/barneygale/quarry/tree/master/quarry/mojang 02:04 < barneygale> profile for logging in, auth for joining a server 03:42 < mastercactapus> Are all varInts unsigned in the protocol or only the packet length? 03:54 < nickelpro> mastercactapus: all variants are by their nature unsigned, but mojang implements with signed 32-bit integers. So feel free to use either, the protocol doesn't use negative varints right now 03:54 < nickelpro> varints* not variants 04:01 < nickelpro> ackpacket: Also throw Spock on there for a working auth module example https://github.com/nickelpro/spock/blob/master/spock/plugins/core/auth.py 04:10 < mastercactapus> ok, I'm playing with Go, using the binary.ReadVarint vs binary.ReadUvarint, the former did not work for the packet sizes thus my confusion 05:56 < ackpacket> In the encryption response from the client to the server, there is a field for the length of the shared secret. Is that the length before, or after encryption? 05:57 < ackpacket> i'm guessing after since the parser would need it to know where it ends 05:57 < ackpacket> but figured i'd ask 06:04 <+SpaceManiac> ackpacket: after encryption 06:04 < ackpacket> got it. ty. 06:23 < ackpacket> Sorry I see a few references that seem to say different things, let me ask here: After the client auths with mojang and sends the encryption response, there is NO more unencrypted communication, right? 06:28 <+SpaceManiac> right 08:11 < ackpacket> I don't suppose anyone's ever written something that works most of the time, but occassionally can't to connect to the server because "Not authenticated with..." ?? Maybe my testing is setting off some flags at mojang and they're rate limiting me? 08:29 < Drainedsoul> ackpacket: You should give more details 11:31 < cindy_k> dinnerbone , Grum call 1.8 "arrrrrgggggghhhhhh" 11:31 < cindy_k> monty python rabbit reference, I think its fitting for recent events :) 11:56 < Not-9d73> [mc-autodocs] thinkofdeath pushed 1 commit to master [+0/-0/±31] http://git.io/4GQT7Q 11:56 < Not-9d73> [mc-autodocs] thinkofdeath 5168512 - 1.8-pre1 11:58 < Spurlex> Speedy 12:10 < Thinkofdeath> Grum: seems like the build of lwjgl you are using broke linux support 12:14 < redstonehelper> it fixed fullscreen for me 12:14 < redstonehelper> well, something did. 12:14 < Thinkofdeath> both me and md_5 crash on starting the pre-release, downgrading lwjgl works 12:15 <+md_5> it also makes both my monitors blackscreen for a second 12:24 < eddyb> Thinkofdeath: it's obviously the first of many anti-spigot updates :P 12:24 < Thinkofdeath> lol 12:25 < eddyb> and just because I love using the word "sabotage" 12:34 < Drainedsoul> I can't hear the word "sabotage" and not think of Lieutenant Valeris :( 13:22 * cindy_k adjusts her tin foil hat 13:23 < redstonehelper> 1.8: the pro eula, pro realms, anti bukkit, anti modding and anti community update? 13:23 < redstonehelper> it's obvious. 13:28 < eddyb> 1.9 will be released shortly after Mojang will have been acquired by Blizzard 13:28 < eddyb> Realms is just a taste of the War 13:29 < redstonehelper> mojang will ask EA for business advice 13:29 < eddyb> hmm 13:29 < eddyb> what if WoW meant "war of the worlds"? 13:29 < eddyb> or would that be WotW? 14:50 < eddyb> dx, Thinkofdeath: this has taken me waaay to long to piece together https://github.com/PistonDevelopers/hematite/pull/72 14:51 < eddyb> only half of that 3k is the dumped data? 14:53 < dx> eddyb: :D 14:53 < Thinkofdeath> rust syntax still looks weird too me 14:54 < eddyb> Thinkofdeath: what about it? 14:54 < Thinkofdeath> dunno 14:54 < Thinkofdeath> seeing things like pub instead of public and little things like that 14:55 < Thinkofdeath> i've done java for too long 14:56 < eddyb> Thinkofdeath: Stockhold syndrome, man 14:57 < Thinkofdeath> haha 15:06 < cindy_k> lol 18:20 < eddyb> dx: http://youtu.be/GvAUyf460IQ 18:26 < dx> eddyb: http://i.imgur.com/N3C1yq9.png 18:37 < eddyb> dx: hahaha a friend just realized chunk loading is as slow as minecraft because he didn't build with optimizations 18:37 < eddyb> gg Java 18:38 < dx> he didn't build with... rust optimizations? and this is java's fault somehow? 18:38 < dx> FLAWLESS LOGIC 18:38 < eddyb> dx: no. hematite w/o optimizations is as slow as minecraft running in an optimizing JVM 18:39 < dx> eddyb: you're doing much less stuff than minecraft, too 18:40 < eddyb> dx: missing AO, but my code is omologue to the vanilla tesselator 18:40 < dx> eddyb: i know some of these words 18:41 < dx> protip: when talking about opengl stuff, you can technobabble me all you want, i won't notice 18:41 < eddyb> if I add AO (ambient occlusion - darkening of edges and corners) then I'll probably be doing the same amount of high-level "work" 18:41 < dx> thanks :P 18:43 < eddyb> dx: btw, a trick I use is to fill in the closest ones first. it does a "zoop" for less than half a second 18:43 < eddyb> and then most of the stuff it hasn't processed yet is not visible 18:43 < dx> cheating! 18:43 < TkTech> Hnnnng. X99 is looking fiiiine. 18:44 < eddyb> dx: I wish minecraft did more things like that 18:44 < dx> eddyb: yeah it makes sense to do them 18:44 < dx> eddyb: patches welcome, remember it's open source now 18:44 * dx cough 18:44 < TkTech> Quad channel DDR4 with 3000Mhz base speed as the norm. Can't wait. 18:45 < TkTech> dx: Open source something? 18:45 < eddyb> TkTech: Minecraft 18:45 < TkTech> Wait what now 18:45 < eddyb> dx: you did it again! 18:46 < dx> what did i do now? 18:46 < dx> other than doing dumb jokes that result in spreading misinformation, which is the usual? 18:49 < eddyb> at least your damage is limited to TkTech 18:54 < TkTech> TkTech sad, TkTech smash! 19:08 <+Prf_Jakob> TkTech: haha 19:47 < Drainedsoul> Listening on :::11653 19:47 < Drainedsoul> goddamnit IPv6 19:47 < Drainedsoul> why did you have to do this to me --- Day changed sam. août 23 2014 00:31 < dx> hmm, does anyone know any way to get historical data of the number of sold minecraft accounts? 00:31 < dx> i mean there's this https://minecraft.net/stats but it only shows the current values 00:32 < Jckf> dx: https://web.archive.org/web/*/http://minecraft.net/stats =D 00:33 < dx> hahah nice, didn't think of that 00:34 < dx> it's not *all* the data points but it's a nice bunch of them. 00:34 < Jckf> It was mostly a joke, but I honestly don't know of any better way =P 00:34 < dx> but so far it is the best i have. 00:36 < dx> apparently there used to be charts in this address http://m00d.net/minecraft/sales/ - but that website became a spam blog at some point 02:24 < redstonehelper> was lwjgl downgraded again? 02:31 < barneygale> Added reasonably good proxy support to quarr https://github.com/barneygale/quarry 03:37 <+SirCmpwn> >python 2.7 03:37 <+SirCmpwn> why not 3? 04:21 < dx> SirCmpwn: because twisted 04:22 <+SirCmpwn> twisted doesn't support 3? 04:22 < dx> nope 04:22 <+SirCmpwn> huh. 04:24 < dx> honestly python2 is still the main version most projects can reasonably use 04:24 <+Amaranth> twisted was replaced with https://docs.python.org/3/library/asyncio.html 04:24 < dx> uhm, that's very far from a replacement 04:24 < dx> twisted is huuuuge 04:25 <+Amaranth> So twisted in python 3 can be a collection of protocol classes built on top of asyncio :P 04:26 <+Amaranth> asyncio is meant to be a replacement, it just doesn't include everything in the kitchen sink but only the building blocks 04:26 < dx> yeah i mean, it's not a drop-in replacement 04:27 < dx> code will have to be ported and refactored to use it 05:02 < Kavukamari> anyone build anything cool with command blocks today? 05:05 < dx> command blocks, the future of minecraft development 05:34 < Kavukamari> how does the clone command work? does it actually store blocks into the server's memory and then paste them or does it just iterate through the cuboid and copy the blocks? 05:39 <+Amaranth> Does it make a difference? 07:54 < Drainedsoul> dx: Doesn't Python 3 have nice Unicode support? That seems like a good reason to make the switch. :P 08:50 <+AndrewPH> Drainedsoul: I thought python2's unicode support was also good 08:52 < SinZ> you need to be active in doing unicode in python2 though, as its different from a string 14:02 < Kavukamari> oh uhh sorry for the late response Amaranth but it does make a difference, cause in the iterate one, it does it one block at a time, and in the clipboard one it has to store a ton of blocks at a time, or at least i would assume 14:03 <+Amaranth> Sure so one would use more memory 14:03 <+Amaranth> But would otherwise have zero side effects since they happen in a single tick 16:50 < dx> Drainedsoul: python3's unicode is just "slightly cleaner". everything is "slightly cleaner". nothing is too interesting. the main flaws of the language are still there, there is no single big reason to motivate people to switch 17:17 < Drainedsoul> dx: Python has flaws? You're literally the first person to say this. ;) 17:38 < barneygale> pretty useless for protocol implementations, seemingly 17:39 < barneygale> good in most respects except the lack of good crypto 17:56 < TkTech> barneygale: Wait, what? Are you talking about Python? 17:57 < TkTech> That language we wrote 99% of the early protocol tools with? 17:57 < barneygale> yeah, it's what I still write them in 17:57 < TkTech> And has a trillion and half different crypto libraries, including direct openssl bindings? :| 17:57 < barneygale> pycrypto is slow 17:57 < barneygale> m2crypto doesn't do CFB8 17:58 < barneygale> pycryptopp doesn't do CFB at all 17:58 < barneygale> cryptography doesn't do RSA pubkey import/export 17:58 < barneygale> and the openssl bindings looked incomplete when I checked 17:58 < barneygale> maybe I got that wrong 17:59 < TkTech> import ctypes; ctypes.cdll.LoadLibrary('libssl.so') 18:01 < Drainedsoul> *popcorn* 18:01 < TkTech> What are you doing with pycrypto that is so slow? It'll never beat plain C, but anything critical was redone in C a long time ago. 18:02 < Drainedsoul> TkTech: Since we're talking about "early protocol", I seem to remember there being a lot of examples etc. on the wiki being written in like awful C ages ago 18:02 < TkTech> There were psuedo-python examples ;| 18:03 < nickelpro> im continuing the tradition of writing the protocol in awful C right now 18:03 < Drainedsoul> nickelpro: But why? :( http://git.rleahy.ca/MCPP/blob/packets_1.8_json_fix/include/mcpp/packets.hpp 18:04 < nickelpro> Drainedsoul: because Torvalds told me cpp is an awful language to be avoided at all costs 18:05 < Drainedsoul> nickelpro: 10/10 18:05 < Drainedsoul> nickelpro: But muh templates 18:06 < nickelpro> i started a cpp implementation once, the power of templates blew my mind in that context, the compile times went for days of I picked a slow enough laptop 18:07 < Drainedsoul> I had to full rebuild MCPP on my Lubuntu VM earlier, took under 10 mins (I didn't time it) with GCC 4.9.0 18:07 < nickelpro> im just making fun :-P 18:08 < Drainedsoul> nickelpro: In seriousness, the lack of templates is what I have the hardest time coping with. I'm not some numpty who thinks that polymorphism is magical and can't be emulated in C, but the lack of templates is just too much. 18:09 < Drainedsoul> There's something intoxicating about 18:09 < Drainedsoul> and the STL containers 18:10 < nickelpro> Drainedsoul: No I totally agree, I came from duck typed languages and fell in love with templates. If I did more projects in cpp I'm sure I'd be a templates evangelist 18:11 < nickelpro> I'm writing C right now because Im a masochist 18:11 < Drainedsoul> nickelpro: Does it have a github? 18:12 < nickelpro> Drainedsoul: Ya let me just switch to my computer, on my phone 18:12 < Drainedsoul> nickelpro: Most importantly, does your code have a do { } while(false); in it? ;D 18:12 < Drainedsoul> my fav C idiom 18:12 < dx> Drainedsoul: is that one of the macro hacks? 18:13 < nickelpro> Drainedsoul, no, does have a couple for(;;) {} which is my favorite 18:13 < Drainedsoul> dx: No, it lets you break; instead of goto for cleanup 18:13 < Drainedsoul> dx: Because goto is bad and we must go to extreme lengths to avoid it lol 18:13 < dx> oh 18:13 < Drainedsoul> dx: But you can also use it with macros to "eat the semicolon" 18:13 < dx> i don't mind using goto at all 18:13 < Drainedsoul> dx: in that case it's do { } while(false) <= note no semicolon 18:13 < dx> ooh right 18:14 < Drainedsoul> dx: I don't mind goto either...when it belongs. That said, I do find do { } while(false); more elegant 18:14 < Drainedsoul> Because the indentation makes it more readable, imo 18:14 < dx> hmm 18:14 < dx> not really sure if i like it 18:15 < dx> also i'm thinking i could "clean up" some of my code by adding more goto to it 18:15 < Drainedsoul> I usually avoid goto by breaking things up into tiny functions. But I'm called an extremist a lot by people, because I consider functions longer than 4 lines to be highly suspect 18:16 < dx> hah, sounds like you'd enjoy functional languages 18:16 < dx> all haskell developers are extremists 18:17 < Drainedsoul> dx: I do like the functional aspects of C++, but I've never found a functional language I enjoyed. Only one I've really tried is Erlang though 18:17 < Drainedsoul> dx: I looked into F# perfunctorily a while back, but stuck with C# 18:17 < nickelpro> Drainedsoul: This project is just something I'm doing in my occassional free hour at school. It's 1/5 of the protocol and a server that laughs at you if you try to connect to it 18:17 < nickelpro> https://github.com/nickelpro/cspock 18:17 < Drainedsoul> nickelpro: omfg 18:17 < dx> "" 18:17 < dx> Oh my god I dont know C 18:17 < dx> well that was a failed paste. 18:17 < dx> but lol. 18:17 < Drainedsoul> a C programmer who doesn't do retarded s*** with function declarations 18:17 < Drainedsoul> thank god 18:18 < dx> Drainedsoul: what kind of retarded ship? 18:18 < Drainedsoul> return-type NEWLINE name bracket 3 params NEW LINE 1 param NEW LINE close bracket 18:18 < Drainedsoul> takes me longer to understand the function declaration than its body 18:18 < dx> isn't that the GNU style or something? 18:19 < Drainedsoul> Idk, it gives me a headache 18:19 < nickelpro> I hate 90% of C code styles, this is mostly kernel style with a hint of python in the name scheme 18:19 < dx> i'm probably wrong, it's just that every time i see a dumb coding style i call it "gnu style" 18:19 < Drainedsoul> dx: Have you seen OpenSSL "style" ;) 18:20 < dx> Drainedsoul: no thanks 18:20 < dx> http://en.wikipedia.org/wiki/Indent_style#GNU_style 18:20 < Drainedsoul> dx: I also can't read Allman code 18:20 < dx> out of that list, kernel / K&R are the sanest, imo 18:20 < Drainedsoul> dx: Idk why, I find it extremely difficult 18:21 < dx> Drainedsoul: the code i'm dealing with is written in that style. i can read it, but i can't get myself to write that way 18:21 < Drainedsoul> dx: I would find it nigh impossible to write in that style, simply because I don't use an IDE and write everything Notepad++, so there'd be a lot of overhead putting the braces on their own line 18:22 < Drainedsoul> nickelpro: You also use size_t :O 18:23 < nickelpro> Drainedsoul: Ya, I wish ssize_t was cross platform too 18:23 < nickelpro> Because almost all of my errors want to return a size but have the option of -1 18:23 < Drainedsoul> nickelpro: Isn't ptrdiff_t cross-platform 18:23 < Drainedsoul> or is that C++ only? 18:24 < nickelpro> C++ 18:24 < Drainedsoul> §6.5.6, paragrah 9 18:24 < dx> c-- 18:24 < Drainedsoul> ISO C11 standard 18:24 < Drainedsoul> "The size of the result is implementation-defined, 18:24 < Drainedsoul> and its type (a signed integer type) is ptrdiff_t defined in the header. 18:24 < Drainedsoul> " 18:24 < nickelpro> Oh hey, just googled 18:24 < nickelpro> its not 18:24 < nickelpro> you're right 18:24 < Drainedsoul> \o/ 18:24 < dx> C11? what year do you think this is, not-1970? 18:25 < Drainedsoul> dx: When C++14's ratification was announced on Monday, I immediately switch to citing that standard instead of C++11 ;) 18:25 < nickelpro> I try to stay C89 compat at least, might move it to C99 so I can declare variables in my loops 18:25 < Drainedsoul> nickelpro: What's the advantage to staying C89? You can compile on MSVC++? 18:26 < Drainedsoul> I mean even MSVC++ supports some C99 stuff 18:26 < nickelpro> Drainedsoul: Like I said, this is my masochism project on the side 18:26 < Drainedsoul> nickelpro: I just don't understand the mentality, lol, I mean GCC and Clang are like, the only C compilers that matter, best I can tell (since Microsoft has repeatedly disclaimed MSVC++ of being a C compiler), and both of those have C11 support afaik 18:27 < dx> if you don't pass any flags to gcc, do you get C89 compat mode? 18:27 < Drainedsoul> although M$ did add enough C99 to MSVC++ that ffmpeg will compile on it, lol 18:27 < nickelpro> dx: Don't think so 18:27 < Drainedsoul> dx: Not sure. I know that you get C++03 if you don't specify -std=c++11/c++1y/gnu++11/gnu++1y 18:27 < Drainedsoul> So I'd imagine C99 would be the fallback? 18:28 < Drainedsoul> nickelpro: What's your concurrency model going to be? 18:28 < dx> >The default, if no C language dialect options are given, is -std=gnu90; this is intended to change to -std=gnu11 in some future release. Some features that are part of the C99 standard are accepted as extensions in C90 mode, and some features that are part of the C11 standard are accepted as extensions in C90 and C99 mod 18:29 < nickelpro> Drainedsoul: >Implying I've thought this out that far 18:29 < Drainedsoul> oh GNSU extensions 18:29 < Drainedsoul> *GNU 18:29 < Drainedsoul> nickelpro: I know, but _Atomic is C11, so there's that incentive for you to come into the future ;) 18:29 < nickelpro> It's going to be based on libuv, so I'm going to try to work within their thread model 18:29 < dx> hah, i read "gnu11" as "gnull" (LL instead of "eleven") 18:30 < Drainedsoul> https://github.com/nickelpro/cspock/blob/master/src/server/server_test.c <= aren't the initializations you're using here C99 or 11? 18:30 < Drainedsoul> I know those aren't part of C++, so I doubt they're C89 somehow 18:30 < nickelpro> C90 I think, I know it yells at me for declaring variables inside for loops 18:31 < nickelpro> So it's definitely not all C99 18:31 < Drainedsoul> nickelpro: Ugh, that's one reason I could never write C89. Declaring everything at the top of the function is dumb imo. But that just could be the C++ programmer in me talking 18:31 < Drainedsoul> ;) everything is auto ;) 18:32 < nickelpro> In high school I was taught the "declare everything at the top" style 18:32 < nickelpro> now I try to declare things close to where they'll be useful 18:32 < Drainedsoul> yeah C++ is very quick in stripping you of that attitude. In many cases it's just not practical/possible to do so. 18:32 < dx> i declare everything after { 18:33 < nickelpro> dx: On the same line right? Damn the 80 character limit to hell 18:33 < Drainedsoul> You know what's the dumbest thing ever conceived? Null-terminated strings. God they make me so mad. 18:33 < dx> nickelpro: nah not really. 18:33 < nickelpro> Drainedsoul: I thought they were brilliant until I used them 18:33 < dx> Drainedsoul: but it's so handy when you want to be lazy 18:33 < Drainedsoul> nickelpro: I have a 30" 2560x1600 monitor, the 80 char limit can go to hell 18:33 < nickelpro> lol 18:34 < nickelpro> I have a 1920x1080 laptop, the 80 limit keeps me sane 18:34 < Drainedsoul> dx: It's such a stupid concept. 18:34 < Drainedsoul> dx: Esp. nowadays, because U+0000 is valid Unicode 18:34 < dx> Drainedsoul: \x00 has always been "valid ascii", whatever that means 18:34 < Drainedsoul> for a while I've been meaning to get around to changing my password on various sites to have a U+0000 in it, see how many break 18:35 < dx> hahah 18:35 < nickelpro> I've just abandoned the concept of a "string" in most languages except python 18:35 < nickelpro> Everything is a byte array, what that means depends on what you're doing with it 18:35 < Drainedsoul> nickelpro: Aren't Python strings half retarded anyway? Like aren't there UTF-16 AND UCS-4 Python builds? 18:35 < nickelpro> Drainedsoul: Python3 hides all of that 18:35 < Drainedsoul> nickelpro: The legacy of UTF-16 leads to so much subtly wrong Java and C# code, it makes me mad 18:36 < Drainedsoul> My C++ Unicode utilities use a Unicode::CodePoint class, which is trivial, has constexpr ctors, and wraps a char32_t, is implicitly convertible to/from all integer types 18:36 < Drainedsoul> it's very nice. 18:37 < nickelpro> Drainedsoul: That sounds like something I would like a lot 18:37 < nickelpro> Everything should be Unicode, whoever disagrees should be thrown in a well 18:37 < Drainedsoul> http://git.rleahy.ca/UnicodePP/ 18:38 < Drainedsoul> nickelpro: But Unicode is difficult for anglocentric people to wrap their heads around. Like trying to explain to someone that 18:38 < Drainedsoul> tolower(a)==tolower(b) isn't a case insensitive comparison 18:38 < Drainedsoul> and they're like wut 18:38 < nickelpro> lol 18:39 < Drainedsoul> oh, the readme for that repo doesn't mention that it has an almost full-featured regex engine in it :3 18:39 < nickelpro> Drainedsoul: regex something something now you have two problems 18:39 < Drainedsoul> nickelpro: I spent hundreds (thousands?) of hours writing that regex engine before I sucked it into MCPP as a dependency 18:39 < Drainedsoul> I think MCPP uses it in exactly one place 18:39 < Drainedsoul> -_- 18:40 < Drainedsoul> like all the hours I spent implementing UTF-16/-32, ASCII and Latin-1, and all I use is UTF-8 :( 18:40 < Drainedsoul> oh I implemented UCS-2 I guess :[ 18:41 < dx> Drainedsoul: is the "tolower" thing not case insensitive because tolower() isn't unicode aware, or because it doesn't work with all kinds of case insensitive comparisons that exist in unicode? 18:41 < Drainedsoul> unicode defines a set of case insensitive equivalencies 18:41 < Drainedsoul> called "case folding" 18:42 < Drainedsoul> which handles conversions like LATIN SMALL LETTER SHARP S => 2x LATIN LETTER S 18:42 < dx> ah i see, so no way that can work with tolower 18:42 < Drainedsoul> because in Unicode, upper/lower casing, and case folding don't necessarily preserve string length 18:42 < Drainedsoul> ;) 18:42 < Drainedsoul> oh, and they're not context free ;) 18:42 < Drainedsoul> the case mapping of a character map depend on the characters around it =D 18:42 < dx> fun 18:42 < nickelpro> "Abandon all hope ye who wish to fuck with Unicode casing" 18:43 < Drainedsoul> the greek letter capital sigma, for example 18:43 < Drainedsoul> lower cases differently depending on whether it's in word final position ;) 18:43 < dx> your explanation makes me want to do "tolower(a) == tolower(b)" anyway, with a comment next to it saying "fuck unicode" 18:43 < Drainedsoul> http://en.wikipedia.org/wiki/Sigma 18:43 < Drainedsoul> :( 18:43 < Drainedsoul> ilu unicode 18:43 < dx> lol 18:44 < Drainedsoul> there's more though ;) 18:44 < Drainedsoul> in turkic language "i" keeps the dot when it's uppercased >: D 18:44 < nickelpro> dx: He has stockholm syndrom, clearly 18:44 < Drainedsoul> and "I" lower cases to a dotless "i" =D 18:44 < dx> nickelpro: indeed 18:44 < dx> but i mean, if i have access to some nice library that handles this for me, sure, i'll use it 18:44 < dx> if not, fuck unicode 18:45 < Drainedsoul> once you have a nice library, it's actually better than working with ASCII, tbh 18:45 < Drainedsoul> I wrote my own library 18:45 < Drainedsoul> http://i.imgur.com/w2LDzHb.png 18:45 < Drainedsoul> it has a function that finds optional line breaks 18:45 < Drainedsoul> see how it wraps the text on the hyphen :) 18:45 < nickelpro> Ok that's pretty damn neat 18:46 < nickelpro> And I don't know 18:46 < nickelpro> if you can safely assume all ASCII input and output, the whole thing does seem a lot simpler 18:46 < nickelpro> I just can't think of a lot of contexts where that is true 18:46 < Drainedsoul> in the absence of a library, yes. But Unicode has a lot of very well-defined algorithms for processing text, that make things easy 18:46 < Drainedsoul> like the whole CRLF vs. LF thing 18:46 < Drainedsoul> if you follow the Unicode algorithms, it makes no different 18:46 < Drainedsoul> *difference 18:47 < Drainedsoul> the distinction is irrelevant, the Unicode algorithms handle the sequence CR LF and LF identically 18:47 < nickelpro> Drainedsoul: You have to consider ancient apple machines as well, CR vs LF vs CRLF 18:47 < Drainedsoul> no I don't 18:47 < Drainedsoul> Unicode does that for me ;) 18:47 < nickelpro> lol 18:47 < Drainedsoul> http://www.unicode.org/reports/tr14/#Algorithm 18:47 < Drainedsoul> The Unicode Line Breaking Algorithm 18:47 < Drainedsoul> LB5 Treat CR followed by LF, as well as CR, LF, and NL as hard line breaks. 18:48 < nickelpro> Option 2: Teach all people of the world English and forbid non-ascii characters from electronic communication. This seems at least as likely/feasible as getting all developers in the world to switch to safe unicode libraries 18:48 < Drainedsoul> nickelpro: Lol. 18:48 < Drainedsoul> but Unicode is love! 18:49 < Drainedsoul> besides, without Unicode there's no emoji :P 18:49 < nickelpro> YOu just showed us that ascii has emoji support, you'll never need more than a colon and some alphanumeric to express the range of human emotion 18:50 < Drainedsoul> umm, what about U+1F434? 18:50 < Drainedsoul> AKA "HORSE FACE"? 18:50 < Drainedsoul> hmm? 18:50 < Drainedsoul> or U+1F4A9, "PILE OF POO"? 18:51 < nickelpro> I'm glad the Unicode Consortium spends its time working on important issues in human communication 18:52 < Drainedsoul> Hangouts -- the Chrome app -- supports emoji. It's pretty interesting because Hangouts renders them fine, but Hangouts' toasts on Windows just displays emoji as two boxes 18:52 < Drainedsoul> which is amusing because the toast thing can't even figure out that it's a high/low UTF-16 surrogate pair -_- 18:54 < Drainedsoul> nickelpro: How are you handling packets in this cspock? 18:54 < Drainedsoul> nickelpro: nvm, found that header 18:55 < nickelpro> Drainedsoul: Decode the header and length, make sure you've got the space, then hand it to a decode function 18:55 < Drainedsoul> nickelpro: Is cstdint part of C89? I like the use of cstdint, jw 18:55 < Drainedsoul> cstdint is an amazing header 18:55 < dx> ascii emoji: http://www.emoji-cheat-sheet.com/ 18:55 < Drainedsoul> -_- 18:56 < Drainedsoul> nickelpro: If you're doing C dev, you're heard of ASAN right? 18:56 < dx> those are exactly the same images used in apple's color emoji font (and everyone is disregarding copyright) 18:56 < Drainedsoul> dx: But it's not semantic :( 18:56 < dx> Drainedsoul: what is? 18:56 < nickelpro> Drainedsoul: nope, on a whim, Google's Address Sanitizer? 18:57 < dx> asan is love 18:57 < dx> asan is life 18:57 < Drainedsoul> ^ 18:57 < Drainedsoul> nickelpro: Yes. 18:57 < dx> well it's pretty much valgrind, anyway, but much faster and you can have it enabled always as a compile time option 18:57 < nickelpro> I was about to say "but I use valgrind!" 18:57 < Drainedsoul> nickelpro: Yeah I think you're using a lot of GNU extensions in here. P. sure anonymous unions, for example, are a C11 thing? 18:58 < Drainedsoul> dx: I think ASAN catches some things valgrind doesn't, and generally gives better error messages, although I've never actually used Valgrind 18:58 < nickelpro> Drainedsoul: entirely possible, I don't pay attention to language standards actually. My ultimate test is "does it compile?" And I'm happily surprised every time it does 18:59 < Drainedsoul> nickelpro: Ah. I actually had an incident last week where GCC 4.9.0 on Windows accepted code 18:59 < Drainedsoul> but GCC 4.9.0 on Linux didn't 18:59 < Drainedsoul> mfw => -_- 18:59 < Drainedsoul> this wasn't even platform specific stuff, it was: Can I take the address of a member without &? 18:59 < nickelpro> Drainedsoul: GCC on windows? MinGW? 18:59 < dx> Drainedsoul: i'd say it's the other way around, but dunno. valgrind is definitely much better at tracking memory leaks, and it's nice to be able to combine them. 19:00 < Drainedsoul> dx: Leaks perhaps. Being that I program C++ I don't worry about leaks though. I think it's use after free that ASAN gets that Valgrind doesn't? Or maybe stack buffer overflows, maybe both. 19:01 < dx> valgrind catches use after free, stack buffer overflows i don't know. 19:01 < Drainedsoul> nickelpro: http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/4.9.1/ 19:02 < nickelpro> Drainedsoul: Oh the fork, I was about to say "Isn't MinGW semi-abandoned?" 19:02 < Drainedsoul> nickelpro: Yeah, maybe? I guess? 19:02 < Drainedsoul> It's better than using Microsoft's compiler 19:02 < Drainedsoul> which isn't saying much, to be fair 19:02 < Drainedsoul> I'd rather be using Clang :'( 19:03 < nickelpro> Is there a real native C compiler for windows anymore? Intel maybe? 19:03 < Drainedsoul> MinGW-W64? 19:03 < dx> lol intel 19:03 < Drainedsoul> what do you mean "real native"? 19:03 < dx> Drainedsoul: no clang for windows? :( 19:03 < Drainedsoul> dx: There is, but it doesn't support exceptions, uses M$' linker, and is in general highly experimental 19:03 < dx> hm 19:03 < Drainedsoul> Chandler Carruth announced it at Going Native last year... 19:03 < Drainedsoul> ...at Microsoft 19:03 < Drainedsoul> dude has balls 20:06 < robotkoer> Hello, does anyone know when 1.8 phrases will be added to Crowdin for translation? 22:14 < barneygale> TkTech: it was AES I was finding to be slow 22:14 < barneygale> in pycrypto 22:15 < barneygale> the AES code is written in C, but it's quite old and I read it doesn't take advantage of optimizations in modern processors 22:17 < dx> barneygale: what kind of performance requirements does your project have? ._. 22:18 < barneygale> pycrypto's .encrypt() is using a whole bunch of my CPU. I'm testing via a proxy, and the map chunk packets really hold everything up 22:18 < barneygale> (proxy in online mode, upstream server in offline mode) 22:18 < barneygale> It takes a few seconds for everything to "catch up" on connect. 22:18 < dx> and how do you know this doesn't happen with other libraries? 22:19 < barneygale> Because I've read and been told that pycrypto's AES is hand-written and slow, whereas openssl's is fast 22:19 < dx> hm 22:19 < barneygale> cryptography.io's AES, which uses openssl, is much faster (lower CPU usage, looks better in profiler) 22:19 < barneygale> However cryptography doesn't support import/exporting pubkeys 22:19 < dx> 12:59 < TkTech> import ctypes; ctypes.cdll.LoadLibrary('libssl.so') 22:19 < dx> how about that? 22:20 < barneygale> I'm looking into it now :D 22:20 < dx> you could also consider cffi, which has less overhead in pypy but is probably about the same in cpython 22:22 < dx> barneygale: also, did you submit an issue to the cryptography bug tracker for that? 22:22 < dx> that library seems really promising 22:23 < dx> so it's worth nagging them 22:24 < barneygale> There's already one for importing 22:24 < barneygale> an issue, that is 22:27 < barneygale> I did nag them on IRC also 22:28 < barneygale> I'm a bit wary of ctypes as I know encryption needs to be done right 22:28 < barneygale> and I'm not a great C programmer 22:28 < dx> it's more about how you use the library, in this case 22:28 < dx> as long as you follow a recipe closely it should be good 22:30 < dx> getting someone to review your code won't hurt of course 23:14 < redstonehelper> I heard somewhere that mob spawning in 1.8 even checks empty chunk sections (16^3 sections full of air), is that true? 23:14 < redstonehelper> or at least what used to be displayed as "lc" in the f3 debug menu no longer has any effect on mob spawning. 23:27 < L3viathan> Some Zipkrowd guys said that a while back --- Day changed dim. août 24 2014 01:00 <+SpaceManiac> Is there a list of the new window type strings anywhere? 01:32 < Drainedsoul> Anyone around who's at all familiar with IPv6 on Linux (Ubuntu specifically, if that's relevant)? 01:37 < dx> i know how to disable it 01:37 < dx> Drainedsoul: what's the issue, out of curiosity? 01:38 < Drainedsoul> If I try to bind to 0.0.0.0 and :: I get EADDRINUSE, which seems bogus 01:38 < dx> isn't 0.0.0.0 a subset of ::? 01:38 < Drainedsoul> but if I bind to ::1 I can accept IPv4 connections? -_- Even though the machine doesn't actually even have an IPv4 address at all 01:38 < Drainedsoul> on Windows they're distinct 01:39 < Drainedsoul> my machine is 192.168.1.50, when I bind to :: on Linux and connect I'm ::ffff:c0a8:132 01:39 < Drainedsoul> c0 => 192, a8 => 168, 1 => 1, 32 => 50 01:40 < Drainedsoul> *doesn't have an IPv6 address at all 01:40 < dx> OH 01:40 < dx> that makes more sense. 01:41 < Drainedsoul> anyway, I connect to the Linux box's IPv4 address -- 192.168.1.121, and suddenly it's IPv6 01:41 < Drainedsoul> I'm wondering if this is all Linuxes, just Ubuntu, etc. 01:41 < Drainedsoul> it's very annoying getting EADDRINUSE when I want to bind to :: and 0.0.0.0 01:42 < dx> "nc -l :: 1234 -v" tells me "Connection from [::ffff:127.0.0.1] port 1234 [tcp/search-agent] accepted (family 10, sport 43024)" 01:44 < Flemmard> can't bind tell if ou want to bind ipv6 or ipv4 ? 01:45 < Drainedsoul> Flemmard: Sure, which is why there's a difference between binding to 0.0.0.0 and ::. In one case you pass a struct sockaddr_storage with ss_family set to AF_INET, in the other ss_family is AF_INET6. That's not the issue. The issue is that binding to :: also seems to bind to 0.0.0.0. 01:45 < Drainedsoul> dx: Which Linux is this? 01:45 < dx> Drainedsoul: arch 01:45 < Flemmard> so basically it doesnt do what it should eh 01:45 < Drainedsoul> dx: Are you sure? I mean you've never mentioned it before... ;) 01:46 < dx> Drainedsoul: wot 01:46 < Drainedsoul> Flemmard: For some def'n of "what it should" I suppose. I just want to make sure I'm understand it correctly 01:46 < dx> my debian server behaves the same way 01:46 < Drainedsoul> dx: It was a joke on the whole "how do you know if someone's an arch user? Don't worry, they'll tell you" 01:47 < dx> oh 01:47 < Flemmard> like vegans ? 01:47 < Drainedsoul> yes 01:47 < Drainedsoul> dx: Thanks though. 01:47 < Drainedsoul> This makes my life more complex, but at least the behaviour seems to be consistent on Linux. 02:30 < Thinkofdeath> SpaceManiac: Unless minecraft wiki has one, no 02:30 < Thinkofdeath> SpaceManiac: However i did make this which may be useful to you http://hastebin.com/eteyahavuz.java 03:27 <+SpaceManiac> Thinkofdeath: that's probably what I'm looking for 06:22 < ackpacket> I don't see where the client communicates to the server that it is pressing tab to see a list of players. Any direction this guys? 06:22 <+SpaceManiac> the server sends the tab list contents proactively 06:23 < redstonehelper> and the server doesn't know whether the client has the list open afaik 06:42 < ackpacket> hmm... 06:42 < ackpacket> if that's the case, should I expect a freshly logged on client to see a slew of those player list updates ? 1 for every player? 06:43 <+SpaceManiac> yes 08:33 < Kavukamari> dang if chests opened just 1 degree less i could hide stuff in item frames behind them and they'd be mostly undetectable 08:34 < Kavukamari> but since they open 90 degrees exactly, they texture battle with the item frames 08:39 < Kavukamari> hmm is it a bug that if there's a nonsolid block on top of an item frame it doesn't give out charge? 08:39 < Kavukamari> like inside the frame's block 09:12 < ackpacket> Kavukamari: mostly here you'll find people that deal with the protocol, and their own ways of rendering things. But a few might be familiar with notchian client/server 09:24 < Kavukamari> ah i see that makes sense 11:56 < ackpacket> If I want a player to drop something, do I have to actually *OPEN* the inventory window, or can I just send the server a click window packet to pick up the item 12:33 < Jckf> ackpacket: You can drop items in the vanilla client by using the hotkey for it, which will drop the item selected in the hotbar 12:33 < Jckf> So I'm assuming you don't need an inv open 12:34 < ackpacket> hmm... 12:34 < ackpacket> that would be logical, but for all we know the vanilla client is still 'opening a window' but not displaying it 12:34 < ackpacket> who knows what route they chose 12:35 < Jckf> I don't see any reason to do that, but who knows 12:35 < Jckf> It wouldn't been that hard to test, if you're implementing this anyway 12:35 < ackpacket> I suppose I should just fire up the ole proxy and hit that hotkey 12:47 < shoghicp> ackpacket: inventory window has 0 as the ID 12:47 < shoghicp> it's always "open" 12:48 < ackpacket> shoghicp: ah... interesting 12:48 < ackpacket> I knew it had the ID of 0, but where did you see that it's always 'open' 12:48 < shoghicp> well, as a server, that's what the client does 12:48 < shoghicp> it just issues orders to that window 12:49 < shoghicp> both on Minecraft and Minecraft: PE 12:53 < Jckf> That's an interesting "hack" 12:54 < shoghicp> well, Minecraft: PE protocol is way more limited than the PC one, so they have a window for armor ;) 12:54 < shoghicp> 0x78 12:54 < Jckf> God dag 12:55 < shoghicp> at least they are creating a new protocol 12:55 < Jckf> Not a fan of the PC protocol? ;) 12:55 < shoghicp> Jckf: I use both on my projects ;) 12:55 < shoghicp> last time we got compressed chunk sending in MCPE :D 12:56 < Jckf> Is there a lot of development around the pocket version? 12:57 < Jckf> Can't imagine the scene being that big 12:57 < shoghicp> well, I develop a server software 12:57 < shoghicp> since Mojang doesn't provide one 12:58 < shoghicp> with a plugin API ;) 12:58 < shoghicp> oh, and we can't reuse anything from Minecraft: PE 12:58 < Jckf> You should make a bridge between the PC and pocket protocols ;) 12:58 < shoghicp> since it's an ARM .so 12:58 < shoghicp> Jckf: https://github.com/shoghicp/BigBrother 12:58 < shoghicp> ;D 12:58 < shoghicp> PC -> PE 12:59 < shoghicp> PE -> PC is harder 12:59 < shoghicp> it runs as a plugin on PocketMine-MP 13:00 < Jckf> \o/ 13:05 < shoghicp> mcpe also has a bit of scene around mods 13:06 < shoghicp> they can't modify things, so there are tools to "hook" on function calls 13:11 < barneygale> ahhhh it's written in PHP 13:12 < Jckf> How unorthodox 13:14 < shoghicp> PocketMine-MP is PHP, so plugins are also PHP ;) 13:14 < shoghicp> well... it's a edgy PHP 13:14 < shoghicp> with threads, weak references and more 13:14 < shoghicp> all OOP 13:15 < Jckf> All PHP is edgy PHP 13:17 < Drainedsoul> why would anyone choose to write PHP? 13:21 < L3viathan> because it's instantly deployable on 99% of all web hosts 13:22 < SinZ> and yet this isn't a website 13:23 * L3viathan was just answering the question 13:24 < Flemmard> because it's easy and very "pardonning" (i.e you can do shit, it'll still work) 13:25 < Drainedsoul> Flemmand: What is "pardonning"? 13:25 < barneygale> you mean it has terrible exception control 13:26 < barneygale> http://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/#error-handling 13:26 < Drainedsoul> I've liked PHP a lot more since I wrote helpers to wrap its "errors" or whatever into exceptions 13:26 < Drainedsoul> but it's still awful 13:27 < Drainedsoul> I just write it because I'm paid to 13:27 < Flemmard> pardonning i mean it "understands" what you try to do, even if you do it very badly xD 13:27 < Flemmard> and doesnt complain 13:27 < Drainedsoul> that's a good argument against using it 13:27 < Flemmard> yea 13:27 < barneygale> yeah.. 13:28 < Flemmard> so sometimes you see code "how the fuck can this work?" but still works .. 13:28 < barneygale> that's not good 13:28 < Flemmard> yeah lol 13:28 < Flemmard> but people do php "YAY I CAN CODE" 13:28 < Flemmard> mmh 13:28 < Flemmard> no 13:29 < Drainedsoul> the only reason I don't mind writing PHP @ work is because they were using classic ASP/VBScript before that 13:29 < Drainedsoul> and fuck that 13:29 < barneygale> hah that's fair 13:30 < Flemmard> well, php can be pretty "powerful" if you do things the right wa 13:30 < Flemmard> y 13:31 < Drainedsoul> yeah so can any language, the arguments for PHP are basically that it can be as good as other languages if you bear the cognitive overhead of not doing the shitty things it enables 13:31 < barneygale> http://php.net/manual/en/function.easter-days.php 13:31 < Drainedsoul> i.e. it's worse than other languages 13:31 < barneygale> it has a ridiculously retarded standard library 13:31 < barneygale> with no consistency 13:31 < Flemmard> lol 13:32 < barneygale> http://phpmanualmasterpieces.tumblr.com/image/70257636397 13:32 < Flemmard> it's now made to be a quick and easy way to get shit done 13:32 < Flemmard> basically 13:32 < Flemmard> :> 13:33 < Drainedsoul> fuckin' Rasmus 13:33 < barneygale> they literally chose function names so their lengths were evenly distributed 13:38 < Drainedsoul> I don't even understand the rationale behind choosing that as a hash function, there are pretty well documented string hashing functions that are way better than the length -_- 13:50 < eddyb> dx: lol I just added an FPS counter. I'm doing 40FPS with a view distance of 8 13:50 < eddyb> dx: guess how minecraft is doing for a view distance of 4 (~4 times less chunks) 14:28 <+Amaranth> dx: I tested it and get 8 FPS while vanilla does 20-30 :D 14:29 <+Amaranth> Oh and vanilla is doing 12 render distance while hematite is doing 8 :D 14:30 < eddyb> dx: I messed up 14:30 < eddyb> Amaranth: don't tell him how 14:30 <+Amaranth> :D 14:31 < eddyb> I'm capping at 60FPS in minecraft even with vsync off 14:31 <+Amaranth> See other channel for why 17:11 < AgentK> Dykam, you're already in here... 17:12 < Dykam> barely, lol 17:12 < Dykam> 6 seconds before you 17:12 < AgentK> xD 17:12 < AgentK> ah 17:12 < SinZ> wat 20:02 < AgentK> http://wiki.vg/Pre-release_protocol#Steer_Vehicle 20:02 < AgentK> What does it mean by flags 0x1 jump 0x2 unmount 20:02 < AgentK> does it mean that the first bit signifies Jump and the second unmount? 20:02 < AgentK> or are those bitmasks or something 21:42 < rensuka> Yo dudes, I'm trying to revive a dead minecraft server project but I've hit a snag. On client version 1.6.2, I can't figure out how to make a block the user just broke, visibly drop. I send the "Block Break Animation" packets which works correctly. Does anyone know which packet needs to be sent in order to have the dropped item render on the client? --- Day changed lun. août 25 2014 05:31 < AgentK> Anybody understand what the new Maps packet's extra fields are? 05:32 <+SpaceManiac> I haven't verified this, but I understand it's specifying an area of the map's contents to patch 16:19 < WizardCM> what would be the best fix for this? the game is functioning behind the white - running java 8 http://wizrd.tk/x6dygg 16:30 < Scruff> I'd say don't run windows 8 16:30 < Scruff> Or don't use Java 8 16:34 < TkTech> WizardCM: That's the fade windows applies to non-responsive windows isn't it? 16:34 < TkTech> You can see the "Not Responding" in the menu bar 16:34 < WizardCM> TkTech: as i said, the game is fully functioning behind the white 16:34 < WizardCM> and if i keep it focused for long enough it restores itself 16:34 <+Amaranth> So that sounds like a java or lwjgl bug then 16:34 < WizardCM> and it OCCURS when the window loses focus for >10 seconds 16:34 <+Amaranth> One of them isn't handling window messages correctly so Windows things it died 16:35 <+Amaranth> thinks* 16:35 < WizardCM> best way to debug which is the cause? 16:35 <+Amaranth> ¯\_(ツ)_/¯ 16:36 < TkTech> WizardCM: That there is a genuine bug. Check JIRA for an existing post and toss yours up if it isn't already there. 16:37 <+Amaranth> I mean, I guess Minecraft could be the cause but I don't think lwjgl even gives you access to such things and if the game is still rendering frames the main loop isn't stalled 16:37 < TkTech> Does lwjgl abstract away mouse events? 16:38 <+Amaranth> TkTech: In the sense that it gives you lwjgl objects representing them, sure 16:39 <+Amaranth> I don't know if it processing them immediately and queues its own event or not 16:39 <+Amaranth> But since the main loop is apparently still going that shouldn't matter 16:40 < WizardCM> so just the minecraft jira? 16:42 < TkTech> It's just odd that it's responsive 16:42 < TkTech> http://msdn.microsoft.com/en-us/library/ms633526.aspx is pretty clear on the criteria 16:42 < WizardCM> that's why i decided to ask here 16:42 < TkTech> If it's still moving to mouse movement then it's clearly pulling from the windows events 17:53 < Not-d8a3> [mc-autodocs] thinkofdeath pushed 1 commit to master [+0/-0/±2] http://git.io/pghWLg 17:53 < Not-d8a3> [mc-autodocs] thinkofdeath 6e7d0eb - 1.8-pre2 20:15 < ackpacket> Do you guys think it would be a reasonably sane task to implement a recorder using packets? Then playback through regular minecraft 20:17 <+SpaceManiac> I remember someone had a project to do that, but IIRC encryption was a big obstacle 20:18 < redstonehelper> yeah, miners-movies.com 20:19 <+SpaceManiac> Gah, inconsistencies in the protocol docs... 20:22 < ackpacket> Well 20:22 < ackpacket> The encryption should be fine 20:22 < ackpacket> The recorder would have to do some swapping, but, if someone can make a proxy 20:22 < ackpacket> this would be built on that 20:23 < ackpacket> Problem is the recorder would have to have access to the user's name and pass beforehand 20:45 < Drainedsoul> would it need a username or password, or just an access token? 20:49 < ackpacket> Access token I suppose, but are we to expect the user to be aware of such a thing? 20:49 < ackpacket> I think client ID too 20:50 < Drainedsoul> I don't see how user awareness matters. The recorder, as a component, would not need to be aware of the username and password. 20:52 < Drainedsoul> can't you just rip access tokens out of launcher_profiles.json? 20:52 < ackpacket> What if I decided to host this online, are kids going to figure out how to find their access token? 20:52 < ackpacket> Of course user awareness matters. 20:52 < Drainedsoul> if you decided to host it online you'd presumably supply a front-end that gathers username and password and uses those to obtain an access token 20:53 < Drainedsoul> separation of concerns and all that 20:55 < ackpacket> Yes sorry, i think we were just talking around each other. I was concerned with "what does the user have to provide to my software", and I think you're concern is "what does the software have to provide to mojang" 21:07 < dx> or you could, you know, just see how https://miners-movies.com/ implemented it. 21:12 < TkTech> The author is in here somewhere, goes by dividuum everywhere else. 21:12 < TkTech> ... dav1d maybe? 21:14 < redstonehelper> no, it was dividuum 21:14 < redstonehelper> dav1d is somebody else 21:14 < redstonehelper> I might be able to find him if you need him? 21:15 < dx> rip dividuum 21:15 < dav1d> wat 21:15 < dav1d> redstonehelper: wat 21:15 < redstonehelper> dav1d: are you dividuum? 21:15 < dav1d> no 21:15 < redstonehelper> (no) 21:15 < dav1d> wat 21:15 < dav1d> oh 21:15 < dav1d> didnt read 21:15 < redstonehelper> heh 21:16 < dx> dav1d: congratulations on not being dividuum 21:16 < redstonehelper> a true achievement 21:16 < redstonehelper> you should be proud. 21:17 < TkTech> redstonehelper: Don't think it's worth dragging him in for if he's not already here, up to ackpacket to reach out. 21:17 < TkTech> ... who left. Bah. 21:17 < redstonehelper> lol 21:17 < TkTech> I could have sworn he was in here, he's asked questions before 21:17 < dx> he was 21:18 < dav1d> he was 21:18 < dav1d> ohhh this guy 21:18 < dx> and he has explained the weird stuff he's done with login 21:18 < dav1d> he is german 21:18 < dav1d> iirc 21:18 < redstonehelper> he is 21:18 < dx> you can tell he's german because he has a link to a page full of dox called "imprint" 21:18 < redstonehelper> woo, datenschutz 21:18 < TkTech> Also all the german on the page. 21:19 < TkTech> And the address in germany, and the german TLD 21:19 < TkTech> :3 21:19 < dx> well i meant https://miners-movies.com/ ... 21:19 < TkTech> Ah 21:19 < TkTech> I was talking about dividuum.de 21:19 < dx> yeah that one is way more obvious lol 21:20 < redstonehelper> he even put his cell phone number in there 21:20 < dav1d> you have to after german law, dont you? 21:20 < TkTech> What, really? That would be insane? 21:20 < dav1d> also fuck the police 21:20 < dx> it is insane 21:20 < dav1d> that's why I dont have it 21:20 < dav1d> well 21:20 < dav1d> there is a difference between commercial and private 21:20 < dav1d> so not 100% sure 21:21 < TkTech> Wait, you are german? 21:21 < dav1d> yes 21:21 < dav1d> dav1d.de :P 21:21 < TkTech> Hah! I did remember correctl.y 21:21 * dx reports dav1d to the police 21:21 < dx> correct.ly 21:21 < dav1d> :D 21:21 < dav1d> dav1dde @github^^ 21:21 < dx> dav1d: the cube in your website reminds me of antichamber 21:22 < dav1d> dx: inspired by it 21:22 < dav1d> but 21:22 < dav1d> it sucks 21:22 < dav1d> I hgave up on it 21:22 < dx> it's inspired by antichamber, that makes it good automatically 21:22 < dav1d> hehe 22:20 < benbaptist> I don't get why the hasJoined attribute to the sessionServer only sometimes returns data. Most of the time, it's just a blank page. Am I doing something wrongly? 22:20 < benbaptist> (I'm a server authenticating clients, btw) 22:23 < benbaptist> Oh, it just occurred to me. Maybe my implementation isn't stripping leading zeros. 22:24 <+SpaceManiac> Make sure you're handling negatives too 22:25 < benbaptist> Ah. Does Python have a digest function acceptable for this situation, or should I just try to write something myself? 22:26 <+SirCmpwn> benbaptist: I have a gist that can help you 22:26 < benbaptist> Nice! 22:27 <+SirCmpwn> https://gist.github.com/SirCmpwn/6d78aa1efd40124019ae 22:27 <+SirCmpwn> this has apparently been ported to every programming language ever 22:27 <+SirCmpwn> search github for the gist url 22:29 < benbaptist> Ah, thanks SirCmpwn! 22:29 <+SirCmpwn> yw 22:31 <+SpaceManiac> hashlib object .digest() should get you the byte array --- Day changed mar. août 26 2014 00:28 <+SpaceManiac> Is there any way to get stacktraces from the "Connection Lost / Internal Exception" screens? 00:41 < Thinkofdeath> SpaceManiac: i've heard http://wiki.vg/Debugging enables it 00:41 < Thinkofdeath> i've only ever used it for packet dumps so idea if it actually does 00:42 <+SpaceManiac> I'll keep that in mind for the future, but I ended up finding the problem 00:42 < benbaptist> Is there some sort of UUID.nameUUIDFromBytes function for Python? the uuid module doesn't seem to have any functions for doing such a thing to generate an offline-mode UUID. 00:43 <+SpaceManiac> could just steal Java's implementation 00:44 <+SpaceManiac> I see uuid.uuid3, maybe that is what you're after? 00:44 < benbaptist> I don't know how I'd steal their implementation, particularly :P 00:45 <+SpaceManiac> md5.digest(), clear/set a few bits, UUID(bytes=...) 00:45 < benbaptist> Not sure, as uuid.uuid3 and uuid.uuid5 want some "namespace" field. I haven't figured out how to get results that are similar to Java's implementation of UUID.nameUUIDFromBytes 00:47 <+SpaceManiac> https://gist.github.com/SpaceManiac/db431467a6503bc866d5 <- Java's implementation, very straightforward 00:51 <+SpaceManiac> https://bugs.mojang.com/browse/MC-69481 <- filed a bug relating to the earlier issue 00:51 < shoghicp> I think there was a report of that already 00:52 < shoghicp> closed because it was caused by a third party 00:52 <+SpaceManiac> It's so obviously a client bug though :/ 00:52 < Thinkofdeath> SpaceManiac: https://bugs.mojang.com/browse/MC-67961 00:53 < redstonehelper> Thinkofdeath: you should keep issues updated if you want them fixed 00:53 <+SpaceManiac> Ah, I am weak at jira search evidently 00:53 < redstonehelper> (affected versions) 00:53 < Thinkofdeath> redstonehelper: done, thanks :) 00:53 < redstonehelper> I hope you tested it 00:53 < redstonehelper> derp, SpaceManiac just did 00:54 <+SpaceManiac> Aye, it's still there 00:54 < Thinkofdeath> even if the packet was fixed Drainedsoul brings up a good point on how it couldn't really work 00:55 < Thinkofdeath> since you can't tell when the client gets the packet 00:55 <+SpaceManiac> Yeah, I did notice that. I have a hackish workaround but it might not always be sufficient 00:56 <+SpaceManiac> (if you don't set compression in LOGIN, setting compression in PLAY doesn't kill the client but does have that problem) 01:01 < benbaptist> I tried using Java's implementation but it still doesn't seem to return the same result. (am I supposed to be passing "OfflinePlayer:username" to md5 or something else?) 01:01 <+SpaceManiac> OfflinePlayer:username is right 01:01 <+SpaceManiac> what username are you testing with and what does your Python code look like? 01:02 < benbaptist> Well, for one, the Java implementation you posted above seemed to return the same as just throwing the MD5's digested result directly into uuid.UUID() 01:02 < benbaptist> which was this little bit of code: m.update("OfflinePlayer:benbaptist");uuid.UUID(bytes=m.digest()) 01:03 < benbaptist> The UUID returned by that is 7edca23a-df59-5025-9578-5b6e76918c41, but this vanilla Minecraft server seems to be using 'b5c6c2f1-2cb8-30d8-807e-8a75ddf765af' for my offline-mode UUID. 01:04 <+SpaceManiac> I get 'b5c6c2f1-2cb8-60d8-407e-8a75ddf765af' from that Python code (which is much closer but not correct, due to the bit flags) 01:05 <+SpaceManiac> maybe m has stuff in it already? 01:05 < benbaptist> Oh, yeah. I wasn't resetting m each time, so I probably screwed that up. 01:06 < benbaptist> Ah, that works now, awesome! I'll throw in the bit flags and then hope for the best. 01:07 <+SpaceManiac> Excellent 01:24 < AgentK> Anybody happen to know the mapping name for jp in 1.8-pre1 01:24 < AgentK> It's a Packet with one VarInt in it 01:27 < AgentK> Oh 01:27 < AgentK> ClientboundKeepAlive 01:27 < Bibl> Hi 01:28 < Bibl> Hi. 01:28 < Bibl> Oops 01:28 < Bibl> What packet is the server supposed to send when the local player is dead? 01:29 < Bibl> Because I have a dead player and when it logs in receives to packet to indicate that it's dead. 01:29 < Bibl> no packet* 01:32 <+sadimusi> Bibl: I'd guess it's just a health update to zero 01:35 < Bibl> Not receiving any health updates 02:17 < benbaptist> Bibl, I would've sworn a health update does it. What version are you on? 02:17 < Bibl> 1.7.10 02:17 < Bibl> Ok 02:17 < Bibl> So the situation was my local player (the bot) was dead 02:18 < Bibl> It had been killed before I had implemented sending packets other than the keep alive to the server 02:18 < Bibl> So I added a command to manually send a client request to the server 02:18 < Bibl> new Thread(new Runnable() { 02:18 < Bibl> Scanner scanner = new Scanner(System.in); 02:18 < Bibl> @Override 02:18 < Bibl> public void run() { 02:18 < Bibl> String line; 02:18 < Bibl> while ((line = scanner.nextLine()) != null) { 02:18 < Bibl> if (line.equals("respawn")) { 02:18 < Bibl> bus.dispatch(new RequestRespawnEvent()); 02:19 < Bibl> } 02:19 < Bibl> } 02:19 < Bibl> System.out.println("Done");