00:33 <+sadimusi> how high is your tuition? 00:33 <+sadimusi> you live in canada, right? 00:33 < Drainedsoul> $3050 for this term 00:33 < Drainedsoul> 4 courses 00:33 <+sadimusi> o.O 00:33 <+sadimusi> yeah that's a bit different here 00:34 <+sadimusi> I pay around $600 per term 00:34 < Drainedsoul> I paid substantially less at college, but it still wasn't $600 per term 00:34 < Drainedsoul> more like $1000-$1500, depending on the number of courses 00:35 <+sadimusi> the fun part is that a lot of US students come here for a term or two but still pay tuition back home 00:35 <+sadimusi> but of course that also works the other way around 00:35 < Drainedsoul> yeah I don't really get traveling to go to school, but then again I never bought into the whole student lifestyle thing 00:36 < Drainedsoul> school has always been a means to an end for me. I always just wanted for it to be over. 00:36 <+sadimusi> it's quite the opposite for me 00:36 <+sadimusi> I really enjoy the student life 00:37 <+sadimusi> and I make enough money freelancing to sustain my lifestyle 00:37 < Drainedsoul> it's not even really about money for me. It's more about the stress level. I find homework etc. stressful. Work just isn't the same way. 00:38 < Drainedsoul> in school I'm judged on ridiculous rubrics on skills that don't apply to my career goals, at work I'm judged on reasonable rubrics doing something I really enjoy. 00:38 < Drainedsoul> "if I fail chemistry I can't get my Software Engineering degree until I retake it" 00:38 < Drainedsoul> wut 00:40 <+sadimusi> I don't really enjoy the studying part of the student life either 00:40 <+sadimusi> it's more the not-working I enjoy :) 00:41 < Drainedsoul> I consider working/making money to be one of the most important things in life 00:41 < Drainedsoul> so 00:41 <+sadimusi> it changed a bit now, because I actually have lectures I enjoy again 00:41 <+sadimusi> any idea why you feel that way? 00:41 < Eviltechie> I'm writing an essay on education right now, because that totally relates to wiring up a tv studio. Right? 00:42 < Drainedsoul> haha 00:43 < Drainedsoul> I feel as though people have a duty to not just develop their skills, but to put them to productive use, not just for their own service, but for the service of others, through trade. 00:43 < Drainedsoul> Thusly the amount of money a person makes/has becomes a measure of their worth not just to themselves, but also to other people. 00:52 < Eviltechie> I'm a big fan of work because it tends to not follow you home 00:54 < coolcat> Draine, with that logic every pop star has a huge amount of worth to others... 00:54 < Drainedsoul> coolcat: Well clearly they do. Otherwise, why would people pay to see them? 00:55 < Drainedsoul> Eviltechie: That really depends on your job. I agree that it doesn't to the extent that school does, however. Despite the fact that I actually work from home. 00:55 < coolcat> Never payed to seen JB, Miley Cryus or Paris Hilton 00:56 < coolcat> better way to word it: 00:56 < coolcat> They havent added anything to society 00:57 < dx> coolcat: nobody promised capitalism would be 100% fair 00:57 < coolcat> lol, capitalism is far from fair, just saying money != worth to others 01:00 < dx> Eviltechie: that doesn't really work for freelancers... but it's also the same reason freelancing didn't work out for me. 01:01 < Drainedsoul> coolcat: In what way is money not equal to worth to others? If someone produces something you value, you give them money up to that value. If you value the thing less than the money, you don't give them the money 01:01 < Drainedsoul> money is the very definition of worth to others 01:01 < Eviltechie> dx: yup. when I worked this summer it was nice. "Oh, it's 5pm? Whelp, the rest can wait for tomorrow." 01:03 <+sadimusi> Eviltechie: my current experience freelancing is quite the opposite: I get a huge bonus if I finish a certain project until next saturday 01:03 < coolcat> Because if I found 1 billion dollars on the ground, im not suddenly worth something to people 01:03 <+sadimusi> Eviltechie: so yeah, sometimes working 9-5 sounds great as well 01:03 < dx> coolcat: you're definitely worth a lot as a client for whoever you're going to spend/invest it on :D 01:04 < Eviltechie> sadimusi: I could see having a differnt attitude if I was more invested in it. 01:04 < Eviltechie> Writing essays? I would not take those home with me? Wiring a tv studio? I would probably stay until late at night. 01:05 < coolcat> Sure, but spending isnt the same as having 01:05 < coolcat> eh,brb 01:17 <+sadimusi> Drainedsoul: just popped up on ycombinator: http://www.lifestyleupdated.com/2013/08/05/eliminating-w4w-work-for-works-sake-and-an-announcement/ 01:20 < Drainedsoul> sadimusi: I definitely don't work for work's sake, otherwise I might enjoy churning out these assignments :P 01:25 < dx> "Stop associating your life with your work" :( 01:26 < dx> this post is messing with my brain 01:29 < Drainedsoul> I have a couple questions about chunks with respect to the client, if anyone is willing to try and answer 01:29 < Drainedsoul> I know, talking about Minecraft, how droll 01:29 <+sadimusi> :) 01:31 < Drainedsoul> The vanilla server seems to be able to send the player a 15x15 segment of the world pretty easily. When I leave more than 12x12 on the client I crash the client. Does that have something to do with null chunks, or am I just doing it wrong 01:32 * sadimusi has no idea and is busy watching BAHFest 01:43 < Eviltechie> We recently discovered that an attacker illegally entered our network and may have obtained access to your Adobe ID and encrypted password. 01:43 < Eviltechie> Thanks Adobe! 01:48 < Drainedsoul> :P 02:02 < Eviltechie> I don't even creative cloud 02:17 < Not-003> [fNbt] fragmer pushed 6 commits to master [+1/-0/±14] http://git.io/B5kuqg 02:17 < Not-003> [fNbt] fragmer 8778a33 - Fixed NbtReader.ToString() not respecting NbtTag.DefaultIndentString, and added a ToString(bool,string) overload to allow specifying custom indentation. 02:17 < Not-003> [fNbt] fragmer 35249fc - Got rid of some redundant code (~50 LoC) in NbtFile. 02:17 < Not-003> [fNbt] fragmer d541dc9 - Eliminated the possibility of adding a Compound tag to itself. It's still theoretically possible to make an inheritance loop (add child tag to parent tag), but checking for that would be rather expensive. 02:17 < Not-003> [fNbt] fragmer 11561bb - Fixed NbtString value defaulting to null, instead of an empty string. 02:17 < Not-003> [fNbt] fragmer d5e7bac - Minor code cleanup in NbtList and NbtTag; behavior unaffected. 02:17 < Not-003> [fNbt] fragmer 3c564ce - Expanded unit test coverage to 91%. Probably going to stop here for now -- these unit tests are getting more and more obscure and redundant. 03:39 < Not-003> [fNbt] fragmer pushed 3 commits to master [+0/-0/±3] http://git.io/D_7Lzg 03:39 < Not-003> [fNbt] fragmer 3ed7863 - Updated the changelog 03:39 < Not-003> [fNbt] fragmer a965b49 - Updated Doxygen to 1.8.5 03:39 < Not-003> [fNbt] fragmer 4d45701 - Updated the readme. And with this, release 0.5.1 is complete! 03:41 < Not-003> [fNbt] fragmer tagged 4d45701 as v0.5.1 http://git.io/H2JRiA 05:18 < Not-003> [SMProxy] SirCmpwn tagged 554912f as 1.4.6 http://git.io/IJ5QsA 05:20 < Not-003> [SMProxy] SirCmpwn pushed 1 commit to master [+0/-0/±1] http://git.io/4b-j8Q 05:20 < Not-003> [SMProxy] SirCmpwn dbb1bb2 - Modify RELEASE build configuration 05:23 < Not-003> [SMProxy] SirCmpwn tagged dbb1bb2 as 1.6.4 http://git.io/PKX6kQ 12:13 < Aquaticus> Drainedsoul: you around? 14:48 < Drainedsoul> Aquaticus: I am now 18:14 < Not-003> [fNbt] fragmer pushed 5 commits to master [+2/-0/±11] http://git.io/SNKBzA 18:14 < Not-003> [fNbt] fragmer a6977f0 - Upped .NET framework requirements from 2.0 to 3.5 18:14 < Not-003> [fNbt] fragmer 0c0ec87 - Minor code cleanup in NbtBinaryWriter/NbtReader/NbtReaderNode 18:14 < Not-003> [fNbt] fragmer 5a88dcd - Initial commit of NbtWriter class, for high-performance writing of NBT data to streams. 18:14 < Not-003> [fNbt] fragmer b163c47 - Minor optimization in NbtBinaryReader and NbtBinaryWriter 18:14 < Not-003> [fNbt] fragmer 7fdfa01 - Sped up NbtWriter significantly by removing duplicate-tag-name checks. I'm shifting that responsibility to the API user. 18:52 < Grum> Time to break open packets :P 18:53 < Grum> we now have 5 packets with id '0x00' \o/ 18:56 < Krenair> wat? 5? 18:57 < eddyb> Grum: sub-ids or just a temporary code state during the rewrite? 18:58 < Grum> no real ids 18:58 < Grum> as real as the ids are now :) 18:58 < eddyb> so the latter, I guess 18:58 < Grum> no 18:59 < Grum> this is our end-state 18:59 < Grum> besides going over each packet and stripping what is not needed in it 18:59 < eddyb> so how do you differentiate between the 5 packets? 18:59 < Grum> you dont :P 18:59 * eddyb confused 19:00 < Grum> it depends on what side you are on, server or client 19:00 < Grum> it depends on the current 'state' of the protocol 19:00 < Grum> sofar we have 3 out of 5 states 19:00 < Grum> hmm or 3 out of 4 we'll see 19:00 < Grum> and each of them has a packetid 0 :p 19:01 < eddyb> ah, I thought of state, but you said "you dont" instead of "connection state" 19:01 < Grum> for a total unique packets of: 1+68+27+2+2 19:01 < Grum> well you said 'temporary code state' -- its not temporary 19:01 < Grum> this is what we planned to use 19:02 < eddyb> yeah, I got that, but you didn't outright say states when I asked how you differentiate. nevermind, I got it now anyway :) 19:03 < Grum> basically we have a 'protocol' for each state 19:03 < Grum> and some packets cause transitions between states 19:03 < eddyb> yeah, that's cool :D 19:04 < Grum> sofar we have: handshake -> login -> game 19:04 < eddyb> you had unencrypted/encrypted before, but same protocol, right? 19:04 < Grum> that is initiated by 'login' now 19:04 < Grum> login does the whole handshaking 19:05 < Grum> and is .... 4 packets now 19:05 < eddyb> do packets contain a length field now? 19:06 < Grum> no 19:06 < Grum> they are prefixed with a length 19:06 < eddyb> that's what I was asking, I guess :P 19:07 < Grum> yeah but you suggested: type, len, data 19:07 < Grum> but its: len, type, data 19:07 < Grum> and the len includes the 'type'-len 19:07 < Grum> so chunking the data is going be super trivial 19:08 < eddyb> right... 19:08 < Grum> besides the fact we use VarInt for the len ;) 19:08 < Grum> which will probably trip some people up ;) 19:08 < eddyb> Grum: separating network code from parsing code, woo :D 19:08 < Grum> yeah we actually needed ;) 19:08 < Grum> so we just added it ;) 19:09 < eddyb> a multibyte length encoding was what I would use, too. I've seen it in WoW 19:47 < Sehales> sadimusi: could you resend me the link to the serverencryption java class which you have sent me yesterday? 19:51 < Grum> boo i broke it ;( 19:51 < eddyb> Grum: it's okay 19:52 < Grum> i cant respawn anymore :P 19:52 < eddyb> Grum: it's not like you're running this on "production" servers 19:52 < Grum> not yet ;) 19:56 <+sadimusi> Sehales: https://github.com/SimpleServer/SimpleServer/blob/master/src/simpleserver/stream/Encryption.java 19:57 < Grum> you do not actually have to use bouncycastle 19:57 < Grum> all the needed libs are in java6 19:57 <+sadimusi> yeah, but it makes things a bit easier 19:57 < Grum> not really 19:58 < Sehales> that sounds interesting without the bouncycastle lib 19:58 < Sehales> but I didn't ever used/worked with encryption in java... 19:59 < Grum> neither did i before i implemented it for minecraft! /me hides 19:59 < Sehales> you have written the encryption stuff without the knowledge for it before? lol 20:00 <+sadimusi> that's why they had to rewrite it twice ;) 20:00 < Grum> and everyone is using it! 20:00 < Grum> hehe we just changed ciphers tbh :P 20:00 < Grum> the basic was ok ;) 20:00 < Sehales> you guys at mojang are funny 20:00 <+sadimusi> especially funny was the first cipher change 20:00 < Sehales> hey lets do that, I don't know how, but hey when it fails I will do it again :D 20:00 < Grum> yeah hehe 20:00 <+sadimusi> the exact same exploit script still worked :D 20:01 < Grum> rc4->...->aes :D 20:01 < Grum> i dont even know what i used between 20:01 < Grum> mhac256 orso? :/ 20:01 < Sehales> okay that IS funny 20:01 < Grum> hmac even 20:01 <+sadimusi> I might have written it into my gist back then 20:01 < Grum> to be fair, i knew rc4 was broken 20:01 <+sadimusi> it was HC-256 20:01 < Grum> but meh, working > proper :P 20:02 < Grum> close :p 20:02 < Sehales> shouldn*t you think about the circumstance that another person knows more about your work than yourself?... :P 20:02 < Grum> Sehales: not sure how that is a problem 20:02 < Grum> that is how one learns not? 20:03 < Sehales> I would hate it when another person knows my own code better than myself... 20:03 < Grum> I guess if you are really unsure about yourself you might have issue with it 20:04 < Grum> that is not what happened, people just found something exploitable in code that was put out to have that done with 20:04 < Sehales> no I meant that you don't know what you have used... 20:04 < Sehales> doesn't matter at all 20:05 < Grum> no i just cannot remember the exact name 20:05 < Grum> it was a rather obscure thing 20:05 < Grum> not at all mainstream 20:05 <+sadimusi> it really doesn't matter; it was only in there for a week 20:05 < Sehales> it's all fine.... 20:05 <+sadimusi> and was probably supposed to be a quick fix 20:05 <+sadimusi> Grum: are you also involved with the yggdrasil backend? 20:05 < Grum> sadimusi: beyond the original going over the 'need'-specwise, no 20:05 < Grum> i preferred another solution, we might get that somewhere 20:06 <+sadimusi> I'll have to bug dinnerbro about it then 20:06 < Grum> about what? 20:06 < Grum> he also didn't write it 20:06 <+sadimusi> but he is the one usually handling my bug reports 20:07 < Grum> oh you mean the invalid ones? :D 20:07 <+sadimusi> but he closed this one a bit prematurely https://mojang.atlassian.net/browse/MCL-1513 20:07 <+sadimusi> he fixed the first one and closed this one 20:08 <+sadimusi> I'm just not sure if I'm even supposed to send the agent field anymore 20:08 <+sadimusi> it used to work fine, but now it invalidates all my access tokens whenever I use it 20:12 < Sehales> grum couldn't you copy the minecraft client to encrypted server connection stuff and send it to me? ;) maybe I am too stupid for that, but I do not understand how that works/what to do 20:13 < Grum> Sehales: nope 20:13 < Sehales> yes I know :( 20:18 <+sadimusi> Sehales: maybe you would be better off just using a library like craft.net 20:19 < Sehales> as I said yesterday I am doing that in Java right now 20:19 < Sehales> because I want to understand what is going on 20:19 < Sehales> I know that I can just use a library 20:20 < Sehales> but then I learned not as many as I would learn when I am doing it on my own 20:21 < Sehales> or is that the wrong way? 20:21 < Drainedsoul> I don't see why binding state to packet parsing is necessary, other than to add another layer of complexity/coupling. 20:22 <+sadimusi> Sehales: to me it sounds like you aren't experienced enough to write it on your own 20:22 < Grum> Drainedsoul: for our simplicity? 20:23 < Grum> many packets only apply in certain 'stages' of the connection 20:23 < Grum> so we've made that split 20:24 < Sehales> could be true, but that is the sense of the application I want to write, just trying to get on my knowledge/experience limit and trying to get it work, after that I can say to myself: nice job, next challenge 20:24 < Grum> code it offline-mode, no encryption ;) 20:25 < Grum> well, not in the new version at least ;) 20:27 < Drainedsoul> Sehales: If you're writing a program, and don't mind learning along the way, I don't see why everyone's discouraging you. However, if you want to just get something done, you'd be better off using a library 20:27 < Drainedsoul> people around here are trigger happy on telling people to use libraries though, so...- 20:28 < Grum> all libraries will have to change drastically though :) 20:28 < Grum> time to make all fields private in all packets 20:28 < Drainedsoul> that depends what the libraries do and how they're designed 20:29 < Drainedsoul> there's this thing called "loose coupling", not sure if you guys have heard of it... 20:29 <+sadimusi> that's why I'm not touching any of my minecraft projects until I've seen those changes :) 20:29 < Grum> sadimusi: which you wont until 1.7 releases 20:29 <+sadimusi> no snapshots? 20:29 < Grum> not finished until then ofc 20:30 < Sehales> btw, is it true that the new chat format isn't capable of having different parts of a message in different colors? 20:30 < Grum> on 20:30 < Dinnerbone> No it is not true. 20:30 < Grum> *no 20:30 < eddyb> it just works differently 20:30 < Dinnerbone> It was specifically designed to do exactly that without the horrible state keeping of the current system 20:30 < eddyb> (and much, much, better) 20:31 < Grum> if someone claims that they are ... failures at claiming things 20:31 < eddyb> Drainedsoul: what's "loose coupling" supposed to do? 20:31 < eddyb> s/do/be 20:32 < Drainedsoul> it means not tying things together so that they depend on implementation details of other things, in short 20:32 < Drainedsoul> as opposed to tight coupling, which is the opposite 20:33 < eddyb> so you were probably referring to flexible libraries which can be pipelined into larger things 20:33 < Drainedsoul> as I said, it depends on what the library does 20:42 < Grum> (or how you use it ;D) 21:15 <+Amaranth> iirc the client originally had issues dealing with styles in the new format 21:15 <+Amaranth> So that might be what Sehales heard 21:17 < Sehales> could be possible, someone said to me that he has read that the new format is only supporting one-color-messages 21:18 <+sadimusi> there was a bug in it that caused this, but it was fixed long ago 22:10 < Sehales> yay I got it! 22:11 < Sehales> okay no I can go to sleep.... :D have a nice day/night you all 22:13 < Drainedsoul> I know that feeling altogether too well... --- Day changed mar. oct. 08 2013 00:54 < Not-003> [MCPP] RobertLeahy pushed 1 commit to master [+0/-0/±1] http://git.io/kmxqmQ 00:54 < Not-003> [MCPP] RobertLeahy 73634b5 - Whisper Refactor 03:54 < dx> my terminal emulator sometimes sends the wrong control codes and switches my irc client to this channel. but always this channel. ¯\(°_o)/¯ 03:56 < Eviltechie> dx: do you even teletype bro 03:56 < dx> Eviltechie: i only pseudo teletype :( 04:30 < Not-003> [fNbt] fragmer pushed 1 commit to master [+0/-0/±2] http://git.io/LcNshg 04:30 < Not-003> [fNbt] fragmer 50082df - Fixed NbtReader not reading lists-of-compound-tags properly. Added a unit test for this specific case. 07:11 < Not-003> [MCPP] RobertLeahy pushed 1 commit to master [+0/-0/±3] http://git.io/yLU5jA 07:11 < Not-003> [MCPP] RobertLeahy b56c36d - ClientList Search 14:14 < Grum> Time to see if i can make some hackwards compatibility for the old mc protocol server status queries :/ 14:15 < eddyb> Grum: weren't they using top IDs? 14:15 < Grum> top ids? 14:16 < eddyb> max byte value 14:16 * eddyb thinks that can be abused as a special variable length encoding case 14:16 < Grum> it is also the start of a valid packet 14:16 < Grum> 0xFE, 0x01 = 0xFF bytes to read >.> 14:17 < eddyb> well, require a longer encoding for the valid packet :P 14:18 < eddyb> (make some stress tests with stats to determine the impact) 14:18 < eddyb> Grum: but I'm no expert in anything, giving my opinion because I care :)) 14:18 < Grum> you are just saying random things 14:21 < iBotPeaches> orange green toaster grass sun snow 14:21 < Grum> iBotPeaches: implemented, thanks 14:21 < iBotPeaches> :) 14:53 < eddyb> Grum: they weren't random in my head :( 19:21 < Grum> pfft actually coded proper fallback code for old clients talking to the new server 19:21 < Dinnerbone> Now do it the other way around! 19:21 < Dinnerbone> Slacker 19:22 <+sadimusi> Grum: <3 19:22 < Grum> ctx.pipeline().firstContext().writeAndFlush(out).addListener(ChannelFutureListener.CLOSE); <-- that just looks jummy 19:24 < Grum> i even tested it with 1.3, 1.4 and 1.6! :D 19:24 < Grum> now just 1.7 >.> .... that we didnt finish yet 19:24 < Grum> or did you already Dinnerbone? :D 19:24 < Grum> STOP SLACKING ALREADY! 19:24 < Dinnerbone> Status + pinging works 19:24 < Dinnerbone> Just not backcompat yet but since you're on a roll I thought you could tackle that 19:26 < Grum> yeah 19:26 < Grum> just building a commit for that 19:26 < Grum> well for the server side 19:27 < Grum> oh i should not forget to remove that ServerboundRespawnPacket :P 19:28 < Grum> that is just silly :( 19:48 < Grum> allthemstuffpushed 19:48 < Grum> going for another cleanup round 19:50 < Vector> oh yay, mojang dev talk 19:51 < Vector> and how did i connect to this network twice... 19:54 < Not-003> [Craft.Net] SirCmpwn pushed 5 commits to master [+3/-0/±174] http://git.io/prKilg 19:54 < Not-003> [Craft.Net] owen2 4212140 - Fixed regionFile never getting opened. 19:54 < Not-003> [Craft.Net] owen2 edbde9b - Pretending to be version 1.6.4 19:54 < Not-003> [Craft.Net] owen2 6810430 - Merge branch 'master' of github.com:owen2/Craft.Net into HEAD 19:54 < Not-003> [Craft.Net] owen2 345cacd - Deleted commented code 19:54 < Not-003> [Craft.Net] SirCmpwn a93b3c7 - Merge pull request #190 from owen2/master Fixing Saves 20:02 < Not-003> [fCraft] fragmer * r2230 2 files : Updated IsoCat tileset to include CPE CustomBlocks 1 (thanks AndrewPH) 20:07 <+AndrewPH> o/ 21:36 < dividuum> sadimusi, I just added another way to reproduce my login problem to https://mojang.atlassian.net/browse/MCL-1513 21:38 <+sadimusi> great 21:38 <+sadimusi> if there was only a way to reopen it 21:38 <+sadimusi> guess we just have to keep bugging Dinnerbone about it ;) 21:38 < Dinnerbone> If only there were some way that the relevant people got emailed every time you comment on it, so that they didn't need to be bugged on other mediums too. 21:39 <+sadimusi> well, that email didn't seem to help much 21:40 < Dinnerbone> No? It's been a whole 6 minutes since it was sent. 21:40 <+sadimusi> dividuum: also not that I wrote most of http://wiki.vg/Authentication, so you can'r really rely on it 21:40 < Dinnerbone> In that time I've been doing other non-work things, as it's not work time. 21:40 < Dinnerbone> In addition to replying on here justifying about why it's not opened yet :) 21:40 <+sadimusi> I was referring to my comment which I posted about two weeks ago 21:42 <+sadimusi> but don't take that as criticism, I know that the tracker is overflowing 21:52 < Dinnerbone> sadimusi, dividuum: https://gist.github.com/Dinnerbone/28a0cf7ace5d257dd14f 21:53 <+sadimusi> Dinnerbone: where did that '"requestUser":true' come from? 21:53 <+sadimusi> maybe that's the issue 21:53 < Dinnerbone> It's unrelated to the request 21:54 < Dinnerbone> Just stuff authlib adds 21:54 < Dinnerbone> I can remove it and test again 21:54 < Dinnerbone> I'm only doing this through code because I made this library for a reason and I've tried to reproduce this manually too many times with no success 21:56 < Dinnerbone> And for the record: Agent is NOT optional if you want to actually play a game. 21:56 < Dinnerbone> Yes, you can log in without it. And yes, it won't give you any profiles back. That is completely intentional. 21:58 < Dinnerbone> It is possible you're running into the maximum login count - you can only be logged into one game profile on so many different clients. Each new one will log out the oldest. 21:58 < Dinnerbone> That, too, is intentional. The limit is quite high. 21:59 < Dinnerbone> Please do go fetch authlib and write some code to reproduce it there, or your own entirely, and attach it to the ticket for us to run 21:59 <+sadimusi> I tried to reproduce it by copying the data from your log and I still get the same error 22:00 <+sadimusi> I want to eliminate the possibility that my library is at fault, that's why I used curl so far 22:01 <+sadimusi> but I guess I could use authlib 22:01 < Dinnerbone> Authlib is completely javadoc'd and up and you can guarantee that it works as both our launcher & the game itself uses it 22:01 < Dinnerbone> I just ran this code lots of times and no failures 22:02 <+sadimusi> is it available anywhere apart from the launcher jar? 22:02 < Dinnerbone> Played the latest snapshots with our launcher recently? 22:02 <+sadimusi> no 22:02 < dividuum> Thanks for your feedback Dinnerbone. I'll have a look at authlib 22:02 < Dinnerbone> Ok 22:02 < Dinnerbone> Do you know how to get libraries that the game versions ask for? 22:03 <+sadimusi> yes 22:03 <+sadimusi> I wrote most of the documentation about it 22:03 <+sadimusi> I'll get it from there then 22:03 < Dinnerbone> Then you can find authlib there 22:03 < Dinnerbone> You also have sources available, it's in disguise of a maven repo --- Log closed mar. oct. 08 23:07:00 2013 --- Log opened mar. oct. 08 23:07:07 2013 23:07 -!- Irssi: #mcdevs: Total of 113 nicks [1 ops, 0 halfops, 8 voices, 104 normal] 23:10 -!- Irssi: Join to #mcdevs was synced in 190 secs 23:25 < dividuum> Dinnerbone, i used authlib and got your snippet to run. I get an exception: com.mojang.authlib.exceptions.InvalidCredentialsException: Invalid token. 23:26 < dividuum> (i posted my modified source and the output of a run as a response to the gist) 23:27 < Dinnerbone> Does it happen 100% of the time? 23:29 < dividuum> let me try 10 times 23:29 <+sadimusi> Dinnerbone: for me your snippet worked fine, I also managed to log in again with the received token (which your library makes really difficult) 23:30 < Dinnerbone> You just save the credentials (the map) and load them up again in the future 23:31 < dividuum> tried 10 times. zero success 23:31 < Dinnerbone> The account you are testing; does it have a minecraft profile? 23:31 < dividuum> i converted to a mojang account a while ago 23:32 < dividuum> i login with my email address 23:33 < Dinnerbone> So that's most likely a yes? 23:33 < dividuum> Yeah. I registered, when there was only minecraft 23:33 < dividuum> and later converted, because i also own Cobalt 23:35 < Dinnerbone> Please PM me your user UUID (authlib: auth1.getUserID()), game profile ID + name (auth1.getSelectedProfile()) and username you're logging in with 23:35 < dividuum> ok. one moment --- Day changed mer. oct. 09 2013 00:32 < Not-003> [fNbt] fragmer pushed 4 commits to master [+1/-0/±11] http://git.io/fTreQg 00:32 < Not-003> [fNbt] fragmer d10374f - Removed NbtCompound.ToArray and ToArray.ToNameArray methods, which are no longer needed with .MET 3.5 (use NbtCompound.Tags.ToArray() and NbtCompound.Names.ToArray() instead). 00:32 < Not-003> [fNbt] fragmer c3fa5c2 - Cleaned up and updated NbtCompound unit tests. 00:32 < Not-003> [fNbt] fragmer 8f20ecb - Improved documentation and organization of unit tests. 00:32 < Not-003> [fNbt] fragmer bbc2dbb - Added comprehensive unit tests for NbtWriter. 01:41 < mrapple> hey, who usually updates burger? 01:42 < mrapple> (b.wiki.vg that is) 01:42 < mrapple> i generated some local copies for myself, but i don't know how to update that site 01:43 <+sadimusi> I do, but burger's currently pretty broken 01:44 < mrapple> the packets work! hehe 01:44 <+sadimusi> wait for the next snapshot and they won't 01:44 < dx> \o/ 01:44 < mrapple> i know, that's why i'm trying to figure this out now 01:45 <+sadimusi> there's a lot being refactored right now and I'm waiting for those updates before touching burger 01:45 < mrapple> so then burger can be updated when the new snapshot drops 01:45 < mrapple> fair enough, i'll probably just have to hack something together for 13w41 when it drops 01:45 <+sadimusi> you'll have to rewrite your entire protocol parser anyway 01:46 < mrapple> i know ;( 01:46 < mrapple> bungeecord uses netty so that part will be easy, but hacking a protocol update for 13w41 will not be 01:46 < mrapple> (on the MC side, at least) 01:47 <+sadimusi> bungee will also need some additional logic 01:47 <+sadimusi> like keeping track of protocol state 01:47 < mrapple> protocol state? 01:48 <+sadimusi> afaik there are currently three phases: handshake, login and playing 01:48 < mrapple> that sounds correct 01:48 <+sadimusi> each phase has two distinct protocols, one for each direction 01:49 <+sadimusi> so you have to keep track what state a connection is in 01:49 < mrapple> sounds like i've got a lot of work ahead of me 01:50 <+sadimusi> everyone in here has 01:50 <+sadimusi> at least the pinging will be backwards compatible 01:50 < dx> sadimusi: it's confirmed that it will? 01:50 <+sadimusi> [19:21:06] Gr_m: pfft actually coded proper fallback code for old clients talking to the new server 01:51 < dx> sounds good 01:51 <+sadimusi> it's supposed to work with all versions >= 1.3 01:51 < mrapple> fantastic 01:52 < mrapple> i should probably download wireshark now 01:52 < mrapple> i've got a feeling i'm going to need it 01:52 <+sadimusi> you're probably better off with a decompiler 01:52 < mrapple> a combination of both i'm guessing 01:52 < dx> a decompiler and a lot of patience 01:52 < mrapple> i suppose with the netty code not being obfuscated 01:53 <+sadimusi> we don't know if that will be the case 01:53 < mrapple> it will be pretty easy 01:53 <+sadimusi> bc for example is obfuscated 01:54 < mrapple> ? 01:54 <+sadimusi> bouncycastle 01:58 < dx> when is the snapshot going to be released? is it "when it's ready" or is it like every other snapshot? (thursdays it was, right?) 02:00 < Dinnerbone> When we feel comfortable releasing the new code. 02:00 < dx> cool 02:01 < dx> thanks dinnerbro, wasn't actually expecting you to appear out of nowhere and answer :D 02:09 < mrapple> right, wasn't that a library before the new json launcher system? 02:10 < mrapple> i feel like all new libraries have just been libraries and not actually obfuscated 02:10 < Dinnerbone> mrapple: Just because bungee uses netty doesn't mean that will make any of this easier. Their implementation and ours are vastly different. 02:11 * Dinnerbone just read up 02:11 < mrapple> if we're using the same API, won't it make it a bit easier? ;o 02:12 < mrapple> i'm really excited to see the new networking code 02:13 < mrapple> Dinnerbone: will netty be un-obfuscated? <3 02:13 < mrapple> also not obfuscating the authlib was lovely as well, thank you 02:14 < Dinnerbone> We do not obfuscate any libraries that we use 02:16 < mrapple> hm i thought bc was as sadimusi mentioned, but it appears not 02:17 <+sadimusi> it used to be, maybe that changed 02:17 <+sadimusi> it wasn't a separate library either, it was included in the minecraft jar 02:17 < mrapple> it still is included 02:18 < mrapple> but it appears unobfuscated 02:18 <+sadimusi> that's also nice 02:18 * Dinnerbone waddles off to bed 02:18 <+sadimusi> looks like they just tweaked their proguard config a bit 02:18 <+sadimusi> good night 02:20 < mrapple> night db 06:11 < Grum> 06:05:28 <+sadimusi> [01:52:10] it's supposed to work with all versions >= 1.3 <-- even < 1.3 06:12 < Grum> 06:05:28 <+sadimusi> [01:53:53] bc for example is obfuscated <-- stopped using it 06:14 < dx> rip bc 06:15 < Grum> 06:05:30 <+sadimusi> [02:18:58] looks like they just tweaked their proguard config a bit <-- ages ago, we stopped obfuscating libraries with 1.6 06:15 < Grum> iirc we do not even strip them 06:15 < dx> wait, stopped using the obfuscation for bc, or stopped using bc completely? 06:15 < Grum> in combination with my last line you can draw that conclusion yourself :D 06:16 < dx> dammit 06:16 < Grum> (so completely removed) 06:17 < dx> oh okay thanks, i'm not good at this ``logic'' thing 06:17 < Grum> we use .5mb less libraries now yay >.> 06:17 < Grum> -bouncycastle+netty :p 06:20 < SinZ> nice 07:54 <+Amaranth> Grum: To be fair though most of bouncycastle was getting stripped out and you were shipping nothing 07:54 <+Amaranth> Before you stopped doing that 07:55 <+Amaranth> There was like 1 file with actual code in it and the rest was like half a dozen tiny interfaces and wrappers 08:56 < Grum> Amaranth: yeah, but its saner to not pillage libs 08:58 < Grum> iirc for the server we ship intact shaded libs now 15:16 < barneygale> Dinnerbone: will the GS4 query listener be getting some netty lovin'? 15:51 < Dinnerbone> md_5: You here? Having a ping issue with some servers, the only thing in common is bungee. 15:51 < Dinnerbone> barneygale: Maybe not right now but it will have (so much to do still) 15:52 < barneygale> No problem, just wondering 15:54 < barneygale> I think bungee+spigot can be configured to send a Plugin Message with the client's real IP address 15:54 < barneygale> Not sure if that's useful information :P 16:01 < Dinnerbone> We figured it out. Bungee doesn't support the 1.6 style pinging 16:02 < Dinnerbone> And they don't have proper error handling on it, so they keep reading the extra data as more packets (I think) 16:12 < Jckf_> What are the effects of this? 16:13 <+sadimusi> Dinnerbone: what exactly are you sending? I think I'm using the 1.6 style ping and it work well on all server versions http://d.pr/n/2INT 16:13 < Dinnerbone> I compared my output to that of 1.6.4 and it's 100% identical save for the fact that 1.6.4 split each byte into its own frame 16:14 < Dinnerbone> So it must be an issue there 16:14 < Dinnerbone> It works on any server except bungee. One server with modified pinging in bungee works 16:15 <+sadimusi> with 1.6 style pinging you mean the version with the plugin message? (0xfe01fa...) 16:16 < Dinnerbone> Yes 16:16 < Dinnerbone> I can get the full dump, moment 16:18 < Dinnerbone> FE 01 FA 00 0B 00 4D 00 43 00 7C 00 50 00 69 00 6E 00 67 00 48 00 6F 00 73 00 74 00 23 4E 00 0E 00 6D 00 63 00 2E 00 68 00 79 00 70 00 69 00 78 00 65 00 6C 00 2E 00 6E 00 65 00 74 00 00 63 DD 16:18 < Dinnerbone> That's to mc.hypixel.net 16:18 < Dinnerbone> It's 100% identical payload as in 1.6.4 16:19 < Dinnerbone> But buffered up and sent together 16:19 <+sadimusi> and does it work with hypixel? 16:19 < Dinnerbone> 1.6.4 makes the request and receives data successfully, my 1.7 code does not 16:20 < Dinnerbone> I think it's hitting some race condition in bungee or they're not expecting all the data at once or something; but it's perfectly valid data and they should be supporting this 16:21 < Dinnerbone> Sending just: FE 01 works 16:21 <+sadimusi> I send all the data at once as well and it works fine with hypixel 16:21 <+sadimusi> http://minecraftservers.org/server/92447 16:21 < Dinnerbone> So you send it all in one frame? 16:22 <+sadimusi> I create a string (=bytearray) with the complete payload and then send that 16:22 <+sadimusi> so I assume it's a single frame 16:23 < eddyb> it might not be, depending on your network framework 16:24 <+sadimusi> I just really don't expect bungee to act up when getting everything in one frame 16:24 <+sadimusi> but maybe you're right 16:25 < Grum> sadimusi: you do not run that site right? 16:25 <+sadimusi> I do 16:25 <+ammar2> he does :D 16:25 < Dinnerbone> It works with any other server, including the hive which use bungee but custom ping handling 16:25 < Grum> make sure you leave a bag of cash on our doorstep whenever you get outside of the house; ktxbye 16:25 <+sadimusi> Grum: I run it, but don't own it 16:26 < Grum> who owns it? 16:26 <+sadimusi> act4 16:26 <+sadimusi> he is in here sometimes 16:26 <+ammar2> Dinnerbone: so it works fine on hivemc who use bungee but not on hypixel? 16:26 < Dinnerbone> Yes 16:26 <+ammar2> perhaps hypixel is using an outdated bungee build 16:26 < Dinnerbone> Nor octc 16:27 < Grum> sadimusi: meh now i cannot properly rage 16:27 <+ammar2> oh then its probably broken on the latest build then, I'll check it out 16:27 < eddyb> Grum: what's wrong? 16:27 <+ammar2> Dinnerbone: could you grab the latest bungee off ci.md-5.net and see if it works on there? 16:27 < Grum> eddyb: besides illegal activities and squeezing money from minecraft-users, nothing 16:28 < Grum> ammar2: quite sure its more work than just 'running the jar' to setup? ;D 16:28 <+sadimusi> Grum: what about it do you feel is illegal? 16:28 < eddyb> Grum: does it have ads? 16:28 < Dinnerbone> Does it run out of the box/will it take me more than 5 seconds? 16:28 <+ammar2> Grum: nope, just run the jar 16:28 < Grum> sadimusi: running a commercial site with minecraft in the name :) 16:28 <+ammar2> and change the port in the config I guess 16:28 <+ammar2> it defaults to 25577 or something 16:28 < Dinnerbone> Ok let's see 16:33 < Dinnerbone> Ok! So it seems that latest bungee almost works 16:33 < Dinnerbone> But we hit throttle 16:34 < Dinnerbone> 1.7 sends the new ping and fallbacks to an old ping if they don't reply 16:34 < Dinnerbone> Bungee flat out ignores the second one by the looks of it 16:34 < Dinnerbone> But the ping handling works if I skip straight to that 16:35 <+ammar2> Dinnerbone: right, it just doesn't accept the connection. The default value of the throttle is 4 seconds btw 16:35 < Dinnerbone> Okay 16:36 < Dinnerbone> So whilst it seems that octo and hypixel are running an old bungee, this still won't work because of that :D 16:36 < Dinnerbone> octc* 16:37 <+ammar2> Dinnerbone: instead of falling back to the old ping, why not just say the server is <1.6.4 and show an outdated thingy...it'll be about the same experience for the end user right? 16:37 < Dinnerbone> Except that we don't know that the server is actually up... 16:37 < Dinnerbone> Or exists 16:38 < Grum> yeah that is rather stupid to say hehehe 16:38 <+ammar2> accepts tcp connection => up, replies to new ping => joinable 16:38 < Grum> we could install magic:ball:0xFF from maven 16:38 < Grum> ammar2: poor webservers responding as 'out of date server' 16:38 < Dinnerbone> ^ :SD 16:38 < Dinnerbone> :D 16:39 <+ammar2> lawd 16:39 <+ammar2> well umm 16:39 <+sadimusi> why not just send the old ping? I thought the new server responds to it 16:39 < Grum> it working for vanilla 16:39 < Grum> sadimusi: fuck you ;) 16:39 <+sadimusi> :D 16:39 < Grum> on that note i'm going to add a 30 second delay befor eit answers 16:40 < Grum> oh sorry 16:40 < Grum> 299second delay 16:40 < Grum> right upto the normal TCP timeout 16:40 <+sadimusi> :P 16:41 <+ammar2> Grum: nah, send every single byte of the string with a 299sec delay in between 16:41 <+ammar2> make the pinger work for it 16:41 < Grum> too fast 16:41 < Grum> we'll mail it 16:41 < Grum> via 100 relays that all hold the mail for 7 days 16:41 < eddyb> via carrier pigeons 16:42 < Jckf> Someone proposed a carrier pidgeon layer at my work, and some interns actually implemented it 16:42 < Jckf> Not even kidding 16:43 < Grum> they just googled the RFC? 16:43 < Grum> http://www.ietf.org/rfc/rfc1149.txt 16:44 < eddyb> http://tools.ietf.org/html/rfc2549 16:44 < Jckf> There we go :) We're an ISP, so we have to be versatile 16:44 < eddyb> ahahaha 16:45 < eddyb> lol this is recent: http://tools.ietf.org/html/rfc6214 16:45 < Jckf> The guys in Sweden might have heard of us. We do a lot of stuff in coop with SUNET 16:46 < Grum> sunet, that is old :P 16:46 < Jckf> We're UNINETT =) 16:46 < Grum> DOUBLET 16:47 < Jckf> And together with Finland and Denmark, we form NORDUNET 16:47 < eddyb> NORDNET sounds pretty good, actually 16:47 < Jckf> The group owns nordu.net, which is the world's oldest domain name 16:48 < Jckf> Yay for us =P 16:49 < eddyb> 100Gbps o_O. and I was proud to have 100Mbps (it's still better than what residential internet in some western countries) 16:54 <+sadimusi> dammit, just got rickroll'd by my design studio >.< http://d.pr/i/6SXK 20:16 < mrapple> Dinnerbone: is the issue we're running an outdated bungee or does something in the current bungee need to change? 20:17 < mrapple> or is this the fix https://github.com/SpigotMC/BungeeCord/commit/6c14f401082bf837d4b2a3500c4ec07fe0ab8f4f 21:16 < Dinnerbone> mrapple: Both I think 22:18 <+md_5> md_5: You here? Having a ping issue with some servers, the only thing in common is bungee. 22:18 <+md_5> Dinnerbone hi! 22:21 < Dinnerbone> Hi md_5. So we concluded that it likely works in latest bungee except for the rate limiting that you have 22:22 <+md_5> Dinnerbone so you are sending dual ping packets 22:22 < Dinnerbone> Yes 22:22 <+md_5> thats sad :( 22:22 < Dinnerbone> There is absolutely no way to not do that 22:22 <+md_5> okey I'll just remove the rate limit 22:22 < Dinnerbone> We will send 1 packet of the new format, and then if it fails we will send legacy 22:22 <+md_5> its from when a guy threatened to botnet a tonne of servers 22:23 <+md_5> by just spamming thousands of connects from a small set of ips 22:23 < Dinnerbone> But at that point the legacy connection fails because of rate limit 22:23 < Dinnerbone> :D 22:23 <+md_5> by rate limiting each IP we solve that issue 22:23 <+md_5> however it does leave it open to flooding :( I guess I'll need to do something like irc +j 4 connects in 4 seconds or something 22:25 <+md_5> [BungeeCord] md-5 pushed 1 new commit to master: http://git.io/-g8uMQ 22:25 <+md_5> BungeeCord/master 220a95a md_5: We cannot throttle like this if we want 1.7 compat, lets disable it until we work on a more compatible one. 22:26 < Dinnerbone> Well ideally you'll have 1.7 pinging out of the box soon anyhows 22:26 <+md_5> Dinnerbone also did you test straight craftbukkit servers? 22:26 < Dinnerbone> So this won't be an issue for long 22:26 <+md_5> because they still have an identical throttle 22:26 < Dinnerbone> I don't think so, had none on my list 22:26 < Dinnerbone> But isn't theirs based on vanillas? 22:26 <+md_5> vanilla removed it 22:26 <+md_5> craftbukkit kept it 22:27 < Dinnerbone> I see 22:27 <+md_5> it really should be removed entirely 22:27 <+md_5> main reason bungee has it is because people demanded it 22:27 <+md_5> "craftbukkit has it, bungee needs to as well" 22:27 * md_5 shrug, they can deal with that 22:28 < Dinnerbone> :D 22:28 <+md_5> I'll get 1.7 pinging in when the snapshot is out 22:28 < Dinnerbone> I think you'll like 1.7s ping 22:28 <+md_5> the json is nice because you can put arbitrary data in the response 22:29 <+md_5> still dont like the idea of different packets based on state though 22:29 < Dinnerbone> In 1.7 connections have a defined protocol in place; the packets you can send and the way you send them is based on your current protocol. We have: status, login, play right now. In future we may have chat-only connections etc 22:29 < Dinnerbone> It's the best way when you think about the different states we keep having to imply 22:30 < SinZ> ooh, a chat-only connection 22:30 < Dinnerbone> Right now you connect to a server and it prepares to log you in but oh wait you're actually just pinging it nevermind let's handle that 22:30 < Dinnerbone> Or whilst you're logging in you could send any other packet you want and it's okay 22:30 <+md_5> Grum explained it retardedly 22:31 < Dinnerbone> How did he explain it? 22:31 < Dinnerbone> Or rather what do you think it is going to be, which would be bad? 22:32 <+md_5> "lets write 0x00 as the packet ID and then give no other indication on what data is contained aside from the state variables both server and client have kept in sync". If thats the case it makes it impossible to read a single arbitrary packet outside of a connection 22:33 < Dinnerbone> You will need to know the state of the connection to understand what an arbitrary 0x00 packet ID meant 22:34 <+md_5> thats stupid 22:34 < Dinnerbone> There is no way around this; but in addition, you'd also need to have been keeping up to see where that packet boundary was (which is admitantly easier now) 22:34 < Dinnerbone> It's not 22:34 <+md_5> because it means you cannot read a stored packet 22:34 < Dinnerbone> The protocol changes right now at two points 22:34 <+sadimusi> of course there is a way: don't reuse packet IDs 22:34 < Dinnerbone> sadimusi: No. 22:34 <+md_5> you have to know what state the stored packet is in 22:34 <+md_5> having {0x00, 0x01} as the packet ID would be the logical alternative 22:34 < Dinnerbone> The protocol changes right now at two points. On connection the client requests it, and after logging in you change to play 22:35 <+md_5> so, make each packet have {protocol id, packet id} 22:35 <+md_5> much more logical 22:35 <+md_5> otherwise you have to guess the protocol, or guess the packet id based on state 22:35 < Dinnerbone> It really isn't. You're sending extra data that both parties already know, except now you need to validate that you suddenly didn't change without realizing it 22:36 <+md_5> still breaks dissecting an individual stored packet 22:37 < Dinnerbone> Inspecting arbitrary packets to know what they mean without any knowledge of the state of the connection is not something we even care to support. You need to know context, in anything. What if I sent a "entity 5 moved to 0,0,0" - what is entity 5? Should we say "entity 5, type creeper, moved to 0,0,0"? 22:37 < Dinnerbone> The answer is no. You should know context. 22:37 <+md_5> fair 22:38 < Dinnerbone> But you're really not going to get an arbitrary packet from someone and be asked to explain what it is without any context. I mean that could be a fun game but it's kinda silly. 22:38 < Dinnerbone> "Hey I received this packet what does it mean?" "Well uh, anything. Did it even come from minecraft? It looks like a HTTP request." 22:39 < Dinnerbone> "Hey I received this packet whilst logging in what does it mean?" Okay easy let's look up the ID 22:48 < ajf> Remind me, does Minecraft use legacy OpenGL, (glBegin etc.)? --- Day changed jeu. oct. 10 2013 00:37 < benbaptist> Wait, is the entire protocol being moved to JSON or something? 00:38 < mrapple> no no no 00:38 < mrapple> just the server ping 00:38 < benbaptist> Oh, okay 00:38 < benbaptist> the MOTD/polling thing? 00:38 < mrapple> yes 00:38 < benbaptist> Ah, that's awesome. Its current form is quite odd. 00:38 < mrapple> indeed 00:39 < benbaptist> also, I like ajf's question earlier, does Minecraft use the glBegin stuff? 00:39 < mrapple> you could decompile the client and grep for it 00:39 < benbaptist> Does it even use GLSL, or just functions? 00:39 < mrapple> i think they said they're dropping support for older versions of OpenGL 00:39 < mrapple> so i'd guess not 00:39 < benbaptist> Ah, yeah 00:40 < mrapple> i just really want the new snapshot to come out so i can start messing with it <3 00:41 < benbaptist> Also, I forgot where I heard this, but does the new protocol have a length defining the entire fourthcoming packet's length now? 00:42 < benbaptist> I just recall hearing something about this at one point. 00:42 < Dinnerbone> Packets will be: [VarInt LEN] [VarInt ID] [Payload] 00:42 < benbaptist> Ah, that's awesome. That'll make life so much easier. 00:42 < benbaptist> IDs will now be integers? 00:43 < Dinnerbone> On the wire? Or internally? 00:43 < benbaptist> on the wire 00:43 < Dinnerbone> Var int 00:43 < Dinnerbone> Could be 1 byte could be 3 00:44 < benbaptist> Oh yeah 04:19 < benbaptist> Can minecraft do anything other than pixel shaders right now? 04:33 < dexter0> only post-processing shaders atm, apparently 06:19 < Grum> <+md_5> [22:34:07] thats stupid <-- no what is stupid is that we can send packets at ant given time that have NOTHING to do with what we are doing right now 06:19 < Grum> and that period is over 06:39 < Grum> I mean, before we kinda had to do this state-tracking implicit in the code, you cannot send 'these packets while you are ingame' (the auth/key/info related ones) 06:40 < Grum> we just took this one step further, and we simply forget about the existence of those packets at a certain time 06:40 < Grum> and then we might as well reset the ids, for us it matters little 06:40 < Grum> and it keeps the protocol small and gapless 12:01 < Jckf> Grum: So basically, you have a pre-auth protocol, and a post-auth protocol? 12:12 < SinZ> We mostly handle it like that anyway 12:48 < barneygale> Jckf: iirc server list ping is its own protocol too 12:49 < barneygale> and each of those is split into two protocols, for each direction 12:50 < barneygale> meaning (I assume) that packets may differ a lot more between directions 13:27 < Grum> Jckf: yes 16:41 < Dinnerbone> Snapshot is out, fyi. Enjoy. 16:41 <+AndrewPH> make me >:( 16:44 * Dinnerbone forces AndrewPH to smile 16:44 * Grum stabs AndrewPH with the snapshot 16:44 <+AndrewPH> nnnnnnoddhddghsdgsgb :) 16:45 * Grum nods to Dinnerbone. He's enjoying himself now! 16:45 < Grum> job well done! 16:45 < Dinnerbone> :D 16:48 < AlphaBlend> Dinnerbone, grum: You both are so kawaii. 17:00 < iBotPeaches> sadimusi loves new snapshots, means burger work :p 17:00 <+sadimusi> I won't have time to work on that for at least 3 days 17:32 < TkTech> sadimusi: Lies, you don't need to work or live. 17:39 * mbaxter fetches rope to tie him down. 18:39 < Drainedsoul> there really needs to be a way for the server to tell the client to render clouds higher 18:44 < frostyfrog> And a configuration option for how high they are, if that's implemented. 18:55 < barneygale> New snapshot is crashing on the white "mojang" screen 19:01 < iBotPeaches> barneygale: didn't here. playing now 19:02 < barneygale> Yeah, something up with my PC 19:02 < barneygale> I just cleared .minecraft and tried again, still white screening 19:03 < dx> just check the stack trace, it will surely have useful debugging information 19:04 < barneygale> No stack trace. It hangs after "OpenAL initialized" 19:07 < dx> >Finished downloading /home/dx/.minecraft/libraries/io/netty/netty-all/4.0.9.Final/netty-all-4.0.9.Final.jar 19:07 < dx> woo 19:11 < dx> what am i supposed to do with the snapshot now? 19:12 < barneygale> I'm going to have a look in wireshark for starters 19:13 < pdelvo> why do the cool snapshots always come up when I have no time at all :/ 19:13 < dx> i'm staring at the server list right now 19:13 < barneygale> damn this issue 19:13 < barneygale> I think I'm going to try rebooting :/ 19:13 < dx> seems to be as reliable as it was before http://dump.dequis.org/sRxAL.png 19:20 < barneygale> bah, yeah, what is going on. Everything up to 1.6.4 works fine, but 13w38,39,41 all freeze the moment the main menu should show up. 19:21 < pdelvo> works fine for my. what OS, gpu are you using? Are your drivers up to date? 19:27 < barneygale> 64-bit linux mint, integrated graphics (laptop) 19:27 < barneygale> one mo I'll get specifics 19:28 < dx> barneygale: glxinfo | grep -i "OpenGL version" 19:28 < dx> (..that -i is pretty pointless) 19:28 < barneygale> dx: OpenGL version string: 3.0 Mesa 9.0.3 19:29 < pdelvo> hm 3.0 should work 19:29 < barneygale> I'll go check the changelog for 13w38 19:29 < dx> there are other 1.7 snapshots before 13w38 19:29 < dx> it got a bit messy with the 1.6.4 release 19:30 < barneygale> 37 works for me 19:30 < pdelvo> I think it stops working when they increased the required opengl version 19:30 < barneygale> but surely it shouldn't just hang, right? 19:31 < barneygale> 36 works too. Guessing it's the new OpenGL stuff, hm 19:33 < Drainedsoul> where's notifico at? 19:38 <+ammar2> #notifico 19:39 < pdelvo> why is the fxaa shader in minecraft so cpu intensive? I get about half the fps and the gpu load goes down from 50% to 35% 19:53 < Dinnerbone> barneygale: Linux? Running pulseaudio? 19:55 < dx> Dinnerbone: 14:27 < barneygale> 64-bit linux mint, integrated graphics (laptop) 19:55 < dx> not sure about pulseaudio. 19:55 < Dinnerbone> Right, that's the important part :p 19:55 < Dinnerbone> https://mojang.atlassian.net/browse/MC-31714 19:55 < Dinnerbone> For some reason pulseaudio can take 7+ minutes to initialize 19:55 < dx> fun 19:58 < dx> >Barney Gale added a comment - 6 minutes ago 19:59 < dx> apparently he found the ticket one minute before Dinnerbone suggested it could be that 19:59 < Dinnerbone> Aha 20:54 < barneygale> Yeah, I found that 20:55 < barneygale> Someone suggest pulse because it does That Sort Of Thing (TM), which I can verify 20:55 < Dinnerbone> Not too sure why it only happens in some snapshots 20:55 < barneygale> however in this case I'm not sure what's wrong. Normally if pulse is the trouble, it's already crashed, whereas pulse is still working fine for me 20:55 < Dinnerbone> But nobody here uses it to fool around and figure it out 20:59 < barneygale> I'll check the pulse log 20:59 < barneygale> It seems unlikely to me, but better to eliminate possibilities I suppose :) 21:07 < mrapple> Thinkofdeath: nice work on the pre-release protocol page, want some assistance? 21:08 < Thinkofdeath> mrapple: Sure, I'm justing finishing the Play section now 21:08 < Thinkofdeath> mrapple: If you could work out the ? packets for me it would help 21:08 < mrapple> sure i'll investigate 21:09 < barneygale> here's a dupe I think: https://mojang.atlassian.net/browse/MC-32251 21:14 < barneygale> Right, so if I misconfigure OpenAL (tried to use OSS) and make it switch to "no sound", it prints an error, but then still hangs in the same place 21:19 < mrapple> so it would appear there are no more protocol versions 21:24 < mrapple> Thinkofdeath: in eg.java, what are 0-67 vs 0-23? 21:24 < Thinkofdeath> b(id, class) = Clientbound a(id, class) = Serverbound 21:25 < mrapple> aha 21:25 < mrapple> what about packets that go both ways? 21:25 < Thinkofdeath> Put in both I think 21:26 < mrapple> i don't see any dupes? 21:27 < Thinkofdeath> Maybe different class but same code? 21:34 <+Amaranth> Dinnerbone: What changed? lwjgl version? 21:34 < Dinnerbone> Nope 21:35 < Dinnerbone> Lots of things changes but nothing relevant to that which I can think of 21:36 <+Amaranth> Dinnerbone: Time to bisect? 21:38 < Dinnerbone> When I get time to set up a linux system that can repro the bug, sure! 21:44 < TkTech> What's used for sound? paulscode + lwjgl OpenAL? 21:50 < barneygale> Right, I set OpenAL to use the null sound driver and problem persists. I also note that when I launch 1.6.4 (successfully) the last line of console output I get is the same (OpenAL initialized) 21:50 < barneygale> so I think that's a red herring.. 21:54 < Grum> < mrapple> [21:25:09] what about packets that go both ways? <-- those do not exist anymore 22:04 < barneygale> has the auth process been changed a lot? or simply moved over to the new protocol? 22:07 < mrapple> Grum: good to know, thanks 22:08 < Grum> mrapple: we have identical packets, they are different classes for either server or client bound 22:14 < iBotPeaches> damn Thinkofdeath you've been busy. nice work 22:15 < Thinkofdeath> iBotPeaches: Thanks, most packets haven't changed so its just a job of finding their new ids 22:16 < Grum> < barneygale> [19:31:26] 36 works too. Guessing it's the new OpenGL stuff, hm <-- you videocard drivers suck, its lying and then dying 22:17 < Grum> Thinkofdeath: writeString actually writes utf8 bytes and prefixes with a varint 22:17 < Thinkofdeath> Grum: I'll add that, thanks 22:18 < Grum> todo anything with the protocol you are going to have to be able to read varints 22:18 < barneygale> I might try a different kernel version 22:18 < mrapple> Grum: sounds like a bit of code duplication, but probably a good idea 22:18 < iBotPeaches> 3.12-rc4 barneygale :p 22:19 < Grum> mrapple: its duplication now but who cares for that 22:19 < Grum> this way we can at least change them without having to worry 22:20 < Grum> btw if someone has the same id as before its pure luck 22:20 < Grum> *something 22:20 < Grum> we just collapsed the numbering to start from 0 for all things 22:20 < Thinkofdeath> Only two packets have the same id as before 22:20 < Thinkofdeath> And its the first two 22:20 < mrapple> heh 22:21 < Grum> Thinkofdeath: hehe where was your document? :D 22:21 < mrapple> Thinkofdeath: how did you figure out a = clientbound and b = serverbound? the enum in eg, eh, and ei don't implement a() or b() 22:22 < Grum> eg == broken when you use JAD 22:22 < Grum> and you kinad need that file *badly* 22:22 < mrapple> hm 22:22 < Grum> it contains *all* packets, all ids for all different 'protocols' 22:22 < iBotPeaches> dump it for us :p 22:22 < mrapple> i used fernflower 22:23 < mrapple> is it broken with fernflower and jad? 22:23 < Grum> no idea 22:23 < Thinkofdeath> mrapple: Yep 22:23 < mrapple> is retroguard my other option I guess? 22:23 < Grum> pastie what you see? :D 22:23 < mrapple> this is with fernflower http://www.sourcedrop.net/EaH70cc33c8f7 22:24 < Grum> taht is just one set of packets 22:24 < Thinkofdeath> It extends https://gist.github.com/thinkofdeath/f6480d1e6ad7be31aa22 22:24 < Grum> there are 3 more 22:24 < Drainedsoul> the varint before a UTF-8 string is the strings length in what? 22:24 < Thinkofdeath> ef, eg, eh, ei 22:24 < Grum> ah no i see 22:24 < Thinkofdeath> Drainedsoul: All packets 22:24 < Grum> yeah 22:24 < Grum> it made subclasses 22:24 < Grum> from the enum entries 22:24 < Grum> because we did: FOO(int) {{ .... }} 22:25 < Drainedsoul> Thinkofdeath: I meant what is it measured in? 22:25 < Thinkofdeath> Drainedsoul: bytes 22:25 < Drainedsoul> that's a relief. 22:26 < mrapple> what are my other options for decompilation? 22:26 < Grum> mrapple: nothing tbh; but it seems Thinkofdeath has figured it out 22:27 < mrapple> ah 22:27 < mrapple> ee has helpful information 22:27 < Grum> ee should have 4 entries 22:27 < Grum> the second one being eg 22:27 < Thinkofdeath> Jad loses those 22:27 < Grum> and b is indeed 'serverbound' 22:28 <+sadimusi> mrapple: did jd-gui come up yet? 22:28 < TkTech> sadimusi: eg is piss easy to parse now. 22:28 < TkTech> (Also jd-gui does eg just fine) 22:28 <+sadimusi> yay 22:29 < Grum> TkTech: just looks weird 22:29 < mrapple> oo i forgot about jd-gui 22:29 < Grum> but that is javas magic around enums 22:29 < TkTech> Yeah, but that doesn't matter for sadimusi. The bytecode is clean. 22:29 < Grum> there is a new one btw; procyon 22:30 < Grum> https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler 22:30 < mrapple> jd-gui doesn't do eg correctly for me TkTech 22:31 < mrapple> this is jd-gui for eg http://www.sourcedrop.net/qdl70e80274f8 22:31 < TkTech> That looks correct, what more do you need? 22:32 < TkTech> That's the packets and their IDs in both directions 22:32 < mrapple> it's the same thing i got with fernflower 22:32 < mrapple> it's still technically not "correct" 22:32 < mrapple> i'm testing out procyon to see what it does 22:32 < Flemmard> a decompiler wont give you 'working' code (or not every time) 22:33 < Grum> http://www.benf.org/other/cfr/how-are-enums-implemented.html <-- enum-info ;) 22:42 < Grum> brr string switches http://www.benf.org/other/cfr/java7switchonstring.html 22:45 < Thinkofdeath> Disconnect seems to use JSON formatting now 22:47 < mrapple> i'm decompiling the client as well to figure out how the handshake packet 0 is used 23:03 < TkTech> https://gist.github.com/TkTech/7102a88b03deba305807 23:03 < TkTech> 5-minute toy 23:04 < dx> nice! 23:06 < mrapple> anyone know what's up with all these interfaces that extend eq? 23:13 < TkTech> mrapple: Not that many classes, https://gist.github.com/TkTech/ef35a41003757d541add 23:13 < mrapple> seven makes sense 23:13 < mrapple> one client bound one server bound for each state 23:18 < TkTech> All the SourceFile attributes have been changed to "SourceFile" :| 23:20 * TkTech hasn't touched jawa in so long he has to use the manual ;| 23:20 < TkTech> In hindsight, glad I wrote docs. 23:28 < Thinkofdeath> Ok every packet should be on the wiki now. 23:29 < Thinkofdeath> Some still need documenting 23:30 < balrog> Grum: how does Procyon compare to ff? 23:30 < Thinkofdeath> (Side note: The "Player Digging" packet seems to be missing) 23:36 <+Amaranth> Grum: I think procyon is used by the dev.bukkit.org people 23:56 < Drainedsoul> so the packet internals weren't significantly changed? --- Day changed ven. oct. 11 2013 00:04 < Thinkofdeath> Drainedsoul: Nope 00:05 < Thinkofdeath> IDs changed and some packets changed a little 00:05 < Drainedsoul> that's a shame 00:05 < Drainedsoul> I was hoping 0x33 would get an internal format that's a little less insane :( 00:09 <+Amaranth> Drainedsoul: What do you think a better 0x33 would look like? 00:10 <+Amaranth> The boolean seems superfluous but otherwise it's alright 00:11 < Drainedsoul> I think it should support columns higher than 256, but there's a pipe dream. 00:11 < Drainedsoul> most importantly I think that it should have just an array of blocks, rather than an array of IDs, followed by an array of... 00:11 <+Amaranth> Compresses better this way 00:17 < Drainedsoul> just seems like a shame to have to rip it apart to put it in memory :( 00:27 < mrapple> Thinkofdeath: i improved some of the question mark packets under play, moving to status/login now 00:27 <+Amaranth> Drainedsoul: For something that large spending a little extra CPU time to get better compression is worth it 00:30 < Cubixmeister> mrapple: is new protocol completely based on protocolbuffers or just uses varints? 00:30 < mrapple> it just uses varints 00:30 < Cubixmeister> ok, thanks 00:31 < Drainedsoul> are the varints being converted back to the same types as before? I.e. should we be enforcing the same numerical limits? 01:02 <+Amaranth> I thought it was only use varints for packet ids and lengths 01:02 <+Amaranth> packet lengths, I mean 01:05 < mrapple> ids and lengths 01:14 < Drainedsoul> well for lengths it's important to know whether they have an upper limit 01:25 < Thinkofdeath> https://gist.github.com/thinkofdeath/6927216 Haven't worked out how to send it yet but that is a job for tomorrow now 01:30 < barneygale> oh my lord, server list ping returns a player list? 01:31 < barneygale> that's fantastic news :D 01:32 < dividuum> redstonehelper, the server download link in your reddit posting is pointing to a non-existing url 01:33 < redstonehelper> dividuum: I'll get on that in a minute, thanks 01:34 < mrapple> barneygale: only a sample, not all the data i'd presume 01:34 < mrapple> though i didn't look too deep in the code 01:34 < mrapple> time to start updating bungee ;) 01:35 < barneygale> Argh wish I could run the snapshot 01:36 < redstonehelper> dividuum: thanks, fixed 02:12 < dividuum> random notes while reading the code using jd-gui: ej contains the varint encoder/decoder. 02:22 < dividuum> the tcp connection is using TOS (low delay & throughput) :-) 02:24 < dividuum> ml handles legacy queries (if first byte is 0xFE) 02:28 < dividuum> mp sets up the decoder/encoder pipeline. it's always splitter (read var int size header) -> optional decryption (see ek, method a) -> decoder (parsed the packet) 02:29 < dividuum> looks like eh is related to the handshake (0x01 -> json server query response, 0x00 -> some empty packet) 02:36 < dividuum> in there, b(...) are clientbound packets (that is packets received from the server), while a are serverbound (received from client) (see ee.class) 02:46 < dividuum> looks like the packet id is a varint too (eo.class, the localej.a() call uses the varint decoder) 02:47 < umby24> http://wiki.vg/Pre-release_protocol#Packet_format 02:47 < dividuum> hey. at least i was correct. :-) 02:47 < dividuum> thanks for the link. missed that somehow 02:49 < umby24> no problem, and indeed you were :P 03:27 <+clonejo> I want to do a protocol implementation in Rust, but Rust is failing me sofar :-( 03:35 < TkTech> Maybe it's a bit rusty? 03:36 < TkTech> badum tish. 03:39 <+clonejo> TkTech: https://gist.github.com/clonejo/6928384 03:42 <+clonejo> I shall throw that at #rust... 03:44 < dx> i need a website like "is-rust-mature-enough-for-production-yet.com", with huge text that tells me either YES/MAYBE/NO 03:50 < TkTech> "let mut reader = ~MemReader::new(~[17u8, 1u8, 3u8]) as ~Reader;" 04:09 <+clonejo> TkTech: ? 04:10 <+clonejo> removing the cast doesn't change anything 04:11 <+clonejo> I don't recall why I had it in there 04:15 < TkTech> Just a silent comment on syntax. 04:15 < Drainedsoul> http://i.imgur.com/DnJjgDt.png anyone have any ideas about this? Bottom two layers of all columns I send are like this, everything else is fine. Lines run in the X direction. 04:19 < TkTech> http://imgur.com/a/JLZF8 You should have seen the look on the managers face when we asked for 150 turkeys. 04:20 < TkTech> Drainedsoul: Can you render the rest of the chunk? If you try to put a layer at the very top of a chunk what happens? 04:20 < TkTech> (Off by one?) 04:22 < dx> Drainedsoul: i don't have any constructive comments about it, but it looks really nice. 04:25 < Drainedsoul> http://i.imgur.com/FCVVhCW.png layer at the top seems alright 04:26 <+clonejo> fix to my Rust problem: https://gist.github.com/clonejo/6928384#file-example-fixed-rs-L5 04:27 < Drainedsoul> TkTech: Why so many turkeys? 04:28 < Drainedsoul> clonejo: "~MemReader::new(~[17u8, 1u8, 3u8])" what does that even mean 04:29 <+clonejo> ~ is like *, but an unique/owning pointer, there can be only one to that chunk of memory 04:30 <+clonejo> u8 is just a 1 byte integer 04:30 < Drainedsoul> does Rust not allow you to create objects on the stack? 04:30 <+clonejo> it does 04:31 < Drainedsoul> why do you need pointer semantics then 04:32 <+clonejo> the new function takes a pointer 04:33 < Drainedsoul> what does that line do? 04:34 <+clonejo> or are you refering to the first "~"? 04:35 < Drainedsoul> I'm referring to the whole thing 04:36 < dx> yeah, i have no idea what it all means either 04:37 < dx> which makes it look even more fun than it probably is 04:37 <+clonejo> MemReader::new is a class method I pass a vector of bytes to 04:39 < TkTech> Drainedsoul: Work decided this morning to randomly donate turkeys to the ottawa mission for thanksgiving. 04:40 < Drainedsoul> TkTech: You're Canadian? 04:40 < TkTech> That's $1400 of turkeys ($700 by employees then matched by the comp) 04:40 < TkTech> Yar 04:40 < Drainedsoul> Just when I was beginning to feel like the only one 04:40 < TkTech> There are a fair many of us. 04:40 < Drainedsoul> \o/ 04:40 < TkTech> Plenty here in the GTA 04:41 < Drainedsoul> if they'd drawn the border straight I'd be an American :[ 04:41 < TkTech> Thank god for the drunk guy. 04:42 < Drainedsoul> yeah that's how it feels sometimes with borders 04:45 < mrapple> as much of a PITA this new protocol update is 04:45 < mrapple> it's definitley a step in the right direction 04:45 < mrapple> well done db and grm 06:30 < Not-002> [MCPP] RobertLeahy pushed 3 commits to master [+0/-0/±3] http://git.io/kb-BLQ 06:30 < Not-002> [MCPP] RobertLeahy 82f074b - Formatting Fix 06:31 < Not-002> [MCPP] RobertLeahy 89fd9c2 - Compression Fixes 06:31 < Not-002> [MCPP] RobertLeahy 44bb64b - Mod Loader Fix 06:31 < Drainedsoul> oh Notifico's back, cool. 06:36 < Not-002> [MCPP] RobertLeahy pushed 2 commits to master [+0/-0/±2] http://git.io/D6qgFg 06:36 < Not-002> [MCPP] RobertLeahy 182dfa5 - Column Loading/Sending Exception Safety 06:36 < Not-002> [MCPP] RobertLeahy 8ff88fc - Random Number Generator Factories 06:58 < Grum> tx mrapple 10:07 < nyuszika7h> has anyone ever written a Minecraft client in Ruby? 10:07 < nyuszika7h> I've been considering writing one like pyCraft 10:14 < Grum> nyuszika7h: should be simpler than ever now with the latest snapshot :P 10:15 < nyuszika7h> Grum: really? nice 10:15 < nyuszika7h> is there a change list yet? 10:15 < nyuszika7h> for protocol that is 10:15 < dav1d> burger? 10:15 < nyuszika7h> dav1d: yes, a Big Mac please 10:15 < Thinkofdeath> http://wiki.vg/Pre-release_protocol 10:15 < nyuszika7h> 10:16 < dav1d> I am disappointed sadimusi :D 10:16 < nyuszika7h> ah, it's updated for 13w41a? nice, thanks :) 10:16 < nyuszika7h> heh, protocol version 0 10:16 < nyuszika7h> seems legit 10:16 < dav1d> oh dear, I don't wanna update brala^^ 10:17 < Grum> nyuszika7h: dont be silly :P 10:17 < Grum> i just removed another 3 packets =) 10:17 < nyuszika7h> is the version going to be static, or will you use 0, 1, 2 - or 0, -1, -2? :P 10:18 < Grum> 1, 2, 3, 4, 5, infinity 10:18 < Grum> its a varint, so it can grow ;) 10:19 < Grum> and nothing prevent us from making it 128bits :P 10:19 < Grum> should be plenty! 10:19 < Grum> i just deleted 0x08, 0x09, 0x0A 10:19 < Grum> (so all the ids shift ;D) 10:19 < nyuszika7h> Grum: wait, how will you detect 1.6.4 servers with the new protocol version scheme? 10:19 < Grum> nyuszika7h: we dont 10:20 < nyuszika7h> so what will it say for 1.6.4 servers? /me is curious :P 10:20 < Grum> we have some backwards compat magic in the ping-thing which actually doesnt work so well because of throttling :P 10:20 < Grum> how do you mean what will it say? 10:20 < nyuszika7h> will it give a meaningful error or just unable to connect? 10:20 < Grum> like normal: 1.6.4 in red =) 10:20 < Grum> oh 10:20 < Grum> no idea actually 10:20 < Grum> good point :P 10:20 < Grum> hmmm 10:20 < Grum> nah i think we dont support that 10:20 < Grum> you can see it in the list 10:21 < Grum> (dont and wont) 10:21 < nyuszika7h> Grum: I meant how will the list detect it, yes 10:21 < Grum> it uses fallback 10:21 < nyuszika7h> will it detect a packet or so for older versions? 10:21 < nyuszika7h> or some magic? 10:21 < Grum> tries twice 10:21 < Grum> if the first fails 10:21 < Grum> with 'weird error' 10:21 < nyuszika7h> what if you collide with existing protocol versions? same magic? :P 10:22 < nyuszika7h> no idea where you started old protocol versions, so it might be some versions until you get to colliding, or not 10:22 < Grum> that doesnt matter at all 10:22 < Grum> the whole protocol is different 10:22 < Grum> incompatible in every single way 10:22 < Grum> in *theory* you can craft a packet that would work for both i guess 10:22 < nyuszika7h> ah, so same magic works for detecting old versions if the new one doesn't work, right? 10:22 < Grum> but i havent looked at it 10:23 < Grum> i kinda do not want to bother with it =) 10:23 < nyuszika7h> I wouldn't mind if it would just say "old version" or something if detecting it is too much work, Grum, I'm simply curious :P 10:24 < Grum> the serverlist does that