02:05 < ffmdr> and spout doesn't even touch ListElement? 02:05 < ffmdr> https://github.com/Vanilla/Vanilla/blob/master/src/main/java/org/spout/vanilla/protocol/codec/entity/EntityPropertiesCodec.java 02:06 < ffmdr> so the list element is long long double byte...so is spout codec wrong? 02:06 < ffmdr> I guess if they don't read the list the stream if out of sync right? 02:07 < umby24> https://github.com/umby24/Minebot/blob/master/Packets/entProps.cs 02:07 < umby24> I don't exactly do anythign with the data, but it works for actually getting it 02:08 < ffmdr> thanks, it looks like spout shit network stack is wrong again 02:08 < umby24> lolk, np. 02:31 < ffmdr> ok so it looks like that whole listelement was added in 1.6.2 02:40 < umby24> mhm 02:40 < ffmdr> mhm it wasn't here in 1.6.1 03:21 <+AndrewPH> omg the antispam question doesn't work 03:23 <+AndrewPH> oh it's dwarfs not dwarves 14:55 < Foorack> Hello? 14:55 <+pdelvo> hi 14:56 < Foorack> Hi pdelvo.. How many "active" peoples are here? or is it only you and me? 14:56 <+dav1d> 96 people 14:58 < Foorack> and all 96 people are here right now? I mean that they will answer or are they AFK? 14:58 < redstonehelper> they will all answer you 14:58 < redstonehelper> you are very important to us. 14:58 <+dav1d> people say there are now dumb questions, but that's one of these. If you have a question just ask it 14:59 < Foorack> ok :) but that wasent what i mean.. I was just checking if everyone was AFK, but its seem that everyone is here so.. :) 14:59 < redstonehelper> dav1d, let's join other channels and see if the people there are afk 14:59 < redstonehelper> now I'm being mean. 14:59 <+dav1d> redstonehelper: #idlerpg! 14:59 <+dav1d> Foorack: ofc they are 15:00 <+dav1d> people have other things to do and check here and there irc 15:00 < Foorack> ok, sorry.. ;P 15:00 <+pdelvo> why no afk -> ban? :o 15:00 <+dav1d> no worries that is pretty common ... 15:01 < Foorack> but anyway, is there someone here that know how the server is creating the authentication part 15:01 < Foorack> ? 15:01 <+dav1d> yes 15:01 <+dav1d> but what is your question 15:02 < Foorack> im currently trying to create a minecraft server from scratch to learn more java-server.. things.. 15:02 < Foorack> but now I need to send a 0xFD packet 15:03 < Foorack> But I dont know what I should send in the fields: Server id, Public key and Verify token 15:05 < Foorack> any ideas? how would I create the server ID? and what is public key and verify token for something? 15:06 < Foorack> the verify token seems to be 4 random bytes.. but I still dont know what the public key and ID is and how I will create/generate them.. 15:06 <+Fador> server ID and verify token are just random strings you generate I believe.. 15:06 <+dav1d> you saw http://wiki.vg/Protocol_Encryption right? 15:06 < Foorack> Yes, Looking at it= yes...... Understanding it: Kinda (no) 15:06 < Foorack> oh, sorry.. i see now: 15:06 < Foorack> The server ID string is a randomly-generated string of characters with a maximum length of 20 code points 15:07 < Foorack> ok, Now i understand what both verify token is and id is.. 15:07 < Foorack> But the public key? 15:07 < Foorack> is that random generated too? 15:08 <+dav1d> no 15:08 <+dav1d> you generate a private key/public key pair and send the public to the client 15:08 < Foorack> so 2 keys? one public and one private? 15:09 <+dav1d> Foorack: https://en.wikipedia.org/wiki/RSA_(algorithm) 15:09 <+dav1d> there are libraries generating these pairs 15:10 <+dav1d> dunno what you'd use for Java though 15:12 < Foorack> ok, that wikipedia article help a little but i found this in the source code 15:12 < Foorack> KeyPairGenerator localKeyPairGenerator = KeyPairGenerator.getInstance("RSA"); 15:12 < Foorack> localKeyPairGenerator.initialize(1024); 15:12 < Foorack> return localKeyPairGenerator.generateKeyPair(); 15:13 < Foorack> is that how minecraft generates the X key.. if so is that generating public, private or both? 15:13 <+dav1d> well it says "KeyPair" 15:14 < Foorack> and that is? (im not used to encyption in java) 15:14 < Foorack> I also found this that seems to generate the PUBLIC KEy: 15:14 < Foorack> X509EncodedKeySpec localX509EncodedKeySpec = new X509EncodedKeySpec(paramArrayOfByte); 15:14 < Foorack> KeyFactory localKeyFactory = KeyFactory.getInstance("RSA"); 15:14 < Foorack> return localKeyFactory.generatePublic(localX509EncodedKeySpec); 15:14 < Foorack> No. idea what it means :S 15:15 <+dav1d> google it, or copy it 15:15 <+dav1d> I am not familiar with this Java crap 15:15 < Foorack> ok, thanks for help 15:15 <+dav1d> but the names look like what you'd need 15:15 <+dav1d> so if you don't want to understand it, simply copy it 15:15 < Foorack> brb for some min 15:16 < Foorack> ok will "copy" it later ;P 15:16 <+dav1d> Foorack: I think there is also a generatePrivate 15:16 <+dav1d> (according to google) 15:16 <+dav1d> http://docs.oracle.com/javase/6/docs/api/java/security/KeyFactory.html 15:16 <+dav1d> but the factory itself is probably enough 15:44 < Foorack> back.. And i found a solution: 15:44 < Foorack> . 15:44 < Foorack> KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA"); 15:44 < Foorack> kpg.initialize(1024); 15:44 < Foorack> KeyPair kp = kpg.genKeyPair(); 15:44 < Foorack> Key publicKey = kp.getPublic(); 15:44 < Foorack> Key privateKey = kp.getPrivate(); 15:46 < Foorack> . 15:46 < redstonehelper> if you're gonna paste more than one or two lines of code, use something like pastebin please 15:47 < Foorack> So thanks for all help! 15:47 < Foorack> ok, thanks for tip redstonehelper 15:47 < Foorack> ;) 15:47 <+dav1d> Good luck with your project 15:49 < Foorack> thanks, david. have to go. cya all! =D 17:04 < TkTech> Pfft, IRC virgins. 17:04 < Calinou> no u 20:21 <+AndrewPH> md_5: wow it turns out ur actually better than ensirius, who kneww???! 20:23 <+dav1d> why would someone delte these comments -.- 20:24 <+dav1d> I wish github would track comments with git, too :P 20:26 <+ammar2> AndrewPH: the past continous term is rekking 20:26 <+ammar2> not rekting 20:43 <+AndrewPH> rekt -> rektin 20:50 < TkTech> There seems to be so much context missing here. 20:53 <+ammar2> AndrewPH: rekt is the past tense 20:53 <+ammar2> I rekt you. He rekt me 20:53 <+ammar2> rek is the verb itself 20:54 <+AndrewPH> TkTech: some guy claimed his bad code was better than bungee 23:59 < Foorack> hey again --- Day changed ven. août 09 2013 00:00 < Foorack> hallo? 00:00 < Foorack> hello* 00:02 <+dav1d> hi, just ask your question :P 00:07 < Foorack> Hi, im still working on the server.. I think i got the encrypt/decrypt part 00:08 < Foorack> but when im send a KeyRequestPacket with server id it says: 00:08 < Foorack> Java.io.IOExcpetion: Received string length longer than maximum allowed (184 > 20) 00:09 < Foorack> but I have tripple checked.. my serverID IS 20 character long 00:09 <+sadimusi> how are you sending strings? 00:09 < Foorack> using a DataOutputStream and out.writeChars() 00:10 <+sadimusi> and it's prefixed with the length? 00:11 < Foorack> can i write the code, here? its 3 lines 00:12 < Foorack> out.writeByte(Protocol.PACKET_ENCRYPT_KEY_REQUEST); //Protocol.Packet_encrypt__ is the byte for the packet 00:12 < Foorack> out.writeShort(serverID.length() + publicKey.getEncoded().length + 4); 00:12 < Foorack> out.writeChars(serverID); 00:12 <+sadimusi> o.O 00:12 < Foorack> ? 00:12 <+sadimusi> it should jsut be out.writeShort(serverID.length()) 00:12 < Foorack> also, im curiois about the 00:12 < Foorack> sorry 00:12 <+dav1d> why do you add all that stuff to the serverID.length? 00:12 <+sadimusi> the other lengths come afterwards 00:12 < Foorack> pressed enter 00:13 < Foorack> I have to send public key and token too 00:13 <+sadimusi> packets are never prefixed with a length, just some fields are 00:13 < Foorack> but im curiois about the + 4 thing... 00:13 < Foorack> I think it is because im using length identifyer for both arrays 00:13 <+sadimusi> where did you get that from? 00:14 < Foorack> 1 sec.. using pastebin 00:15 < Foorack> http://pastebin.com/SyhLY55x 00:15 < Foorack> thats is supposed to send EncryptKeyRequest packet 00:15 <+sadimusi> out.writeShort(serverID.length()) should fix it 00:15 <+sadimusi> but I really wouldn't define packets like this 00:16 < Foorack> should i remove the publicKey length and the +4 thing? 00:16 <+sadimusi> yes 00:17 < Foorack> I thugth it was ... but im guess i was wrong then 00:17 <+sadimusi> you were 00:17 <+sadimusi> the packet length is never sent 00:18 < Foorack> so the same for my EncryptKeyRESPONSE packet? pastebin it now... 00:18 < Foorack> http://pastebin.com/XrnG2zYt 00:18 < Foorack> should I remove the first writeShort or what? 00:19 <+sadimusi> yes 00:20 <+sadimusi> also, instead of the loops just do out.write(token) 00:21 < Foorack> So a good result would be: http://pastebin.com/101fWhXt ? 00:22 <+sadimusi> yes 00:22 <+sadimusi> I still wouldn't define the whole protocol like this 00:22 <+sadimusi> + though 00:22 < Foorack> why not? 00:23 <+sadimusi> because it gets big, confusing and hard to maintain 00:23 <+sadimusi> plus you have to define every packet twice (read & write) 00:24 <+sadimusi> I still haven't completed my mc4p update, but the protocol definition looks something like this: https://gist.github.com/sadimusi/6025899 00:24 < Foorack> so what do you reccomend? should i do as notch did in his server, define each packet as each class/file 00:24 < Foorack> ? 00:25 <+sadimusi> in java I would probably make an enum with a constructor that takes an id plus a variable number of fields 00:26 <+sadimusi> could look something like this in the end: 00:26 <+sadimusi> enum Packet { 00:26 <+sadimusi> CHAT(0x03, StringField("message")) 00:26 <+sadimusi> } 00:26 <+sadimusi> obviously with more packets and field types 00:27 < Foorack> hmm.. good idea, thanks :) 00:28 <+sadimusi> you can see in the gist that I added some special field types for more complex packets 00:34 < Foorack> sorry, cant see.. I dont understand python 00:34 < Foorack> :( 00:34 <+sadimusi> it's not really about python 00:34 <+sadimusi> I just added a List and Conditional type for some of the more complex packets 00:35 <+sadimusi> plus of course an item stack and a metadata type 00:54 < Foorack> ok.. Now i got the encryptedKeyRequest thing done.. but now when my server asking session.minecraft.net it says: NO 00:55 < Foorack> thats it, just 2 characters.. NO 00:55 < Foorack> no idea why. 00:55 <+sadimusi> what are you sending it exactly? 00:55 < Foorack> sending to the client or mojang servers 00:55 <+sadimusi> mojang 00:55 < Foorack> always forgetting the questionmark... 00:56 < Foorack> "http://session.minecraft.net/game/checkserver.jsp?user=" + username + "&serverId=" + serverID 00:56 <+sadimusi> the serverID is the one you sent to the client earlier? 00:56 < Foorack> yes 00:57 <+sadimusi> yeah, that's not how it works anymore 00:57 <+sadimusi> http://wiki.vg/Protocol_Encryption#Authentication 00:57 <+sadimusi> you have to create a hash from the id, the shared secret and your public key and use that as the server ud 00:57 <+sadimusi> *id 00:58 < Foorack> ok, thanks :) 00:59 <+sadimusi> I think minecraft just uses (new BigInteger(hash)).toString(16) 01:00 <+sadimusi> that's where the odd hexadecimal strings come from 01:06 < Foorack> would this has work? if I use the string thats comes from the function as 'hash' in the attempt to verify at mojang? 01:06 < Foorack> sorry for bad english.. VERY tired :P 01:07 < Foorack> not drunk, but very tired.. but thats another topic.. 01:07 < Foorack> http://pastebin.com/f5AcsAkA 01:09 <+sadimusi> no, that won't work 01:10 < Foorack> why? 01:10 <+sadimusi> look at the examples on the wiki 01:10 < Foorack> yes, Im already doing that 01:11 < Foorack> but Im sure I have made many mistakes 01:11 <+sadimusi> the length is not constant for one 01:11 <+sadimusi> leading zeros are removed 01:12 <+sadimusi> and hashes with the first bit set are treated as negative numbers 01:13 <+sadimusi> like I said, just use (new BigInteger(crypt.digest())).toString(16) 01:14 < Foorack> return new BigInteger(crypt.digest()).toString(16); ?? 01:14 < Foorack> thanks 01:16 < Foorack> thanks * 1000 sadimusi :),, its working now 01:17 <+dav1d> ^ that is python 01:20 < Foorack> Anyone knows what means with Server enables AES/CFB8 stream encryption? 01:21 < Foorack> Should wrap the inputstream and outputstream to another reader/writer or should I encrypt everything I send? 01:22 <+sadimusi> in java I'd just use bc's CipherOutputStream 01:23 <+sadimusi> this might help https://github.com/SimpleServer/SimpleServer/blob/master/src/simpleserver/stream/Encryption.java#L128-L150 01:23 <+sadimusi> as does the rest of the file 01:28 < Foorack> so the outputstream should encrypt everything and the inputstream shoudl decrypt everything?.... In the example it seems that both in and out is only ecrypting and not decrypting.. 01:28 <+sadimusi> the boolean flag in cipher.init specifies the direction 01:29 <+sadimusi> https://github.com/SimpleServer/SimpleServer/blob/master/src/simpleserver/stream/Encryption.java#L130 01:29 < Foorack> oh, yeah i see now .... It both that im tired and the secret key was named sharedKey.. 01:29 < Foorack> thanks for help :) 01:30 <+sadimusi> it's a shared secret, so both terms are correct 01:30 <+sadimusi> (shared might even be correct-er) 01:41 < Foorack> I imported bouncycastle and now I have over 8000 errors.. 01:41 < Foorack> its seems to be missing org.bouncycastle.asn1 package 01:51 < Foorack> nevermind 01:51 < Foorack> thanks for all help, have to go now, cya 04:06 < Seegee> m 04:06 < Seegee> l 04:06 < Seegee> l 04:06 < Seegee> l 16:52 < Foorack> Hey 16:54 < Foorack> hello? 16:54 < Foorack> anyone that can help me with a problem? 16:57 < shoghicp> yes? 16:57 < shoghicp> Foorack: ping 16:58 < Foorack> Im currntly trying to create a mc server from scratch 16:58 < Foorack> and follow the wiki step by step 16:58 < Foorack> http://wiki.vg/Protocol_FAQ 16:58 < Foorack> all the encrypt-decrypt part is done 16:58 < Foorack> at step 11 16:59 < Foorack> I send the 0xFC packet, enable AES stream and start wait for the 0xCD packet 16:59 < Foorack> but it never comes.. 16:59 < Foorack> problem: client never send packet at step 14 16:59 < shoghicp> Tell me what you are receiving 17:00 < shoghicp> or 17:00 < shoghicp> what do you send 17:00 < Foorack> thats the problem, im not reciving anything.. I'm sending the 0xFC packet at step 11 and then the client not sending packet as in step 14 17:01 < Foorack> sending what? 17:01 < shoghicp> the bytes itself 17:01 < Foorack> should i tell what I send in packet 0xFC in step 11? 17:01 < shoghicp> yes, put somewhere the hexdump of that packet 17:02 < Foorack> hexdump? I can pastebin the code if thats what you mean.. 17:03 < shoghicp> no, they bytes on the network 17:03 < shoghicp> use Wireshark or tcpdump 17:04 < Foorack> do I need to install any of those programs? 17:04 < Foorack> The only thing im sending is this: http://pastebin.com/pQfvDmuu 17:06 < shoghicp> let me see 17:07 < shoghicp> http://pastebin.com/sUTpEhBq 17:07 < shoghicp> REQUEST -> RESPONSE 17:07 < shoghicp> and you have to remove the byte arrays itself 17:07 < shoghicp> try that 17:09 < Foorack> should i remove the lines where I send : out.write(new byte[0]); ? 17:09 < shoghicp> yep 17:10 < shoghicp> the shorts tell the client that the byte array has length zero 17:10 < shoghicp> so no data is sent 17:10 < shoghicp> Foorack: also, check the packet id, REQUEST -> RESPONSE 17:11 < Foorack> yes, did that, (thanks * 1000), its working now 17:11 < shoghicp> :) 17:14 < Foorack> now its working,, 17:14 < Foorack> strange.. 17:15 < Foorack> I send the login packet as in step 15 and the server responds with packet 52 17:15 < Foorack> whats that for packet? 17:15 <+dav1d> http://wiki.vg/Protocol 17:15 < Foorack> on the wiki it only says in hex and what hex is 52? 17:16 <+dav1d> you should learn the basics 17:16 <+dav1d> 52 in hex is 0x34 17:16 < Foorack> how did you know that? :O 17:16 <+dav1d> I cheated, but doing that by hand isn't hard 17:17 <+dav1d> python -c "print hex(52)" 17:17 < Foorack> mm. found that cheat in java too :) System.out.println(Integer.toHexString(0xFC)); 17:17 < Foorack> (oh, replace 0xFC with 52) 17:18 <+dav1d> but these are the basics of CS 17:19 < Foorack> hmm... my server says after it sending 0x01 login packet it recives a 0x34 packet,... but that packet is well only suposed to be server->client? 17:19 <+dav1d> probably means you have a bug somewhere 17:19 <+dav1d> parse the protocol incorrectly 17:21 < Foorack> can it be that im reading from the stream incorrectly? that my server reads 0x34 but becuase its encrypted and I read it wrong maybe its a whole other number? 17:21 < Foorack> this is how I create the encrypt/decrypt streams... I guess thats wrong too ;P 17:22 < Foorack> http://pastebin.com/VrrkaaQ5 17:22 <+dav1d> or you just read the previous packet not completly 17:24 < Foorack> Am I doing it right or wrong? 17:25 <+dav1d> no idea 17:25 <+dav1d> Don't know how that works with java 17:25 <+dav1d> you can use a proxy like mc4p to verify your implementation 17:25 < Foorack> ok, have to go now, thanks for help.. --- Day changed sam. août 10 2013 01:47 < Foorack> Hey, 01:48 < Foorack> anyone here thats know anything about AES encrypt stream? 01:49 < Foorack> guess I have to come back later maybe.. cya 01:52 < dx> three minutes... 10:32 < Manyman> Hey, is there support for mark2 on this channel? 10:37 < dx> maybe 10:37 < dx> two of the devs of that project are here 10:37 < dx> but idling furiously 10:39 < dx> Manyman: ...just wondering, are you 'maruchan' on esper? 10:40 < dx> (if not, then this is an odd coincidence :D) 10:48 < Manyman> nope 10:48 < Manyman> Sorry, was afk 10:48 < dx> odd coincidence then! 10:48 < Manyman> heh 10:48 < dx> well i'm glad you're not, that person didn't even know what to do with the instructions in the INSTALL.md file 10:49 < Manyman> lol, not I'm getting an error with the irc plugin 10:49 < Manyman> *not 10:49 < Manyman> *no 10:49 < Manyman> wth, I didn't press t 10:51 < dx> what's weird about this is that i almost completely forgot that mark2 existed, and today i've heard about it twice 10:51 < Manyman> It's pretty damm cool 10:51 < Manyman> if not a little buggy :3 10:52 < dx> anyway, i barely know how it works but if you got a traceback i might be able to figure it out 10:53 < Manyman> lemme grab the log 10:57 < Manyman> http://pastebin.com/raw.php?i=rprETU4G 11:12 < dx> Manyman: uh... what 11:12 < dx> Manyman: that's an error about a missing object, the error is in line 29 11:13 < dx> Manyman: the corresponding line i can find in the source code is line 79, here https://github.com/mcdevs/mark2/blob/master/mk2/plugins/monitor.py#L79 11:13 < Manyman> oh, I should of said, we've been having trouble with monitor as well 11:13 < dx> it's like you literally deleted the whole Check class 11:13 < Manyman> It wouldn't detect that the server was online 11:13 < Manyman> and was restarting every 10 mins :3 11:13 < dx> wat 11:14 < Manyman> The other admin disabled it 11:14 < dx> ... 11:14 < dx> he deleted the whole class and expected it to work fine after that? 11:14 < Manyman> oh shit 11:15 < Manyman> he deleted it? 11:15 < dx> 06:11 < dx> Manyman: that's an error about a missing object, the error is in line 29 11:15 < dx> 06:11 < dx> Manyman: the corresponding line i can find in the source code is line 79, here https://github.com/mcdevs/mark2/blob/master/mk2/plugins/monitor.py#L79 11:15 < dx> i'm not sure if you see how the line number differs by 50 11:15 < Manyman> cocks, I'll try and reload it 11:16 < dx> this doesn't really make much sense 11:16 < dx> so before assuming stupidity, let me confirm, you did get it from https://github.com/mcdevs/mark2/ right? 11:17 < dx> not a different fork or branch or whatever? 11:17 < Manyman> I didn't install it :3 11:17 < Manyman> and I don't know where he installed it :3 11:17 < Manyman> It's not in /usr/ 11:17 < dx> /usr/local/lib/python2.7/dist-packages/mk2 11:18 < dx> the error says it 11:18 < Manyman> oh cheers 11:18 < Manyman> hmm, could it being installed incorrectly be a problem? 11:19 < dx> that location is probably not an issue 11:20 < dx> ...the fact that the person who installed it seems to do completely random things that don't make sense, now *that* is an issue. 11:20 < Manyman> heh 11:21 < Manyman> Where is the check class meant to be located? 11:22 < dx> https://github.com/mcdevs/mark2/blob/master/mk2/plugins/monitor.py#L5-L52 11:22 < Manyman> Cheers 11:23 < Manyman> Yep, totally gone 11:23 < dx> could you pastebin that file? 11:23 < Manyman> sure 11:23 < dx> it doesn't really matter but now i'm wondering how he managed to shift it exactly 50 lines up 11:24 < Manyman> http://pastebin.com/raw.php?i=34v1uKr7 11:25 < dx> ...lol it was more trivial than what i was thinking 11:25 < Manyman> I'll comment it out instead 11:25 < dx> he just removed two lines of whitespace along with the class. okay. 11:25 < dx> commenting it out won't change anything 11:25 < Manyman> yeah, I just want to keep it there for now 11:26 < dx> leaving it commented is still as stupid as removing it 11:26 < Manyman> cause I'll forget :/ 11:26 < Manyman> alrighty haha 11:26 < Manyman> Should I just put it back? 11:26 < dx> you should make a new, clean installation, and don't let the other guy touch it 11:27 < dx> and if you have issues with that clean installation, please consult your doct- errr i mean, ask someone who actually knows python 11:28 < Manyman> Thanks so much 11:28 < Manyman> shit bad yo 11:29 < Manyman> hmm 11:29 < dx> i don't really know if he modified anything else, but if he doesn't mind doing this, other stuff might be modified, and there's no way we can offer help over a installation that was changed like that 11:29 < Manyman> I wonder if he installed the requirements 11:30 < Manyman> true 11:31 < dx> (i'd like to say "warranty void if messed with" but the license explicitly states that there wasn't any kind of warranty since the beginning :D) 11:31 < Manyman> heh 11:32 < Manyman> I'd prefer to get him to reinstall it, since it's his box 11:32 < Manyman> and I'm just meant to help maintain the server 11:33 < dx> sure, if you can just tell him to not touch the source code again, and you can trust him not to do it, go ahead 11:33 < Manyman> haha --- Day changed dim. août 11 2013 01:15 <+Prf_Jakob> Bah stupid lightning. 01:16 <+Prf_Jakob> Taking out me internets 23:01 < ellisvlad> Hey Everyone :D 23:02 < ellisvlad> Having trouble with NBT data 23:05 < ellisvlad> I'm not sure where to start... 23:06 < dexter0> with an existing library I'd recommend 23:06 < ellisvlad> Can you point me in the right direction please, I'm using C++, but will probably be able to rewrite libraries in any other language 23:08 < dexter0> https://github.com/search?q=nbt&ref=cmdform 23:09 < ellisvlad> Thanks, I do understand the NBT format, although, have trouble making my NBT data gzip compressed 23:11 < dexter0> are you working on a map viewer/editor of some sort? 23:12 < ellisvlad> Minecraft Server, C++ 23:14 < dexter0> ok, some NBT libs may have compression support. There are probably other libraries for working directly with the map format. And for all things Minecraft server, https://github.com/SirCmpwn/Craft.Net is a good reference implementation (though its c#) --- Day changed lun. août 12 2013 02:12 <+sadimusi> md_5: heard of this dude? http://pastie.org/8195076 02:13 < dx> fixed version: By the way, md_5, I know you're reading this, Bungee looks like it was coded by a 15 year old. 02:16 <+AndrewPH> fixed fixed version: By thi wey, md_5, I knuw yua'ri riedong thos, Bangii luuks loki ot wes cudid by e 15 yier uld. 02:18 < dexter0> where was that posted? 02:19 < Drainedsoul> the issue with C++ NBT libs I've seen is that they're too object oriented 02:20 <+sadimusi> http://twitter.com/markhed1 02:22 <+sadimusi> the guy used up all the inodes on my server because of PHP's stupid disk based session storage 02:22 < dx> >This morning, a SWAT team broke down my front door and confiscated all of my equipment 02:22 < dx> confirmed for a fucking joke 02:22 < dx> joke of a person, i mean 02:22 < Drainedsoul> the solution: Don't use PHP sessions 02:23 <+sadimusi> the band-aid solution: ramdisk for session storage 02:23 < dx> that's the "let's rely on the kernel OOM killer" solution 02:25 <+sadimusi> it should have a fixed size, but I should probably check that sometime 02:25 < dx> lol 02:25 < dx> yeah they usually do, but i think it defaults to half the physical ram or something 02:26 <+sadimusi> I set it to 300mb, that should be enough 02:26 < dx> okay, band-aid approved then 02:26 <+sadimusi> Filesystem Size Used Avail Use% Mounted on 02:26 <+sadimusi> tmpfs 300M 90M 211M 30% /var/lib/php5 02:26 <+sadimusi> looks fine 02:27 < dx> "Do NOT unset the whole $_SESSION with unset($_SESSION) as this will disable the registering of session variables through the $_SESSION superglobal" 02:27 < dx> thanks php docs 02:27 <+sadimusi> the fun part of cleaning up after the attack was that `rm /var/lib/php5/*` did exactly nothing 02:28 < dx> it kept the fds open after unlinking? 02:29 < dx> nah actually that should hit ulimit first 02:29 <+sadimusi> I have no idea what it did, no command that had something to do with this directory ever completed 02:29 <+sadimusi> there were 900k files in there... 02:30 < dx> how many php open processes? 02:30 <+sadimusi> none, I shut down everything 02:30 < dx> fun 02:31 <+sadimusi> and php's garbage collector didn't work either of course 02:31 <+sadimusi> which, as a side note, doesn't work at all by default on some ubuntu versions 02:32 <+sadimusi> or at least uses excessive amounts of cpu power 02:33 < Drainedsoul> I'm pretty sure it's a known fact that PHP's garbage collector is garbage, and that it mostly relies on the fact that php is supposed to be short-lived 02:33 < Drainedsoul> could be wrong 02:34 <+sadimusi> I'm talking about the session garbage collector 02:34 <+sadimusi> it's a simple cronjob 02:34 <+sadimusi> http://d.pr/n/VH1N 02:34 < Drainedsoul> ah yeah 02:34 < Drainedsoul> this just sounds like don't use PHP sessions to me 02:35 < dx> most people who use php do it because they don't have a choice 02:35 <+sadimusi> it was even better a few versions ago, you could define the probability at which the garbage collector would engage whenever a php script is run 02:35 < Drainedsoul> wut 02:35 < dx> (or that's what i'd like to believe) 02:35 < Drainedsoul> as long as you have a database you can implement your own session 02:35 <+sadimusi> for me this is definitely the case 02:35 < dx> in this case i'm assuming sadimusi didn't write the php scripts 02:36 <+sadimusi> I do have the choice of rewriting everything, but that's definitely not happening 02:36 < Drainedsoul> alternately you could just refactor it instead of rewriting it, and redirect assignments to/reads from $_SESSION to a database-/cookie-based provider 02:37 <+sadimusi> there are some modules to store the session data with memcache, I might look into that sometime 02:37 < dx> i don't think php allows overloading array reads/writes :D 02:37 < Drainedsoul> it absolutely does 02:37 < Drainedsoul> implements arrayaccess 02:37 < dx> okay 08:14 <+md_5> dx hm? 08:14 <+md_5> thats lilypad he was talking about 08:14 <+md_5> sadimusi yeah it blew up hilariously in his face 08:15 < dx> md_5: you didn't see what i did there :( --- Day changed jeu. août 15 2013 07:42 < TkTech> Anyone want a Mirrors Edge key for Steam? Have one extra. 08:42 < Cr0s> hi 08:42 < Cr0s> how to disable MC's client and server protocol encryption? 08:42 < Cr0s> I writing a proxy server and get stuck in encryption 08:43 < Cr0s> wot to play MITM attack 08:43 < Cr0s> won't* 17:06 < TkTech> Prf_Jakob: poke? 17:08 <+Prf_Jakob> TkTech: yes 17:49 < SimSonic> Hello all, can anybody here help with file approvement on dev.bukkit? two days waiting. Uploaded 5 versions =\ 18:09 <+dav1d> SimSonic: hi, no, I don't think so, better join esper.net#bukkit 18:10 < SimSonic> Thanks ) 19:52 < dx> huh, for some reason i failed to join this channel three days ago and didn't realize i wasn't in here 19:54 < TkTech> dx: Was that when it was +irm? 19:55 < dx> now my logs have a huge hole in them :(. if anyone is bored enough to provide me logs since my pingout, i'd appreciate it (i sure wish the public logs the topic mentions were actually public) 19:55 < dx> TkTech: probably just +r 19:57 < dx> i have extremely cheap autoidentify scripts ("send identify, wait two seconds, join channels") that sometimes fail if there's lag 20:00 <+clonejo> Anyone visiting Gamescom? 20:01 <+clonejo> ^ dav1d, pdelvo 20:02 <+dav1d> clonejo: no 20:02 <+dav1d> clonejo: where is it? 20:02 <+clonejo> Cologne 20:02 <+dav1d> oh köln 20:02 <+dav1d> na 20:03 <+clonejo> It's only one hour away from me, so I couldn't miss the opportunity 20:05 <+dav1d> if I you told me that ~2 month ago, I would probably be there :D 20:05 <+dav1d> visiting relatives in Düsseldorf/Köln + gamescom :P 23:22 <+md_5> waits of 5 days arent uncommon on bukkitdev lol --- Day changed ven. août 16 2013 03:38 < shoghicp> Just pushed PocketBurger (Burger-alike tool for MCPE) 03:38 < shoghicp> https://github.com/shoghicp/PocketBurger 03:38 < shoghicp> It is compatible with Hamburglar and BurgerVitrine 03:38 < shoghicp> https://dl.dropboxusercontent.com/u/3030630/0.7.3.html 03:39 < shoghicp> It is pretty basic 03:39 < shoghicp> but works 08:58 <+md_5> whoa 08:58 <+md_5> shoghicp nice 08:58 <+md_5> really nice 08:59 <+md_5> how do you get the asm dump? 10:25 < TobiX> clonejo: I visited in recent years, but since it overlaps with German summer holidays for a few years, it has become too full for my taste... 10:36 <+pdelvo> @clonejo not this jear :( 11:19 <+clonejo> okay, np 11:57 < shoghicp> md_5: I use the IDA asm output 11:58 < shoghicp> I didn't tested it with other things 12:01 < shoghicp> Adding more things right now ;) 14:22 < shoghicp> Added additional methods + biomes to PocketBurger :D 15:19 <+sadimusi> shoghicp: very nice 15:21 < shoghicp> I'm adding blocks now 16:08 < shoghicp> Burger is the tool used to compare releases, right? 16:08 < shoghicp> Hamburglar only shows it 16:08 < shoghicp> right? 16:58 <+ammar2> shoghicp: burger gets info for one version, hamburgler compares different versions. BurgerVitrine generates fancy html pages 17:00 < shoghicp> I mean 17:00 < shoghicp> python Burger/munch.py -c minecraft.1.5.jar minecraft.1.6.jar 17:00 < shoghicp> Burger gets the info for each one 17:00 < shoghicp> right? 17:07 < shoghicp> Ok, right now it has packets + instructions, version, blocks, biomes, sounds 17:46 < shoghicp> MCPE 0.6.1 <=> 0.7.3 comparison: https://dl.dropboxusercontent.com/u/3030630/0.6.1_0.7.3.html 17:47 < shoghicp> there are some bugs with block detection --- Day changed sam. août 17 2013 16:55 < ashka> hello there, I wanted to know if the packet that used to set the server texture pack was removed silently in 1.6, I can't find it 16:59 < zml> ashka: It's always been using Packet250, so you wouldn't see a separate packet class. I'm not sure how resource packs may have changed that though 16:59 < ashka> well, with bukkit 1.6 at least, it's sending the packet, but the vanilla client isn't reacting 16:59 < ashka> that's maybe just a bug, still have got to try with the vanilla server 16:59 < shoghicp> ashka: MC|Tpack 17:00 < shoghicp> http://wiki.vg/Plugin_channel 17:05 < ashka> still seems buggy, the client won't prompt me for a pack 17:15 < ashka> oh ok, just read it was disabled temporarily 21:29 <+Prf_Jakob> good thing I didn't press enter when I entered my password 21:30 < TkTech> Prf_Jakob: Q? 21:30 <+Prf_Jakob> or I would have entered it here... 21:30 <+AndrewPH> is that bad? 21:31 <+Prf_Jakob> yes 21:31 <+Prf_Jakob> basically focus error.. --- Day changed dim. août 18 2013 01:16 < shoghicp> Is there any way in BurgerVitrine to set the name of a packet? (via JSON) 01:16 < shoghicp> I'm adding a comment to each packet with the name 01:16 < shoghicp> I tried looking into the code 01:16 < shoghicp> nothing 01:17 < shoghicp> sadimusi: ping ^ 01:29 < shoghicp> sadimusi: Pull request, https://github.com/sadimusi/BurgerVitrine/pull/3 01:31 < shoghicp> With the patch: https://dl.dropboxusercontent.com/u/3030630/0.7.3.html#packets 01:31 < dx> nice! 01:32 < dx> i like the tiny patch 01:33 < shoghicp> The feature was there ;) 08:28 <+SpaceManiac> my Linux machine has finally bitten the dust 08:29 <+AndrewPH> yay 09:04 <+md_5> thats ad 09:04 <+md_5> thats sad 23:26 < shoghicp> sadimusi: thanks! 23:47 < fragmer> TkTech, my wiki.vg login no longer works 23:47 < fragmer> > There is no user by the name "F". 23:48 < fragmer> (clearly there is though: http://wiki.vg/Special:Contributions/F ) 23:48 < dexter0> fragmer: the wiki moved to a new host 23:48 < dexter0> a while ago 23:48 < dexter0> create a new account w/ the same name 23:48 < fragmer> That's odd. 23:49 < fragmer> Now my contribution list has been blanked 23:49 < fragmer> What kind of a host move is this... 23:50 < dexter0> TK is now hosting the wiki, instead of kevin 23:50 < dx> he used a mediawiki xml export that keeps the page history 23:50 < dx> but no user accounts or anything 23:50 < dx> because apparently it wasn't possible to contact kev to do the host move --- Day changed lun. août 19 2013 00:02 < fragmer> I see 00:04 <+dav1d> the light 13:58 <+clonejo> is coming 13:59 <+pdelvo> I dont know if I want to know that :o 14:00 <+clonejo> pdelvo: ouch, I actually wanted to append to what david said 14:00 <+pdelvo> :D 14:00 <+clonejo> otherwise I would have used /me 14:01 <+dav1d> that was a long time ago :P 14:02 <+clonejo> so? 14:02 <+clonejo> IRC can fluently go from realtime to long delays. 14:06 < SinZ> Kinda not really 14:42 <+clonejo> Don't you have some backlog? 14:45 < SinZ> I know the previous messages, except it was too long of a gap 20:33 < MaximoMinial> Hi, I have a question related to the minecraft protocol. When you send a packet, it has various fields, and some fields have a variable length. How are you able to know how long will a string be for e.g. ? 20:35 < shoghicp> it is prefixed by a short 20:35 < shoghicp> that is the length 20:36 < shoghicp> check the Data types page 20:36 < shoghicp> http://wiki.vg/Data_Types 20:36 < MaximoMinial> thanks ! 20:37 <+clonejo> The data types pake should be more obvious 20:37 <+clonejo> s/pake/page/ 20:38 < Morrolan> Isn't it linked from the top of the protocol page? 20:38 <+clonejo> it's linked from the very bottom 20:38 < MaximoMinial> Yeah I didn't checked bottom 20:38 < Morrolan> Ah, the bottom it is. 20:38 < MaximoMinial> Quite normal to see links there in a wiki 20:39 <+clonejo> most wiki pages aren't that long 20:40 <+clonejo> that string length prefix question comes up every few weeks 20:40 <+clonejo> not that it bothers me much, actually 20:40 <+clonejo> maybe we should keep the links how they are to get the people to irc :D 20:41 < MaximoMinial> A quick recap at the top of the Protocol page or a direct link would help, but yay irc is nice though 20:41 < shoghicp> Those links were at the top of the page before 20:41 < shoghicp> oh 20:41 < shoghicp> no 20:41 < shoghicp> they weren't links 21:20 <+dav1d> iirc it was a table 23:44 < dx> http://wiki.vg/index.php?title=Protocol&diff=4243&oldid=4228 --- Day changed mar. août 20 2013 03:41 < TkTech> It was just a stub on the top of the page previously. 03:41 < TkTech> That page is getting to the point where it needs a custom template. 03:41 < shoghicp> yep 03:48 < dx> damn +r 03:49 < shoghicp> and another release of PocketMine-MP 03:49 < dx> damn 09:11 < MaximoMinial> Hi, I'm messing around in java to try to log in my private server, but after sending an 0x02 packet with all the fields correctly set (I generate exactly the same hex sequence that i captured from sniffed packets from the regular clients) I'm going to paste you the code 09:11 < MaximoMinial> I forgot the mention the interesting part, my server does not respond and the program exit after 30s which I believe is the default timeout 09:12 < MaximoMinial> http://pastebin.com/FfkcGqmD 09:13 < MaximoMinial> The program is stuck at the in.read() instruction, waiting for something, then returning -1, and exiting 09:14 < MaximoMinial> *return -1 and exits 09:15 < MaximoMinial> The first time I tried, the packet didn't contain all the field required and I got a 0xFF from the server (which is normal), and from that point, it was impossible to get a server response on new connection 09:17 < MaximoMinial> Even after completing all the fields and getting the same hex sequence has sniffed 09:24 < MaximoMinial> I'm using 1.5.2 btw 12:19 <+md_5> anyone got C/C++ examples of openssl+minecraft 12:19 < barneygale> MaximoMinial: did you figure it out? 12:22 < dx> md_5: http://ix.io/7qB 12:26 < MaximoMinial> Actually, the server responds after 30s with the double fuck packet (0xFF ;)) and closes the connection. It seems that it didn't get my 0x02 packet at all 12:27 < MaximoMinial> The 0xFF says that I "Took too long to log in", as written in my server log 12:28 < MaximoMinial> I'll paste the actual version of my code 12:38 < MaximoMinial> The hex sequence generated for the 0x02 is actually different from what I sniffed, I look further in that direction, I think that's where the problem lies 12:41 < MaximoMinial> Ok i got it, the number I was putting in front of strings was the number of bytes used by the string and not the number of code points, which is in this case the number of bytes divided by 2 12:48 < barneygale> aye, that's what I was going to tell you then I accidentally went AFK 12:48 < barneygale> sorry :P 12:49 < MaximoMinial> np barneygale 13:57 < Drainedsoul> md_5: I have pretty extensive examples if you still need 13:58 < Drainedsoul> all C++11 15:46 < MaximoMinial> Is it possible that my server Id has a length of 1 ? 15:46 < MaximoMinial> Is it because it's in offline mode ? 15:47 < MaximoMinial> (no authentication) 15:47 <+sadimusi> it might just be "-" in offline mode 15:47 < MaximoMinial> ok thanks 15:47 <+sadimusi> at least that's what it used to be before encryption was added 15:48 < shoghicp> sadimusi: One question, is there Tile Entity support in Burger / BurgerVitrine? 15:49 <+sadimusi> no, but adding a new topping to Hamburglar / BurgerVitrine is pretty easy 15:49 < MaximoMinial> It is still used in 1.5.2, my server ID hex code is "00 2D", which is the number "45", which is the character "-" 15:50 < shoghicp> Ok, keep an eye for pull requests ;) 15:52 < Drainedsoul> looking over the code dx provided, my examples are also a bit more object oriented/well abstracted --- Day changed mer. août 21 2013 07:57 <+md_5> Drainedsoul , dx 07:57 < dx> hi 07:57 <+md_5> I'm planning on implementing bungeecord encryption with openssl+jni 07:58 < dx> huh why 07:58 <+md_5> because the java one is slow as f*** 07:58 <+md_5> and is bottlenecking 07:58 < dx> pbunny would be proud of you 07:58 <+md_5> talking 10-20% of bungee cpu usage 07:58 <+md_5> problem being I have 0 JNI experience 07:58 <+md_5> and 0.01 C experience 07:58 < dx> heh 07:59 < dx> 0 JNI experience, 0.5 C experience here 07:59 <+md_5> I just need to do the bulk cipher part 08:00 <+md_5> ie 19:31 <+Fador> dx: https://github.com/fador/mineserver/blob/master/include/user.h#L109 <- cipher init 08:00 <+md_5> 19:32 <+Fador> dx: https://github.com/fador/mineserver/blob/master/src/sockets.cpp#L94 <- encryption and #L167 decryption 08:00 <+md_5> the rest I can do in java 08:00 <+md_5> but the stream I want in C 08:00 < dx> are you sure this will improve it significantly, though? 08:00 <+md_5> dx with aes-ni 08:00 <+md_5> hell yeah 08:01 <+md_5> native code + cpu specific instructions 08:01 <+md_5> compared to java 08:01 < dx> oh right 08:01 <+md_5> I think so 08:02 < dx> (btw i heard people say that JITs can be faster because of the ability to optimize with more cpu specific code, but in practice i doubt that applies often) 08:02 <+md_5> look at the java aes code :p 08:02 < dx> no thanks 08:03 <+AndrewPH> md_5: let me guess, "welcome to die" 08:03 < dx> md_5: do JNI calls have significant overhead? 08:03 < dx> or is it nearly none? 08:03 <+md_5> not much at all 08:03 <+md_5> http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/com/sun/crypto/provider/AESCrypt.java#AESCrypt 08:04 <+md_5> also my current engine involves memcpy 08:04 <+md_5> direct buffer -> array -> direct buffer 08:04 <+md_5> whereas with jni I can do direct -> direct 08:05 <+md_5> anyway if someone here knows JNI and please poke me up, would love your help 08:05 < dx> THAT PINGOUT WAS VERY SUSPICIOUSLY TIMED 08:05 <+md_5> understood that code yet dx? 08:05 <+md_5> its very basic... 08:07 < dx> yeah it seems to be 08:08 < dx> but maybe the JIT can do magic! 08:51 < Drainedsoul> you want it in C or C++? 08:52 <+md_5> Drainedsoul not sure if JNI supports c++ 08:52 <+md_5> if it does then I would prefer that 08:54 < Drainedsoul> I wouldn't imagine JNI supports C++ because C++ doesn't have a consistent ABI 08:55 <+md_5> I belive it can 08:56 <+md_5> just implement the headers in C or something 08:56 <+md_5> http://thebreakfastpost.com/2012/01/26/wrapping-a-c-library-with-jni-part-2/ 09:01 < Drainedsoul> oh cool 09:01 < Drainedsoul> https://github.com/RobertLeahy/MCPP/blob/master/src/aes_128_cfb_8.cpp here's a C++ wrapper for OpenSSL AES128CFB8 09:01 < Drainedsoul> https://github.com/RobertLeahy/MCPP/blob/master/src/rsa_key.cpp and here's a C++ wrapper for RSA key generation/manipulation 09:01 < dx> why do you have to wrap it.. 09:01 < dx> it can be just written in C and it's less pain for everyone 09:01 < Drainedsoul> ? 09:01 < dx> we're not talking about developing a big server that you might need stuff like templates or object orientation 09:02 < dx> we're talking about calling a few openssl functions. there's no good reason to use c++ 09:02 < Drainedsoul> md_5 was the one who said he preferred C++, and I have a lot of Minecraft-related C++11 code 09:02 <+md_5> meh 09:02 <+md_5> I dont care 09:02 < dx> well, i'm questioning that too! 09:02 < Drainedsoul> and the project those two CPP files are from is a server 09:02 < dx> yes 09:02 < Drainedsoul> I guess I don't understand what you're getting at o.0 09:03 <+md_5> be back soon 09:38 <+md_5> public native void init(byte[] cipherKey, boolean forEncryption); 09:38 <+md_5> public native int cipher(long inMemoryAddress, long length, long outMemoryAddress); // Return number of bytes ciphered 09:39 <+md_5> Drainedsoul thats basically what i need 09:39 <+md_5> cipherKey I guess could be converted to a pointer containing the raw key 09:39 <+md_5> public native void init(long cipherKey, int keyLength, boolean forEncryption); 09:39 <+md_5> public native int cipher(long inMemoryAddress, int inLength, long outMemoryAddress); // Return number of bytes ciphered 09:40 <+md_5> * public native void init(long cipherKeyAddress, int keyLength, boolean forEncryption); 09:42 <+md_5> // CFB8 always outputs the 09:42 <+md_5> / same number of bytes as it 09:42 <+md_5> / takes as input 09:42 <+md_5> oh heh 09:42 <+md_5> never knew that 09:43 <+md_5> ---- 09:43 <+md_5> public native void init(long keyAddress, int keyLength, boolean forEncryption); 09:43 <+md_5> public native void cipher(long inAddress, int inLength, long outAddress); 09:46 <+AndrewPH> beautiful 10:40 < SimSonic> Hello all. What Jenkins plugin allows to mark some builds as Recommended? With gold star at right. Promoted Builds or another one? 12:31 < barneygale> Dinnerbone: sorry to bother. Could someone be assigned to this? https://mojang.atlassian.net/browse/MC-10984 12:32 < barneygale> Dan Frisk was mistakenly assigned when it was first filed and removed himself recently 15:13 < dav1d> poor pdelvo --- Day changed jeu. août 22 2013 11:11 < dav1d> Brottweiler: ping 13:56 < tehme> yo sup boyz! 13:56 < tehme> im back! 13:56 < dav1d> yay he is back! 13:59 < tehme> what did i miss here? 14:01 < tehme> dat wiki 14:01 < tehme> dwarfs != dvarves 14:01 < tehme> :( 14:02 < tehme> dwarves* 14:05 < tehme> oh yeah 14:05 < tehme> fixing wiki is fun 15:34 <+Prf_Jakob> TkTech: http://eve-kill.net/?a=kill_detail&kll_id=19306834 <-- thats one hell of a party. 15:35 < TkTech> Ah ha ha, the strippers. 15:36 <+Prf_Jakob> Yupp a cool billion in strippers 15:37 < Brottweiler> pong 15:37 < Brottweiler> dav1d: plong 15:47 < dav1d> Brottweiler: znc working again? 15:47 < Brottweiler> yes! 15:48 < dav1d> Brottweiler: got my broadcast?^^ 15:48 < Brottweiler> i dont think so? 15:49 < dav1d> he ok 15:49 < dav1d> Brottweiler: now? 15:49 < Brottweiler> yes 22:21 < tehme> damn 22:21 < tehme> why did you restrict free enter to channel? 22:22 <+sadimusi> because some bots flooded the channel with bad jokes 22:23 < tehme> heh 22:23 < tehme> i have a little question about wiki 22:23 <+sadimusi> Prf_Jakob: is the +r really meant to be permanent? 22:23 <+sadimusi> ask away 22:23 < tehme> some fields in protocol page are bold. does it mean anything? 22:25 < tehme> http://wiki.vg/Protocol#0x08example 22:25 < tehme> http://wiki.vg/Protocol#0x08 example 22:25 < dav1d> tehme: I think these values changed in the last protocol version 22:25 < dav1d> it used to be something else 22:26 < tehme> ok, thank you 22:27 < dav1d> tehme: yep, it was of type "short" in 1.5.2 22:32 < tehme> does anyone here have experience with Lua? 22:34 <+Prf_Jakob> sadimusi: done 22:34 < dav1d> Prf_Jakob: wb :P 22:34 < dav1d> ahhhh 22:34 < dav1d> pdelvo: wb 22:51 <+ammar2> dav1d: urf, I bolded them in the pre-release page so it was clearer what changed. 23:57 < tehme> fock yeah! i made my new code generator! 23:57 < Drainedsoul> your whut 23:57 < Drainedsoul> fuck 23:57 < Drainedsoul> okay it's not censored 23:57 < Drainedsoul> was wondering why you said "fock" instead 23:57 < tehme> code generator. wiki source -> c++ classes 23:58 < tehme> because i like to say FOCK 23:58 < dav1d> FORK 23:58 < tehme> I WANT TO FORK YOU --- Day changed ven. août 23 2013 00:01 < tehme> ping 00:12 < tehme> geberated code is little ugly, but is doesnt matter, i think 00:12 < tehme> generated* 00:12 < tehme> it* 00:12 < tehme> omg 00:13 <+sadimusi> how do you generate stuff like 0x1d? 00:13 <+sadimusi> *0xd1 00:13 <+sadimusi> well, iirc 0x1d isn't trivial either 00:14 < tehme> d1 is "special" in my terms, so i must make it manually 00:15 < tehme> 1d is special too for now, but soon i will teach generator to recognize arrays 00:17 < tehme> we can develop some wiki structure to describe special packets, but manual creation is much easier, i think 00:18 <+sadimusi> I'm hoping to skip the wiki and use burger output directly 00:18 <+sadimusi> at least for simple arrays it might be possible 00:19 < tehme> what about obfuscation? 00:20 <+sadimusi> good point 00:21 <+sadimusi> it could just use the field names from the last version and set the rest to "unknown" 00:21 <+sadimusi> so all you have to do is fill in the new ones before the next version is released 00:23 < tehme> but in burger field names are not set al all 00:23 < tehme> at all* 00:23 < tehme> a b c everywhere 00:23 < tehme> or am i blind? 00:24 < tehme> how to see packets of version but not comparation? 00:24 < dav1d> set one to None 00:25 < tehme> anyway a b c 00:25 <+sadimusi> you're right, but if your generator can use your protocol definitions that won't matter 00:26 <+sadimusi> just rebuild the new packets, copy over the rest and then try to match the fields of the modified ones 02:25 < dx> woo i got my identify script right this time 08:56 < Not-003> [fCraft] fragmer * r2161 2 files : Initial implementation of BitMap3D, to be used for /Fill3D 08:56 <+fragmer> oh hey Notifico's back. 08:57 <+fragmer> I just made a terrible data structure 08:57 <+fragmer> https://gist.github.com/fragmer/6316217#file-bitmap3d-cs-L168 09:08 < SinZ> I like the name of your goto 10:17 < dav1d> fragmer: do { } while(bitIndex > 31) 10:17 < dav1d> should work? 10:17 <+fragmer> Probably. I am rewriting the whole thing though, to get rid of some branching and division/modulo 10:18 <+fragmer> Won't need a goto then 11:51 < Not-001> [fCraft] fragmer * r2162 2 files : Fixed and optimized BitMap3D enumerator. 11:52 <+fragmer> Much cleaner and ~3.5x faster. https://gist.github.com/fragmer/6317220 12:29 < SinZ> fragmer: what is this for? 12:33 <+fragmer> SinZ, 3D flood fill in Minecraft 12:33 < SinZ> classic or modern? <3 12:33 <+fragmer> Classic of course 12:33 <+fragmer> Just tested it up to 100M blocks, works like a charm 12:38 < tehme> sup 14:55 < Foorack> Hey. anyone that can help me with sending the chunk too the client? Should I use 0x33 OR 0x38 and how would i use them? I dont know what the array should contain.. 14:56 < Drainedsoul> http://wiki.vg/SMP_Map_Format 14:59 < Foorack> so i should send 0x38 when the players join and 0x33 when the player moves into a new area? 15:05 < Drainedsoul> that's what the vanilla server does afaik 15:08 < Yoshi2> Foorack: you can try sending lots of 0x33s if you have issues with sending 0x38, it should work as well 15:08 < Drainedsoul> sending lots of 0x33s seems like a less tightly-coupled method to me 17:17 < tehme> anyone here? 17:18 < tehme> i am now thinking about how can my code generator know what field is length of array 17:18 < tehme> usually it is previous field 17:18 < tehme> but there are exclusions 17:51 < Not-002> [BraLa] Dav1dde pushed 1 commit to master [+6/-6/±3] http://git.io/feHGcA 17:51 < Not-002> [BraLa] Dav1dde 6e2e4ae - updated glad 17:59 < tehme> fuuuuuuuck 18:00 < tehme> i fixed arrays recognition 18:00 < tehme> and now code generator thinks 0xD1 is a regular packet 18:01 < dav1d> add a blacklist 18:02 < tehme> yep, i thought about this 18:23 < Drainedsoul> what's this about 0xD1? 18:38 < tehme> http://wiki.vg/Protocol#Teams_.280xD1.29 18:39 < tehme> variable fields 19:09 < Drainedsoul> variable fields are so annoying, not just because they're a pain in the ass, but because they're just a hallmark of poor design 20:01 < tehme> this is mojang 20:10 < Drainedsoul> I know, I wasn't implying that Mojang doesn't have a history of awful design choices, was just pointing out that variable fields are a symptom of that disease. 23:45 < TkTech> Prf_Jakob: Yes. 23:46 < TkTech> Prf_Jakob: http://evevalkyrie.com/ 23:47 <+Prf_Jakob> TkTech: looks cool 23:47 <+Prf_Jakob> can't wait to try it out --- Day changed sam. août 24 2013 01:38 < TkTech> WebKit's (new) interface almost seems sane, and easy. 01:38 < TkTech> Then the ever so subtle bugs start creeping in. 01:47 <+Prf_Jakob> heh 01:48 <+Prf_Jakob> is it to integrate into a app like awesomium? 01:56 < Not-002> [fCraft] fragmer * r2163 30 files : Moved all map generation code into a separate namespace (fCraft.MapGeneration). 02:00 < Not-002> [fCraft] fragmer * r2164 11 files : Added missing copyright notices/acknowledgments to MapGeneration source files. 02:01 < TkTech> Prf_Jakob: No, we use it for crawling. 02:03 <+Prf_Jakob> TkTech: ah okay 03:01 < Not-002> [fCraft] fragmer * r2165 6 files : Added /fill3d command! Fixed an offset error in BitMap3D's enumerator. 10:34 < conur> anyone not AFK right now that can help me figure something out real quick? 10:36 < Yoshi2> conur: what do you need? 10:37 < conur> Im having the weirdest experience. I just started working on a server and I was testing it with the Ping command in 1.6.2. For some reason, its first byte is perceived as -2, instead of 0xFE. 10:37 < conur> Oddly enough, if I try to login to the server itself, it sends the handshake 0x02 just fine. 10:39 < conur> Or is this normal? I honestly havent ever dealt with hexa so Im not sure if thats supposed to happen. 10:39 < Yoshi2> ah, you're most likely interpreting the 0xFE as a signed byte, and not a unsigned byte 10:39 < conur> I just realized I was probably doing something like that. Thank you! 10:39 < conur> I know Java handles all that weirdly.. 10:39 < conur> dont you have to do like & 0xFF at the end of it or something 10:40 < conur> Answered my own question! Thanks for reminding me about that 10:40 < Yoshi2> you're welcome 10:40 < Yoshi2> yeah, from what I've heard, java doesn't support unsigned bytes internally 10:41 < conur> yeah unlike C++ and the like 14:03 < circ-user-no1VE> hello? 14:03 <+sadimusi> o/ 14:04 < circ-user-no1VE> im making a networked game, and i was looking at the minecraft protocol, but i cant figure out whether to use TCP or UDP 14:04 < Calinou> MC uses TCP 14:04 < Calinou> I suggest using UDP, lol 14:04 < circ-user-no1VE> hmm 14:05 < circ-user-no1VE> i read that for real time games, you usually use udp 14:05 < circ-user-no1VE> but udp packets can be lost 14:05 < circ-user-no1VE> so, if a client connects to the server, entire parts of the login system can be lost 14:05 < circ-user-no1VE> and the client blocks up 14:05 <+sadimusi> either you use two streams or you have to build your own ack mechanic for a few selected packets 14:05 <+sadimusi> or you just use tcp of course 14:06 < circ-user-no1VE> i also thought of something like that, where players movement and entity data(enemy, anything that is real-time) via UDP, and downloading maps/data/inventories/spawning via tcp 14:07 < circ-user-no1VE> also, i read that when using udp, sometimes multiple packets basicly...are added together or somethign 14:07 < circ-user-no1VE> like, i send 2 packets, 1 arives, containing data of both... is this true? 14:07 < Yoshi2> not added together, but I've heard that packets can arrive twice 14:08 < MooshBeef> ow thats not that much of a problem then 14:08 < MooshBeef> thanks for the help :D 14:08 < MooshBeef> --leaving-- 14:48 < tehme> yo sup 14:48 < tehme> imma angry as fuck 14:48 < tehme> i am starting to hate free software 14:48 < tehme> it always tries to install lots of shit like SOCIAL BROWSER ORBITUM to my pc 14:50 < tehme> and what i "like" most of all is that express-install option is an option for this fucking orbitum only 14:50 < tehme> fucking froadsters 14:52 < iBotPeaches> yep 14:53 < Drainedsoul> I get angry when I get other peoples' work for free as well 14:53 < Drainedsoul> ...wait 14:54 <+clonejo> I like how Oracle takes care of bringing the awesome Ask search to the people with every Java update 14:54 < tehme> i would not be angry if it just proposed this fucking chromium with changed icon and facebook in tabs 14:54 < tehme> but it hides it 14:55 <+clonejo> tehme: There are other Chromium forks, aren't there? 14:55 < tehme> i dint need any 14:55 < tehme> dont 14:56 < dav1d> chromium on windows? o.O 14:56 < tehme> i just want to install apps without constant waiting for them to cheat me and install shit 14:57 < Drainedsoul> I find the apps that you pay for don't do that, since they don't have to game people to make money without charging their customers 14:57 < tehme> i dont know what is orbitum, but it definitely is a trash if it installs this way 14:57 < tehme> wait 14:57 < tehme> screenshot 14:59 < tehme> http://imgur.com/sipa0Ln 14:59 < tehme> first is express, second is advanced 14:59 < tehme> express is "recommended" 15:00 < tehme> noobs will have nice new browser 15:00 < tehme> isn't it too much? 15:00 <+clonejo> Where did you download that installer? 15:00 < tehme> offucial site 15:00 < tehme> official* 15:00 <+clonejo> url? 15:01 <+clonejo> http://www.cheatengine.org/downloads.php ? 15:01 < tehme> yes 15:01 <+clonejo> okay 15:02 < tehme> mb it gives installers with different shitload depending on ip 15:03 < tehme> looks like this orbitum is russian 15:03 < Yoshi2> it's really sad to see that most of the time the "advanced" option is just for changing the install location of the program and preventing adware from being installed 15:03 < tehme> NEW GENERATION BROWSER WITH BUILT-IN VK>COM CHAT!!!! 15:03 < tehme> PROGRESS!!! 15:04 < tehme> saddest thing about this is noobs really trust these words 15:05 < tehme> well ok, cheat engine developers want to eat too 15:06 < tehme> but i hope i will never do this if i make something good and free 15:12 < dav1d> windows, what do you expect 15:24 < tehme> i have linux too 15:24 < tehme> but NOGAMES 15:26 < dav1d> *"no dumb AAA games" 15:26 < dav1d> ftfy 15:28 < Yoshi2> on linux there are so many cool indie games 15:30 < tehme> problem is i want my league of legends 15:31 < tehme> i really like linux more than windows, but it does not have some things i need 15:31 < tehme> mah old ubuntu without unity 15:32 < tehme> do you like ubuntu? 15:35 < dav1d> no 15:38 < tehme> why? 15:40 < Drainedsoul> all linuxes are just a shell through SSH 15:40 < Drainedsoul> let's be real 15:40 < dav1d> tehme: personal opinion 15:41 < dav1d> I rather have everything in my own hands, also rolling release ftw 15:41 < Drainedsoul> personal opinions can still have a reason attached to them 15:41 < Drainedsoul> ah there we go 15:46 < Drainedsoul> templates are definitely my favourite part of C++ 15:46 < tehme> yep, rolling release 15:46 < tehme> things that break in ubuntu every half a year, can break tororrow in your arch 15:46 < tehme> templates are great:) 15:47 < Drainedsoul> does anyone know off-hand what algorithm vanilla MC uses to turn seed strings into integers? 15:48 < tehme> look at minecraft wiki 15:49 < Drainedsoul> nothin' 15:49 < tehme> The Java String.hashCode() function is used to generate a number seed if a word/phrase is used. 15:49 < tehme> http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#hashCode%28%29 15:50 < Drainedsoul> jesus christ it uses exponents wtf 15:50 < Drainedsoul> do not want 15:50 < tehme> kekekek 15:50 < Drainedsoul> I'll stick with djb2. 16:02 < dav1d> tehme: only that it never broke for me 16:22 <+clonejo> Most of the time, I break my Arch by myself 16:41 < tehme> hey 16:42 < tehme> i want to fix wiki 16:42 < dav1d> tehme: where is the problem? 16:42 < tehme> replace "array of xxx" with "xxx array" 16:42 < tehme> is it ok? 16:42 < tehme> problem is someone may not want this:) 16:42 < dav1d> ok? 16:43 < tehme> ok 16:43 < tehme> i will do this 16:43 < Yoshi2> tehme: can you give some particular examples? 16:43 < tehme> http://wiki.vg/Protocol#0x1D 16:44 < Yoshi2> hm, alright 16:45 < tehme> oh damn 16:46 < tehme> fuk it 16:46 < tehme> this fix can kill sence of phrases 21:16 < edk> does simpson still lurk here? 23:45 < MestreLion> any kind soul can help me with directory layout for a mod git repository? 23:45 < MestreLion> I'm not sure where the root should be, or what files to include 23:46 < dx> try #mcp-modding or #minecraftforge or #bukkitdev 23:47 < dx> all in esper 23:50 < MestreLion> thanks dx --- Day changed dim. août 25 2013 00:23 < AnotherOne|2> qweqwe 00:24 < AnotherOne|2> lol 00:33 < tehme> hey people 00:33 < tehme> i need a help with one algorithm 00:34 < tehme> for example, i am printing some list {a = "123", b = "456", etc = "etc"} 00:34 < tehme> if i do it in a loop, how to prevent comma to be printed after last element? 00:35 < tehme> just with if, or there is any better solutions? 00:35 < tehme> are* 00:35 < dav1d> yes, use a join function 00:37 < tehme> thank you 00:37 < tehme> in lua there is table.concat 00:37 < tehme> interesting, how does it work 00:42 <+md_5> well 00:42 <+md_5> in java I have a .toCSV function 00:42 <+md_5> that basically 00:42 <+md_5> StringBuilder out = new StringBuilder(); 00:42 <+md_5> for (String s : list ) out.append(s).append(", "); 00:42 <+md_5> return s.substring(0,s.length()-2) 00:43 <+md_5> * return out.substring(0,out.length()-2) 00:44 < tehme> yep 00:44 < tehme> ihave this too 00:45 < tehme> i dont know what is cheaper 00:45 < tehme> if or sub 00:45 < tehme> but anyway, my arrays are too small to worry