22:51 < kiwhen> There are a couple of things that I might have misunderstood. The varints for example. 22:52 < kiwhen> I've formatted them as 4 bytes with the msb set for the first three, and the groups in reversed order. 22:53 < kiwhen> So when I'm sending 9, I go like 0x80 0x89 0x80 0x00. 22:57 < Jckf> o/ 22:58 < kiwhen> \o 22:59 < Jckf> This may or may not work https://github.com/Jckf/PHP-Minecraft-Query 22:59 < Jckf> Never got around to finishing it, but maybe it helps you somehow 23:00 < Jckf> The repo I forked it from is still active though. Have a look 23:02 < Jckf> Also, why do you set $port's default value to 0, then check for a false value to set it to 25565? 23:02 < Jckf> Just set it to 25565 to begin with 23:03 < kiwhen> Good point. 23:04 < kiwhen> I think there used to be a reason for it, something along the lines of printing a warning when no port was assigned. 23:04 < kiwhen> Like "assuming 25565". It wouldn't be able to tell the difference if it was already set to 25565. 23:09 < Grum> that is one creative implementation of the protocol hehe 23:12 < kiwhen> Ah, got it working now! 23:12 < kiwhen> It was the varints, they were supposed to be written in as 1 byte, not 4. 23:35 < angal`> Why there are a packet, which sends player abilities to server? --- Day changed jeu. sept. 18 2014 00:23 < nickelpro> kiwhen: They're supposed to be written as a variable number of bytes depending on the value, thus "VARint" 00:31 <+SpaceManiac> angal: the client uses it to tell when they are flying or not; the rest of the values are ignored 17:32 < TimVosch15> Hey mbcx2 if you're online could you change the 'MCaap' server to the following: 'yarss' https://github.com/TimVosch/yarss ? (I changed a few things to make it look better :) ) 17:33 < TimVosch15> Nevermind I messed it up I'll send you a PM on the forums later. 19:29 < morfin> hello 19:30 < morfin> does i properly understanded: some block X(one of 48 in chunk) can update but in case of wheat, trees etc i should also check some random to check if that should happen? 19:31 < morfin> *did i properly understand 19:34 < Grum> dx: yes i did that once ... eons ago 19:35 < dx> Grum: i don't believe you, i bet you've been the past 25 hours 30 minutes trying to beat it so you could answer yes 19:37 < dx> i mean that was a suspiciously long time to answer 19:38 < Grum> oh i just didnt see it until now :) 19:40 < dx> seems legit 19:42 < cindy_k> lol 19:52 < Turingi> what will the microsoft acquisition mean to 3rd party and mod developers? 19:52 < redstonehelper> they are going to jail you 19:53 < TkTech> Turingi: No one knows. Ask again in a month. 20:20 < MazenMC> Hey, I've been recently trying to work with the Minecraft Login protocol and specifically creating sessions. As of now when I try to /hasJoined I get a Http response 204, if somebody could help me that would be great. Source: https://github.com/TridentSDK/Trident/blob/master/src/main/java/net/tridentsdk/packets/login/PacketLoginInEncryptionResponse.java#L145-L162 21:00 < TimVosch15> Fragmer: If you got any spare time. I'd like to know how I can convert a compound to a buffer. Because I don't need a root tag for Slot Data enchantment: http://wiki.vg/Slot_Data 21:01 <+SirCmpwn> if anyone is interested in the inferno debage 21:01 <+SirCmpwn> debate* 21:02 <+SirCmpwn> github followed through with my DMCA notice and the inferno "team" took down their github org. Word on the street is that they're setting up a self hosted repository 21:03 < TimVosch15> +SirCmpwn: What's inferno? :S 21:03 <+SirCmpwn> a post-bukkit attempt at a server 21:03 < TimVosch15> Ahh ok, thanks. 21:03 <+SirCmpwn> that originally forked C#raft, then dumped Craft.Net into their repo and removed my license (DMCA notice), then switched back to C#raft 21:04 <+SirCmpwn> I wouldn't have sent a DMCA notice under normal circumstances, but when I confronted them in a friendlier manner they were assholes about it 21:33 < TimVosch15> +fragmer: I already asked this but you might have missed it. How can I get the buffer from a compound without the root tag.? Take a look at this: http://pastebin.com/nstbksb6 21:34 < TimVosch15> +fragmer: And I cant .toString() a nbtCompound to get the need format. I have to break and hover over it :P 21:34 < TimVosch15> neat* 22:14 < TimVosch15> +fragmer: After some debuggin I noticed the client ignores the root tag :P So the error wasn't in the root compound. 22:44 < redstonehelper> SirCmpwn: you have a link to their dmca'd repo? 22:44 <+SirCmpwn> no, they deleted their github org 22:44 < redstonehelper> aw 22:44 <+SirCmpwn> https://github.com/github/dmca/blob/master/2014-09-17-CraftdotNet.md 23:35 < Drainedsoul> lol DMCA notices 23:53 < TimVosch15> Hey, mbcx2. I couldn't PM you so I replied to the thread. Could you read that. I'm off for tonight! --- Day changed ven. sept. 19 2014 00:10 < Dhruv0> Question 00:10 < Dhruv0> For BlockChange, does the client return the BlockId encoded like the server sent it? 00:11 < Dhruv0> meaning (BlockType << 4) | (BlockType & 0xf) like that 05:19 < Not-fc45> [Glowstone] SpaceManiac pushed 3 commits [+2/-0/±8] http://git.io/--ih0A 05:19 < Not-fc45> [Glowstone] SpaceManiac 64345cd - Added basic potion effect definitions (fixes #295). 05:20 < Not-fc45> [Glowstone] SpaceManiac deleted branch blockevents 06:38 < Grum> SirCmpwn: why would you send a DMCA if you have a permissive license? 06:39 <+SpaceManiac> as I understand, the violated the one provision of MIT, which is "include this license file" 06:40 <+SirCmpwn> Grum: SpaceManiac is correct, MIT requires you to include the license file and copyright notice 06:40 < Grum> I guess they also refused to add it within a reasonable amount of time after it was requested they added it? 06:40 <+SirCmpwn> no, they refused to add it at all 06:40 <+SirCmpwn> I joined their IRC channel to ask them to fix the issue, but they were assholes about it 06:40 < Grum> then fuck them :) 06:40 <+SirCmpwn> indeed 06:41 < Grum> and the license doesn't even specify you need to allot time to 'cure' an ailment 06:43 < Grum> unlike some other licenses on repositories certain other people dmcad 06:52 < dx> they also didn't admit they copied and rebranded the craft.net code, just kept saying "the dmca is invalid" and sent a pull request to the github dmca repo removing the file, lol 06:52 < dx> it wouldn't be too hard for them to do things right. they just don't want to 07:05 <+AndrewPH> insider info says they're very aware that the dmca request was valid, so methinks they could be hunting for some trouble 07:06 < dx> i wouldn't say hunting for trouble intentionally, they are just being stupid about it 07:07 <+AndrewPH> I don't mean they're literally trying to get in trouble 07:07 <+AndrewPH> I mean they could be in for quite a bit of hurt 07:08 < dx> oh derp ok 07:10 < Grum> not really hurt, just a chase 07:10 < Grum> they can at any moment stop it by putting in the license 07:11 < dx> sure 07:12 < dx> but meanwhile, be sure to keep enough popcorn around 07:13 <+AndrewPH> isn't knowingly disputing a valid dmca takedown request slightly illegal? or is it just immoral 07:14 < dx> not sure what "slightly illegal" means 07:15 <+AndrewPH> .. illegal. 07:15 < dx> heh 07:15 < dx> i mean it was a copyright infringement already 07:16 < dx> all that changes is that they are aware of it and keep doing it. i guess the question should be: does that make it worse? who knows. 07:16 < dx> and they didn't send a counter notice, that would be something different 07:16 <+AndrewPH> yeah counter notices (which I'm guessing they didn't send anyway) need to be true under penalty of perjury (slight paraphrasing) 07:17 < dx> https://github.com/github/dmca/pull/49 they just sent this, which is just lame 07:18 <+AndrewPH> ah yes 07:18 <+AndrewPH> what a counter-notice that is 07:21 < Grum> AndrewPH: it's actually worse, point 4 of githubs counternotice crap is the reason i'm not putting my hand in the fire to wipe the CraftBukkit's one :/ 07:22 < dx> this? https://help.github.com/articles/dmca-takedown-policy#b-counter-notification-policy 07:22 < Grum> yeah 07:24 <+AndrewPH> Could you elaborate? IANAL and can't figure out what exactly it means 07:25 < dx> "Service of process is the procedure by which a party to a lawsuit gives an appropriate notice of initial legal action to another party, court, or administrative body in an effort to exercise jurisdiction over that person so as to enable that person to respond to the proceeding before the court, body, or other tribunal" 07:25 < dx> so many words 07:25 < dx> so i guess this means a lawsuit goes next? 07:26 < Grum> from how i understand it, agree to get sued in California US 07:26 < Grum> which as someone from non-US is absolutely madness 07:31 < dx> Grum: even if sending a counter notice was 'free', what would you send it for, in the case of craftbukkit? it seemed to me that there's no way to dispute that, other than, well, burying it even more by claiming the GPL code infringes mojang's copyright :P 07:31 < Grum> the dmca is invalid 07:32 < Grum> you cannot dmca a (l)gpl repo for using another gpl repo o.O 07:32 < Grum> that is not how it works :) 07:32 < Grum> by itself in the repository there is nothing that violates the 'gpl' of Bukkit 07:32 < dx> ah i see, so it's debatable in that sense. he's arguing that the NMS code isn't lgpl 07:33 < enchilado> So Wesley Wolfe was just upset because he thought he should have been paid to work on free software, right? 07:33 < dx> enchilado: irrelevant 07:33 < Grum> enchilado: no comment 07:33 < Grum> dx: no its very relevant actually 07:33 < dx> Grum: yes but it's not a good reason to send a DMCA 07:33 < enchilado> I don't see how it's irrelevant 07:33 < Grum> dx: indeed 07:33 < Grum> it just explains the reason why 07:34 < dx> yeah, what motivated him, maybe 07:34 < enchilado> People can do things without them being good reasons 07:34 < enchilado> without them having, rather 07:34 < dx> also, remember that's just speculation unless you can quote him saying he did it for that reason 07:34 < Grum> anyhow, in itself CB doesn't violate GPL, *perhaps* the end product of it does 07:35 < enchilado> Well, I didn't say that was why, I just asked 07:35 < Grum> dx: which is why i said no comment =) 07:35 < dx> just needed to make that clear 07:35 < Grum> i could do that as well, i do not think it is nice to do however 07:36 < Grum> anyhow, neither me nor Dinner want to put hands in the legal fire started by someone with a grudge and little sanity 07:37 < dx> :( 07:37 < Grum> that said, doesn't mean no-one will 07:37 < Grum> you might have noticed we're a bit pre-occupied sofar 07:38 < dx> yeah i heard you were adding landmines to minecraft 07:38 < dx> very excited for that feature 07:38 <+AndrewPH> the fuck, add camels god damn 07:38 <+AndrewPH> I've been waiting for 3 years for camels 07:38 < dx> perl plugin api? 07:38 <+AndrewPH> that too 07:38 <+AndrewPH> rewrite minecraft in php it's faster 07:38 < dx> hell yeah 07:39 < dx> thank you Grum, really looking forward for minecraft 1.9 07:39 < Grum> with camels? 07:39 < dx> yes 07:39 < Grum> we already use CamelCase classes! 07:39 < Grum> and there are plenty of landmines in the code 07:39 < dx> that's a very disappointing kind of camel 08:48 < Not-fc45> [Glowstone] SpaceManiac pushed 1 commit [+1/-0/±23] http://git.io/GTK2wQ 08:48 < Not-fc45> [Glowstone] SpaceManiac 65b67c1 - Added checkstyle and fixed code to obey it (thanks @megawatts). 10:59 < bgale> man how can you fail to use MIT-licensed software properly 10:59 < bgale> that's so trivial... 11:03 < zml> haha https://github.com/github/dmca/pull/47/files 11:04 < MrARM> lol 11:08 < shoghicp> https://github.com/github/dmca/pull/49 11:26 < dx> kangarko changed the title from How come this stupid 1984 became 2014??!? to How come 1984 became 2014??!? What comes next? And after next? 12 days ago 11:29 < dx> "I am going to shit my pants off" 11:30 < dx> guy who submitted this PR confirmed to be 12 11:30 < dx> or maybe less.. 11:30 < bgale> dae gpl is literally 1984 11:32 < zml> the real humor is in the closed PR's :) 13:04 < Aragas> so, now we can only use for debuggin' vanilla servers, yes? 13:05 < shoghicp> use what? 13:05 < Aragas> servers 13:06 < shoghicp> use servers for servers? 13:06 < Aragas> ah, nope 13:07 < Aragas> eg debug clients 13:07 < shoghicp> why would that be? 13:07 < shoghicp> is there something that I missed? 13:08 < Aragas> spigot use not so much memory 13:08 < Aragas> dmca, ou know 13:08 < shoghicp> I feel like I need more context 13:08 < Aragas> sec 13:08 < shoghicp> you mean spigot can only be used to debug things? 13:08 < Aragas> https://github.com/github/dmca/blob/master/2014-09-05-CraftBukkit.md 13:09 < shoghicp> yes, I know about it 13:09 < Aragas> it cannot be used more, i mean, legally. For now 13:09 < shoghicp> they are releasing binary patches now 13:09 < Aragas> oh, nice 13:09 < shoghicp> it can be used, but they can't host the original build 13:10 < shoghicp> so they provide a build number and a md5 hash 13:10 < Aragas> yep 13:10 < shoghicp> http://www.spigotmc.org/threads/spigot-update-20140909a.29091/ 13:11 < Aragas> thx 19:17 < Jckf> Which packet does the client send to break a block? I haven't been up to date on the protocol since beta 1.7, and it seems to have changed =P 19:27 < Jckf> 0x07 20:28 < expir3dcow|away> j 20:29 < dx> k 22:13 < Dhruv0> Is this correct for BlockChange? stream.WriteVarInt((BlockType << 4) | (BlockType & 0xf)); 22:14 < shoghicp> Dhruv0: double BlockType? 22:14 < shoghicp> shouldn't it be BlockType and BlockData? 22:15 < Dhruv0> shoghicp: What would BlockData be? 22:16 < shoghicp> blockId and BlockData 22:16 < shoghicp> for example... wool colors 22:19 < Dhruv0> Oh 22:37 < Dhruv0> shoghicp: How is BlockData sent now? 22:39 < shoghicp> shouldn't it be BlockType and BlockData? 22:39 < shoghicp> stream.WriteVarInt((BlockType << 4) | (BlockData & 0xf)); 22:42 < Dhruv0> shoghicp: how is BlockData sent though? 22:42 < Dhruv0> I need to store BlockData before I encode it 22:42 < shoghicp> it's a number :P 22:42 < shoghicp> in blocks, 4 bits 22:44 < Dhruv0> XD, "It's a number :P" bit obvious 22:44 < Dhruv0> Ok, 4 bits 22:44 < Dhruv0> k try 1 22:44 < Dhruv0> BlockType = BlockType >> 4 & (BlockType | 0xf); 22:45 < shoghicp> why are you doing that... 22:45 < shoghicp> stream.WriteVarInt((BlockType << 4) | (BlockData & 0xf)); 22:45 < shoghicp> you already got it 22:45 < Dhruv0> No no, I'm trying to read the packet 22:45 < shoghicp> aha 22:45 < Dhruv0> I got writing down, I think 22:45 < shoghicp> BlockType = varInt >> 4; 22:45 < Dhruv0> (Also, I'm trying to read the packet because BlockData doesn't exist 22:45 < shoghicp> BlockData = varInt & 0xf; 22:46 < Dhruv0> Ty --- Day changed sam. sept. 20 2014 00:46 <+SirCmpwn> so this Inferno guy moved to self hosted git instead of cooperating with the law 00:46 <+SirCmpwn> so I looked him up, turns out he's a 14 year-old in florida 00:47 <+SirCmpwn> just got off the phone with his parents, problem seems to be resolved now :) 00:47 < humerusj> What was the issue? 00:48 <+SirCmpwn> someone copied Craft.Net into their codebase whole, removed the license, and rebranded it 00:48 <+SirCmpwn> so I got in touch with them to ask them to fix it and they were not friendly 00:48 <+SirCmpwn> so I sent github a DMCA notice and then my story from a few moments ago begins 00:49 < humerusj> Wow 00:49 < humerusj> And it was a 14 yr old that didn't comply... 00:50 <+SirCmpwn> it's happened before, it usually ends with "hey, you're violating the terms of my license, can you please put it back" 00:51 <+SirCmpwn> and then they do so 00:51 <+SirCmpwn> but this kid decided to be an asshole instead 00:54 <+AndrewPH> haha 00:54 < TimVosch15> Haha nice solution xD! 00:54 <+AndrewPH> his age explains a lot 00:54 <+AndrewPH> mostly why he would disregard a dmca takedown request 00:56 < Dhruv0> Lol 01:04 < enchilado> The law? What is that? I'm on the Internet 01:13 <+AndrewPH> I'm literally untouchable! I'm 14 and on the internet! LAWS?!?!? 01:14 < enchilado> I own the site, so how would they ban me? 01:24 < benbaptist_> LOL 01:25 < benbaptist_> that's crazy. though I've met far more intelligent 14/15/16/etc year olds on the internet before, so I couldn't jump to say that it's his age. but that is still pretty stupid. 01:29 < barneygale> SirCmpwn: hahahaha that's amazing 01:58 < Drainedsoul> wow that was pathetic 01:59 < Drainedsoul> I tracked some 14yo down because he "stole" my bits 02:00 < enchilado> "bits"? 02:00 < Drainedsoul> yes you know, 0 and 1 02:00 < Drainedsoul> this outrageous lawbreaker of a 14 year old stole SirCmpwn's bits, even though SirCmpwn still has them 02:01 <+AndrewPH> as you can see, sircmpwn sued him for tens of thousan- oh wait 02:01 < Drainedsoul> which means what? 02:01 < barneygale> yah it wasn't the first thing he did 02:01 <+SirCmpwn> on second thought, I shouldn't get credit for 3 years of hard work and tens of thousands of lines of code 02:01 <+SirCmpwn> good point 02:01 <+AndrewPH> Drainedsoul: it means shush, this is hardly radical. 02:02 < barneygale> SirCmpwn: you asked him first, right? 02:02 <+SirCmpwn> yep 02:02 <+AndrewPH> yea, and he was met with hostility 02:02 < barneygale> right 02:02 < barneygale> and then dmca'd, so he took it off site 02:02 < barneygale> and it's a bloody MIT license 02:02 < barneygale> come on 02:02 <+SirCmpwn> also, didn't know he was 14 until I started looking for him, and was nice enough to call his parents instead of my lawyer 02:02 <+AndrewPH> literally the hardest license to break except for the do-whatever-you-want license 02:02 < enchilado> Isn't it do-what-the-fuck-you-want? 02:03 <+AndrewPH> yeah I can never remember the proper wording 02:03 <+SirCmpwn> WTFPL 02:03 < Drainedsoul> SirCmpwn: So you built Craft.NET for "credit"? 02:03 <+AndrewPH> No, that's a side effect of doing something popular. 02:03 <+SirCmpwn> well, for one 02:04 < Drainedsoul> Oh so it's popular? 02:04 <+SirCmpwn> I give it away for free 02:04 <+SirCmpwn> the only thing I have to gain from it is credit 02:04 <+SirCmpwn> I did it for fun but it is *my* work, and hard work at that 02:04 < Drainedsoul> If it's popular, what's the risk? He's already "get[ting] credit"? 02:04 <+AndrewPH> why are you confronting him about doing the legal and moral right thing? 02:04 <+SirCmpwn> not if you steal it, rebrand it, and throw it into your codebase without my license or copyright statement 02:04 < barneygale> yeah :/ 02:04 < Drainedsoul> what does the "legal [...] right thing" have to do with anything? 02:04 <+AndrewPH> if that kid goes through life thinking he can get away with this, it'll just lead to bigger issues 02:04 <+AndrewPH> legally and morally it would be wrong not to stop him. 02:04 < Drainedsoul> are you saying that things that are legal are right? 02:04 < barneygale> it's licensed under MIT because SirCmpwn wants credit. Why is that such a ridiculous thing to ask? 02:05 <+AndrewPH> no you moron 02:05 < barneygale> that's pretty normal imo 02:05 < barneygale> like, are you suggesting people should work on all projects anonymously? 02:05 <+SirCmpwn> he is saying that my actions are both legally and morally just, not that those things depend on each other 02:05 <+SirCmpwn> right? 02:05 <+AndrewPH> correct 02:05 < Drainedsoul> It being legally just has nothing to do with anything. There are many things that are or were legally just that I wouldn't advocate. 02:06 < Drainedsoul> and the fact that what's "legally just" can change should be sufficient for people not to hold it up as some kind of standard 02:06 < barneygale> hence him saying "and morally" 02:06 < barneygale> :/ 02:06 < Drainedsoul> it is -- by its own implicit admission -- an inaccurate view of "just" 02:06 <+SirCmpwn> you don't understand. 02:06 <+AndrewPH> Drainedsoul: it sounds like you just want to hate sircmpwn 02:06 <+SirCmpwn> it is morally just for me to follow up on this 02:06 <+SirCmpwn> and I have the support of the law in doing so 02:06 <+SirCmpwn> there are things that are morally right but not supported by law, which is different 02:06 < Drainedsoul> So if I were to build a fence, and my neighbour were to copy that fence, I would be morally just in demanding he tear it down? 02:07 <+AndrewPH> only if you trademarked that fence m8 02:07 < barneygale> do you know what copyright is 02:07 <+SirCmpwn> you write a book 02:07 < barneygale> you might be able to patent a fence design.. 02:07 <+SirCmpwn> it takes you three years to write this 40,000 word book 02:07 <+SirCmpwn> and you give it away for free! You even let people modify it and use it as the basis for more books 02:07 <+AndrewPH> barneygale: in which case he would be in the clear for demands :) 02:07 <+SirCmpwn> provided that they credit you as the author 02:07 <+SirCmpwn> but someone takes your book, changes the title, and puts their name on the cover instead of yours 02:08 <+SirCmpwn> thus, there is a problem. 02:08 < barneygale> ^ 02:08 < Drainedsoul> I've written a book. It was 168010 words, and didn't take no 3 years. 02:08 <+AndrewPH> have you tried crying about it Drainedsoul 02:08 < Drainedsoul> AndrewPH: That's a useful contribution to the discussion, thank-you. /s 02:08 <+AndrewPH> no problem m8 02:08 <+AndrewPH> So is everything you've said /s 02:09 < Drainedsoul> AndrewPH: That's not very compelling. 02:09 <+AndrewPH> That's a shame. 02:09 < barneygale> Drainedsoul: so you've complained about stuff. What do you suggest? No copyright at all, or just cut down? 02:09 < enchilado> Copyright is the work of Satan 02:10 < enchilado> We should be free to use whatever software we want for free 02:10 <+AndrewPH> crediting people sure sucks. Nobody should get any credit for anything 02:10 < Drainedsoul> AndrewPH: That's a misrepresentation. 02:10 <+SirCmpwn> free to use and profit from other people's work, giving no credit or code or anyhting back to the original author? 02:10 < enchilado> I always pirate software because I don't think that programming is very difficult and the people that made it don't deserve to be paid 02:10 <+AndrewPH> Drainedsoul: yeah? 02:10 <+SirCmpwn> the kid was asking for (and receiving!) donations 02:11 < barneygale> I mean, that's an OK position to hold. But if you *actually want that to happen*, attacking developers for releasing their code for releasing their code as open-source rather than public domain is surely an unpersuasive line of reasoning 02:11 < Drainedsoul> barneygale: That's not what I'm attacking him for. 02:11 < barneygale> Then what? 02:11 < Drainedsoul> I'm attacking him for hunting this person down and harassing him. 02:11 < enchilado> ...................................... 02:11 < barneygale> What's the point in an open source license if it's not enforced? It's not like MIT is difficult to comply with 02:12 <+AndrewPH> Drainedsoul: That's standard legal procedure m8. 02:12 < enchilado> He wasn't harassing him, you idiot 02:12 < enchilado> He was simply getting him to stop 02:12 <+SirCmpwn> would you prefer that he opened a summons in the mail? 02:12 <+AndrewPH> Contacting the person in question, or in this case his guardians, and requesting firmly to stop. 02:12 < barneygale> Drainedsoul: bear in mind he'd already contacted him online, then DMCA'd 02:12 < Drainedsoul> barneygale: And? 02:13 < enchilado> Bear in mind that Drainedsoul is spouting pure shit 02:13 < Drainedsoul> barneygale: If I did something, someone contacted me, and then started calling my family about it, I'd consider that harassment. 02:13 < Drainedsoul> enchilado: Citation needed. 02:13 < enchilado> Not really 02:13 <+AndrewPH> Drainedsoul: citation granted: #mcdevs 02:13 <+SirCmpwn> pure shit 02:13 < barneygale> So? The guy was ignoring him while committing a crime. SirCmpwn could take him to court. What's wrong with calling him? 02:13 < enchilado> Drainedsoul is probably actually the guy that did it 02:13 <+SirCmpwn> I didn't even try that hard, I just googled his name and found him in a phonebook 02:13 < Drainedsoul> barneygale: Sure. But the backing to your argument there is the law. Which is by its own admission fallible since it changes. So what makes this law a good law, but not other laws that do or have existed? 02:14 < barneygale> Drainedsoul: what? 02:14 < enchilado> Yeah I wish the police would stop harassing murderers, don't you? 02:14 < barneygale> I'm not debating the moral legitimacy of the law 02:14 <+AndrewPH> Drainedsoul is not that smart. 02:14 < Drainedsoul> enchilado: That's a red herring. 02:14 <+AndrewPH> reading over some of his reddit comments, it's apparant that he's quite possibly an astrology major. 02:14 < Drainedsoul> barneygale: So you're saying that all laws are good laws and that they should all be enforced all the time? 02:14 < barneygale> I'm not debating the moral legitimacy of the law 02:14 < barneygale> Again 02:15 <+SirCmpwn> ...a law is a law 02:15 < barneygale> (which implies I think not all laws are just) 02:15 <+SirCmpwn> they should all be enforced 02:15 < enchilado> AndrewPH: there are univerities that teach astrology? 02:15 < Drainedsoul> SirCmpwn: Congratulations, you've learned to construct tautologies. 02:15 <+SirCmpwn> if you disagree with the law, take it to court and have it overturned 02:15 <+SirCmpwn> there is a procedure for these things 02:15 <+AndrewPH> enchilado: maybe! if there are, he's definitely there. 02:15 < barneygale> Drainedsoul: you've managed to talk like a young'un trying to sound smart :P 02:15 <+SirCmpwn> it is not a maybe-law 02:15 <+SirCmpwn> it is a law 02:15 <+SirCmpwn> law-if-the-cops-are-feeling-up-to-it 02:16 < Drainedsoul> SirCmpwin: Well at least that position is consistent, if one I find morally intolerable. 02:16 < Drainedsoul> *SirCmpwn 02:16 < enchilado> You can start typing someone's nick and then press TAB to complete it automatically 02:17 < Drainedsoul> enchilado: In a lot of cases it's faster for me to type the nick, rather than type, TAB, check to make sure it's the right one, delete the "," my IRC adds thereafter, and continue. 02:18 < Drainedsoul> s/IRC/IRC client/ 02:18 < enchilado> Use a client that inserts a colon rather than a comma, then 02:18 < enchilado> And why wouldn't it be the right one? My client completes to the most recent matching nick 02:18 < Drainedsoul> It probably is the right one. I'm not in the habit of blithely accepting autocompletions/-corrections however 02:19 < enchilado> Yes I suppose it is rather blithe of me 02:19 < enchilado> I hope you don't find that morally intolerable 02:20 <+AndrewPH> enchilado: That's a misrepresentation. Also, that's a red herring. 02:21 < Drainedsoul> AndrewPH: Are you capable of usefully contributing or not so much? 02:21 <+AndrewPH> Drainedsoul: I think you should rather be asking yourself that question, based on what I've seen tonight 02:22 < barneygale> Drainedsoul: after the repo was moved off github to avoid the DMCA, what should SirCmpwn have done? 02:23 < Drainedsoul> AndrewPH: Maybe if you articulated yourself clearly and usefully I would see your point-of-view and do so. 02:23 < Drainedsoul> barneygale: As far as I'm concerned he never should've sent the DMCA takedown in the first place. 02:23 < barneygale> why not? 02:24 <+AndrewPH> What's wrong with enforcing the DMCA when it's apparant that they are going out of their way to break it? 02:24 < Drainedsoul> barneygale: Because I don't think people have the moral authority to control what people do a certain pattern of bits. 02:24 <+SirCmpwn> is there anything that an individual can do and then dictate how it's used? 02:25 < barneygale> Drainedsoul: ergo no copyright? 02:25 <+AndrewPH> I guess, then, people shouldn't be stopped in Minecraft when they're "griefing" 02:25 < Drainedsoul> barneygale: As copyright is currently understood, yes. 02:25 <+SirCmpwn> if I make a painting and someone takes a picture of it and starts selling copies of it 02:25 <+AndrewPH> the moderators of those servers should just let it happen, since it's just a bunch of bits. 02:25 < Drainedsoul> AndrewPH: That's different. The server owner has control over a physical, excludable resource -- the server. 02:25 <+SirCmpwn> is that acceptable? 02:25 < barneygale> Drainedsoul: why, then, complain about an MIT project? Compared with commercial software, SirCmpwn is 99% of the way toward what you're suggesting 02:26 < barneygale> Why act like a dick to your closest allies? 02:26 < Drainedsoul> barneygale: I'm not complaining about the project. 02:26 <+AndrewPH> Drainedsoul: Ah, so you're saying disallowing somebody to edit some bits is morally reprehensible, while disallowing somebody to edit some bits is perfectly okay? 02:26 < barneygale> But you are if you're suggesting software licenses shouldn't exist. 02:26 <+SirCmpwn> I can't seem to find your github account, Drainedsoul 02:26 < Drainedsoul> AndrewPH: I'm not saying anything about editing bits. 02:26 <+SirCmpwn> at least assuming that you aren't that one dude with only one repo 02:27 < Drainedsoul> SirCmpwn: https://github.com/RobertLeahy 02:27 <+SirCmpwn> well, to be frank 02:28 <+SirCmpwn> there's nothing interesting here 02:28 < Drainedsoul> barneygale: At least as "software licenses" are currently understood, yes 02:28 <+SirCmpwn> do you really have a right to speak on these matters? 02:28 <+SirCmpwn> you and your 4 users, that is 02:28 < Drainedsoul> SirCmpwn: Lol. Watch out, SirCmpwn is hating on my Github cred. 02:29 < Drainedsoul> Anyway, I'd love to stay and chat, but there's fine wine downstairs, adios 02:29 <+SirCmpwn> no, I'm wondering if you even know what it's like to manage a large scale, popular project 02:30 <+AndrewPH> Drainedsoul: btw "intent to xyz" is an arrestable offence, looking at a similar argument you've had recently 02:30 <+AndrewPH> (and, of course, now I see how all the hot air is being kept when you're not blowing it out) 02:31 < enchilado> I don't understand how anyone could be morally opposed to software copyright. Is it so they don't feel bad about pirating things? 02:35 < Jckf> I'm sorry to interupt you guys, but I've been digging around the vanilla 1.7.10 server all day without finding what I'm looking for, and could really use some help. I cannot for the life of me figure out where the code accepts a block being broken. I have tracked the packet from "C07PacketPlayerDigging" to EntityInWorldManager (yes, these are MCP names), but the logic in there is a real mess. 02:36 < Jckf> I've also looked at some old CraftBukkit code to see where they trigger BlockBreakEvent, but it looks like they've rewritten most of that class. 02:37 < Jckf> EntityInWorldManager that is. CraftBukkit calls in PlayerInteractManager 02:37 < Jckf> "mx" in obfuscated form 02:39 <+Amaranth_> Drainedsoul: I notice your Minecraft server isn't public domain either: https://github.com/RobertLeahy/MCPP/blob/master/LICENSE.txt 02:41 <+AndrewPH> Amaranth: I suggest a pull request removing that file. After all, what's the risk? He's already getting credit if somebody strips his name from it. 02:42 < enchilado> No, just replace his name with your own 02:42 <+AndrewPH> both 02:42 < enchilado> I mean, claiming someone else's work as yours is totally cool, right? 02:44 <+AndrewPH> No, that's a red herring. 02:46 < enchilado> No, that's a misrepresentation. 02:46 <+AndrewPH> I just wrote that, not you. 02:57 < Dhruv0> 04:52 < Not-fc45> [MCPP] RobertLeahy pushed 1 commit to master [+0/-0/±1] http://git.io/862VOA 04:52 < Not-fc45> [MCPP] RobertLeahy 2b9223a - Update LICENSE.txt - Unlicense 04:52 < dx> HEH 05:06 * dx just caught up with the conversation above, realizes that this "HEH" was slightly inappropriate 05:06 < enchilado> I don't think it was inappropriate 05:06 < enchilado> I think it's hilarious 05:07 < enchilado> Deserved a couple more "EH"s on the end, perhaps 05:08 < dx> ehhh, well, i mean, it wasn't something as trivial as what i thought when i said it 05:21 < dx> also, you guys haven't focused enough on the most important part: calling the parents of an arrogant 14 year old kid who can't code, wants to create a post-bukkit replacement server by stealing code of other people, claiming it as his own, then denying that any of that ever happened... and taking donations for that huge lie. 09:42 < Not-fc45> [fNbt] fragmer pushed 2 commits to master [+1/-1/±5] http://git.io/0z37IQ 09:42 < Not-fc45> [fNbt] fragmer 5e6ad2f - Improved consistency of argument order in the API. Renamed SerializerOptions to ConversionOptions. 09:42 < Not-fc45> [fNbt] fragmer 2f44530 - Continuing work on DynamicConverter 13:26 < yawkat> is any part of the team packet being json-encoded in 1.8? 13:27 < yawkat> I am getting a json decode error when I send them but can't find anything json-related in the doc 13:51 < yawkat> ah, looks like it was display name in ping list packet and not scoreboard 14:38 < SopaXorzTaker> hello? 14:39 < SopaXorzTaker> need help 14:39 <+sadimusi> hi 14:39 < SopaXorzTaker> so, did anyone implement a server in python 14:39 <+sadimusi> there's bravo but it's incomplete and probably quite out of date 14:41 <+sadimusi> at this point there is no complete server in any language… 14:43 < SopaXorzTaker> oh! 14:44 < SopaXorzTaker> who knows minecraft classic protocol then? I try to write my own server, but the game does not understand the chunks 15:02 < Jckf> wiki.vg knows it 17:54 < SopaXorzTaker> Jckf: alreadly did 17:55 < SopaXorzTaker> not even a word about the chunk format 17:57 <+SirCmpwn> the chunk format is pretty simple 17:57 <+SirCmpwn> classic doesn't use chunks in the same sense that modern minecraft does 17:58 <+SirCmpwn> classic has a world of a fixed size and the whole thing is downloaded when you log in 17:58 < SopaXorzTaker> no shoghicp s there yay 17:58 <+SirCmpwn> what? 17:58 < SopaXorzTaker> ah, personal 17:58 < shoghicp> o/ 17:58 < SopaXorzTaker> WAT 17:58 < SopaXorzTaker> okay 17:59 < SopaXorzTaker> SirCmpwn: but what size it uses 17:59 <+SirCmpwn> depends on the server 17:59 < SopaXorzTaker> SirCmpwn: is it a three dimension array 17:59 <+SirCmpwn> the protocol documents how the size of the world is given to you 17:59 < SopaXorzTaker> gzipped 17:59 <+SirCmpwn> a 3 dimensional array is just magic under the covers 17:59 < SopaXorzTaker> SirCmpwn: yes I tried 18:00 <+SirCmpwn> magic being x*width*height+y*height+z or something 18:00 < SopaXorzTaker> it just hangs after sending chunks D: 18:00 <+SirCmpwn> this is the only classic code I have handy: https://github.com/SirCmpwn/RetroCraft 18:01 <+SirCmpwn> I wrote a classic server once, a long time ago, I should try to find it 18:01 < SopaXorzTaker> SirCmpwn: can you just write a gist about chunk format please 18:01 <+SirCmpwn> no, fuck off 18:01 < SopaXorzTaker> SirCmpwn: i want just to do it 18:02 < SopaXorzTaker> SirCmpwn: :< 18:02 < shoghicp> so lovely :3 18:02 < SopaXorzTaker> shoghicp: people in #dogecoin use them :> 18:03 < SopaXorzTaker> SirCmpwn: AHA! https://github.com/SirCmpwn/RetroCraft/blob/master/RetroCraft/ChunkHelper.cs 18:03 <+SirCmpwn> this encodes a modern chunk data packet 18:04 <+SirCmpwn> you want this: https://github.com/SirCmpwn/RetroCraft/blob/master/RetroCraft/ClassicHandlers/LevelHandlers.cs 18:07 <+SirCmpwn> SinZ: do you have a copy of that classic server I wrote ages ago? 18:09 < SinZ> which part of the chunk format is this 18:09 < SinZ> in networking or storage 18:10 <+SirCmpwn> ? 18:10 <+SirCmpwn> oh, this file I linked to is on the wire 18:10 <+SirCmpwn> on disk it's a java serialized object 18:10 <+SirCmpwn> fragmer has some code for reading those 18:12 <+SirCmpwn> SinZ: so you don't have a copy of that classic server? 18:12 < SinZ> not the one you made 18:12 <+SirCmpwn> oh well 18:12 <+SirCmpwn> it may be lost forever 18:13 < SopaXorzTaker> meeee meeee meeeee woooooooe 18:16 < SinZ> might want to look into https://github.com/umby24/Hypercube/blob/master/Hypercube_Rewrite/Map/HypercubeMap.cs#L501-L571 though 18:18 <+SirCmpwn> Craft.Net has basic classic support, fwiw, including a full protocol implementation https://github.com/SirCmpwn/Craft.Net/tree/master/source/Classic 18:20 < SinZ> in classic noone really used the vannila format 20:03 <+fragmer> SirCmpwn, looking for Classic-related info? I'd be happy to help 20:03 < jython234[ping]> Heh classic 20:04 <+SirCmpwn> "SopaXorzTaker" is who you want to talk to 20:04 <+SirCmpwn> I directed him to you. 20:04 <+fragmer> Ah ok. Haven't heard from them yet. 23:50 < woder> did they change how chunk coords work with negative values? I get -64.856/16 = -4.05 minecraft client gives me -5, anyone know what its doing? --- Day changed dim. sept. 21 2014 02:02 <+Amaranth> woder: Remember the negative side starts at -1, chunk 0 is 0-15 02:04 <+Amaranth> Although in this case it appears you are doing -64/16 and the client is doing -65/16 actually 02:04 <+Amaranth> So forget what I said before 02:28 < Not-fc45> [fNbt] fragmer pushed 1 commit to master [+0/-0/±3] http://git.io/uN67sQ 02:28 < Not-fc45> [fNbt] fragmer bcea536 - Implemented serialization of Array and IList properties in DynamicConverter 02:38 < woder> Amaranth: do you have any idea what could do that? :c 02:38 <+Amaranth> The client rounding instead of flooring? 02:39 < woder> would you happy to know what direction it rounds? (down?) 02:39 < woder> *happen 02:41 < Jckf> Does this belong on the wiki somewhere? http://www.jckf.no/minecraft/mcpbrowser/?mc=1.7.10 02:46 < dx> Jckf: is this MCP deobfuscation? 02:46 < dx> ...derp nevermind, says that in the url and title 02:47 < Jckf> ;) 02:47 < dx> the name of the github repo confused me, thought it was like bukkit's mc-dev 02:48 <+md_5> Jckf https://github.com/Jckf/mc-dev <--- Dont put that on github. MCP will get annoyed 02:48 < dx> yeah not to mention you don't have rights to that code... 02:48 <+md_5> License and terms of use. 02:48 <+md_5> You are NOT allowed to: 02:48 <+md_5> - Release the decompiled source code of Minecraft in any way. 02:48 <+md_5> ^^ from the MCP license 02:49 < Jckf> It's so usefull though =| 02:49 < dx> that's a terrible excuse to break a license :P 02:49 < dx> find some other way 02:50 < Jckf> Displaying it in the web application doesn't count as distribution, does it? You're only talking about the repo? 02:50 < dx> better ask MCP about that 02:51 < Jckf> Will do 02:51 < Jckf> FOr now, forget the link 02:51 < Jckf> ;) 02:51 < dx> oh. the source code is down there... 02:51 < dx> that's definitely not ok 02:51 < Jckf> Yes, it's fetched from GitHub 02:52 * Jckf erases everyone's memories 02:52 < dx> Jckf: how about a version of this thing that is compiled to html files by running a script locally, referencing the locally decompiled mcp source? 02:54 < dx> https://github.com/bukkit/mc-dev/ <--- how does this thing still work 02:55 < Jckf> dx: I'm thinking; make the repo private, clone it on the web server, fetch files locally instead of over HTTP 02:55 < dx> Jckf: in that case you don't even need a repo in github 02:56 < Jckf> As far as you know once it's private, I don't have one ;) 02:56 < dx> Jckf: still, displaying the whole source of each file inside your browser is not ok 02:56 < Jckf> Anyone can download MCP and get the same files though =/ 02:56 < dx> yes 02:57 < dx> 21:48 <+md_5> You are NOT allowed to: 02:57 < dx> 21:48 <+md_5> - Release the decompiled source code of Minecraft in any way. 02:57 < dx> just don't release 02:57 <+md_5> all your browser does is show the method / field signatures 02:57 <+md_5> you can do that without the source 02:57 < dx> yeah that's probably acceptable 02:57 < Jckf> Referencing the source is good for figuring out what a method does 02:58 < dx> yes ok that's cool, you just can't do it legally 02:59 < dx> (meanwhile, handwaving mojang's copyright) 03:00 < dx> well, that part of the MCP license is just a superset of the "do not distribute jars" part of the EULA 03:00 <+md_5> make your program standalone or w/e 03:00 <+md_5> putting it on a web page is a bad idea though 03:00 < dx> yep 03:02 < dx> EULA says "let other people get access to anything we‘ve made in a way that is unfair or unreasonable". yes that's pretty high quality legal text that is totally not vague 03:02 <+md_5> this isnt about Mojang at all 03:02 <+md_5> this is about MCP 03:02 < dx> yeah i know 03:03 < Jckf> Repo made private, and source code view disabled. 03:03 < Jckf> Awaiting reply from #mcp 03:05 < Jckf> I could display the decompiled code though. That's made with Fernflower alone 03:05 < dx> no 03:05 < Jckf> Just not the deobfuscated code 03:05 <+md_5> yes 03:05 < dx> md_5: but mojang... 03:06 < Jckf> Mojang made a statement on Bukkit.org that decompiled code is not their property, iirc 03:06 < Jckf> (which was weird) 03:06 <+md_5> meh mojang hasnt gotten pissy at anyone in the past 03:06 <+md_5> MCP on the other hand has 03:06 < dx> heh 03:06 < dx> Jckf: that makes sense, it's how they say the DMCA is invalid 03:07 < Jckf> From a "we want to stop the madness" perspective, yes 03:07 < Jckf> But everyone knows it's their property =P 03:08 < dx> you could argue the decompiler creates something entirely new 03:08 < dx> but meh 03:08 < Jckf> "It's not decompiling.. It's automatic reverse engineering" 03:08 < Jckf> Hue hue 03:08 < dx> hahah 03:10 < dx> when i grow up i want to be a lawyer, so i can go back in my irc logs and see how much bullshit i've said 03:11 < Jckf> Looking back at who you used to be and realizing you were an idiot is usually just painfull =P 03:11 < Jckf> We've all been there though 03:12 < Jckf> Hopefully 03:13 < Jckf> I like to think that people are intelligent and self-reflected 04:40 < Aaron1011> The 'color' field in the Teams packet seems to be redundant 04:40 < Aaron1011> Isn't that the same thing as prefix? 04:40 < Aaron1011> http://wiki.vg/Protocol#Update_Score 15:30 < UltimateBudgie> Ok, so after encryption, all the packet is encrypted including the length right? Is the length value the length of the unencrypted or encrypted packet data? 15:31 < shoghicp> all the stream is encrypted 15:31 < shoghicp> also, the length would be the same, encryption is the last step 15:34 < UltimateBudgie> Ok awesome! :D 15:34 < UltimateBudgie> That's what I think I'm doing 15:50 < SopaXorzTaker> MrARM: hey autograph bro 15:50 < SopaXorzTaker> shoghicp: HIIIIIIIIIIIIIIIIIIIIIIIIIii 15:50 < SopaXorzTaker> lol 15:50 < SopaXorzTaker> :D 15:51 < shoghicp> please do not ping me for those things 15:51 < SinZ> that is an easy way to just be kicked/banned from here 15:52 < shoghicp> that's exactly why that happened elsewhere ;) 16:26 < shoghicp> I'm having an absurd amount of lag when I spawn the client in 1.8 16:26 < shoghicp> I send a flat world 16:27 < shoghicp> but the client can't handle more than 8-10, and blocks completely 16:27 < Thinkofdeath> Did you compress the packets? 16:27 < shoghicp> Yes, tested compressing and not compressing 16:27 < shoghicp> well, they *should* 16:28 < shoghicp> let me check if the value is getting to that thread right 16:44 < shoghicp> well... something is wrong here 16:54 < shoghicp> there was a packet confusion, the client-side packet was sent instead of the server-side one 16:55 < shoghicp> (for player movement) 17:31 < woder> for the chunk data, the block section is a unsigned short array of the length of the number of blocks in the chunkÉ 17:31 < woder> ? 20:44 < gurun> Evening guys. I'm looking for a server written in C#. Any pointers? 20:54 < cindy_k> there's a project that people have been working on 20:55 < cindy_k> https://github.com/SirCmpwn/Craft.Net 20:55 * SirCmpwn peeks in 20:57 < cindy_k> here 20:57 <+SirCmpwn> C# does have pointers 20:58 <+SirCmpwn> also https://xkcd.com/138/ 20:58 < cindy_k> O.o delegates 20:58 < cindy_k> I like my *'s 20:58 <+SirCmpwn> no, C# has actual pointers with * and & and such 20:59 <+SirCmpwn> example: https://github.com/SirCmpwn/Craft.Net/blob/master/source/Craft.Net.Anvil/Level.cs#L170-L171 20:59 <+SirCmpwn> also: https://github.com/SirCmpwn/Craft.Net/blob/master/source/Craft.Net.Common/MathHelper.cs#L164 21:02 < gurun> Yep found Craft.Net. But i should have been a bit more specific.. I'm looking for PE servers. 21:02 <+SirCmpwn> yes, you definitely should have been more specific 21:03 < gurun> Noticed that it seems to be built on RakNet. 21:03 <+SirCmpwn> Craft.Net will accept a pull request with PE support (already has Classic support) 21:03 <+SirCmpwn> but I don't know of any existing C# implementations 21:03 < cindy_k> SirCmpwn :) caught by not keeping up with C# additions. I started C# with 2003 and they didn't have them available then 21:03 < cindy_k> but 2003 was bad, they were missing a lot of stuff 21:04 <+SirCmpwn> cindy_k: C# has had pointers for a very long time 21:04 < gurun> Yeah, sorry. Didn't know that it was different protocols. Just realized that when I scrolled further down the page. Never got that far. To eager to get started. Though I'd have something to do during the weekend, and build a server for my kid. 21:04 < shoghicp> gurun: I don't think there are C# implementation 21:04 < shoghicp> s* 21:04 < shoghicp> There is PocketMine in PHP, then BlockServer in Java 21:04 <+SirCmpwn> gurun: that's probably not a weekend project 21:05 * cindy_k has been stuck in the land for 1996 compilers for a long time. 21:05 < shoghicp> BlockServer ports most of the protocol things from PocketMine, though ;) 21:05 < cindy_k> I have free'd myself! I will never have to open visual studio 6 again 21:05 <+SirCmpwn> cindy_k: pointers were present in C# 1.0, 1999 21:05 * SirCmpwn just double checked 21:06 < gurun> yeah, pointers are a great way to work in an unsafe context. In the literal sense of the word :-) 21:06 < shoghicp> gurun: If you start the project and have protocol questions, ask me 21:06 <+SirCmpwn> the last person born before C# had pointers is now a sophomore in high school 21:08 < gurun> shoghicp, thanks. I'll get started right away. I'll check out PocketMine and BlockServer. Thinking that I can rip some packet definitions from them to get started fast. 21:09 < shoghicp> I'm the PocketMine-MP maintainer ;) 21:09 < gurun> oh, great. 21:10 < gurun> i SierCmpwn is also here, so maybe I can contribute a PE stack to Craft.Net if needed. 21:11 <+SirCmpwn> "SierCmpwn" is a new one 21:14 < gurun> ouch. Now I see .. It's not just protocol hacking .. you have to build the whole world shit too. Eh. 21:14 <+SirCmpwn> which is why Craft.Net is probably a good starting point 21:14 <+SirCmpwn> a lot of the non-protocol infrastructure is in place, too 21:16 <+AndrewPH> sirecampaign 21:18 < gurun> yeah, so I could clone the server from that, use all the physics and all, and then focus on implementing the protocol. Is the maps and all same between PE and the .. real MC? 21:22 <+SirCmpwn> no clue, I haven't done anything with PE 21:24 < gurun> Just reading about it. It is different. 21:24 < shoghicp> gurun: yeah, different 21:24 < shoghicp> TCP vs UDP + RakNet 21:24 < shoghicp> protocol is different 21:24 < shoghicp> different world format and block order 21:24 < shoghicp> little endian NBT instead of big endian 21:28 < Aragas> yep. Like more new kool code 21:28 <+SirCmpwn> that's not to say that a lot of code reuse is possible 21:28 < gurun> So in your code i notice you have an importer. What is it importing FROM ? 21:28 < Aragas> and why not use main protocol? 21:28 < Aragas> so lame 21:28 <+SirCmpwn> fragmer: does fnbt support little endian nbt? 21:29 < shoghicp> most of the things can be reused with minor modifications 21:29 < gurun> i can be pretty sure that they choose to store in BE to make sure that it is read/write in network order. To avoid translation. 21:30 < shoghicp> that's PC 21:30 < shoghicp> PE does it in LE 21:30 < shoghicp> or BE 21:30 < shoghicp> or a mix! 21:30 < shoghicp> \o/ Minecraft \o/ 21:30 < gurun> even better. But by principle going over network should be BE. 21:31 < gurun> mix is the worst. 21:31 < gurun> maybe they wrote it TDD but without the part about refactoring :-P 21:31 <+fragmer> SirCmpwn: yes it does 21:33 <+fragmer> Endianness can be set per-file (yourFile.BigEndian = true/false) or a default can be set per-AppDomain (NbtFile.BigEndianByDefault = true/false) 21:33 <+fragmer> BigEndianByDefault itself defaults to 'true' 21:33 < gurun> Ok, so PocketMine has a bit of a pluggable design for loading worlds. Nice. 21:33 < shoghicp> Anvil + McRegion :) 21:33 < shoghicp> McRegion preferred, since it is the same block order 21:34 < shoghicp> sending them to the client is faster 21:41 < gurun> i can't find any unit-tests for PocketMine.. was hoping for some sample data for worlds and stuff. Is it not in there.. or you don't do that stuff :-) 21:41 <+SirCmpwn> well, it is written in PHP 21:42 < shoghicp> gurun: we had to remove everything we had 21:42 < shoghicp> got Travis-CI working again a few days ago 21:45 < gurun> so, if you go back in history i'll find stuff right? 21:46 < shoghicp> only basic stuff with binary read/write and really bad things 21:46 < shoghicp> you've to go really far in the history 21:46 < shoghicp> before the current version was written 21:46 < gurun> ok. i was looking more for sample maps and stuff like. So i have something to .. send. 21:47 < gurun> but i guess i can google that too. should be out there. 21:47 < shoghicp> McRegion / Anvil worlds are the Minecraft ones :) 21:49 < gurun> My son went online gaming today .. it's crappy because we don't have any servers in sweden it seems. But i did notice that they had some seriously custom shit going on these servers. But is it safe to assume that PE maps and stuff aren't as capable as the real MC? 21:49 <+AndrewPH> Now that's what I call a scientific evaluation 21:50 < shoghicp> well, the 0.9 update added interesting things 21:50 < shoghicp> like infinite worlds, yay 21:50 < shoghicp> but you don't have redstone things 21:50 < shoghicp> nor nether 21:50 < shoghicp> nor all the PC movs 21:50 < shoghicp> they want to add all of that 21:51 < shoghicp> modding is not complex as it is on MC: PC 21:51 < shoghicp> and it's done in Javascript... 21:51 < shoghicp> servers can do more, there are awesome plugins 21:51 < shoghicp> and minigame servers, of course 21:51 < gurun> basically .... i just want to import some larger OTS worlds for my son to practice his TNT skills on. I'll be his hero for ever :-) 21:52 < shoghicp> ots? 21:52 < gurun> off-the-shelf 21:52 < gurun> ready made 21:52 < shoghicp> oh! 21:53 < shoghicp> also, keep an eye on PC-only blocks 21:53 < gurun> but i realized that it could be fun .. to actually code the server for it. 21:53 < shoghicp> as they'll crash the MCPE client 21:53 < gurun> PC only blocks .. ok. 21:53 < gurun> i wonder.. 21:53 < shoghicp> oh, you reminded me that I have to port TNT explosions from the old version 21:54 < gurun> when they run this on the PE clients.. do they use the exact same stuff as on the server, just running hosted on the device? 21:54 < shoghicp> williamtdr: do you have the block crash list? 21:54 < shoghicp> gurun: no, they use the embedded server 21:54 < shoghicp> but you can also run PocketMine on Android 21:54 < shoghicp> there is an app on the Play Store, free 21:55 < gurun> ok. so they have different implementations for the server and .. clients. 21:55 < shoghicp> it's in Minecraft: PE itself 21:55 < shoghicp> when you play on single player, it runs the server in the background 21:56 < gurun> yeah, but embedded or not. It has to share 80% of the stuff. Never mind .. who can know :-) 21:56 < gurun> I'm thinking .. 21:57 < gurun> Looking at your code. I don't know PHP that well. Just coded extensions for Kayako (trouble ticketing). And I was so scared off by the code I thought I would never touch that stuff again. 21:58 < gurun> But .. that PHP code actually looks a lot like structured programming. I have storm installed already. Maybe I should just go with that. 21:58 < shoghicp> well, this is different than some PHP around there that makes me cringe 21:58 < gurun> yeah, it looks like .. code. 21:59 < shoghicp> you even have multithreading here, heh 21:59 < gurun> haha 21:59 < gurun> i get the same sensation as when i discovered that NodeJS wasn't another ugly plugin to jQuery. Felt like an idiot. 22:02 < shoghicp> well, I'll leave you looking around 22:03 < shoghicp> ping me if you have questions, I'll reply later 22:08 < gurun> yep, thanks 22:37 < Grobat> Hey i'm trying to write my own server and i have trouble to spawn other player entitys. I'm sending an Spawn Player (0x0C) packet but nothing happens and i'm pretty sure that my packet is valid. any idea? (mc: 1.8) 23:01 < gurun> shoghicp: FULL_CHUNK_DATA_PACKET .. isn't part of the wiki. Is that for sending .. a chunk of a world? 23:02 < shoghicp> gurun: The wiki was generated automatically using PocketBurger, and it's a bit broken on 0.9 23:03 < shoghicp> its structure: 23:04 < shoghicp> two le 32-bit int, chunkX and chunkZ 23:04 < shoghicp> 16x128x16 blockIds (byte) 23:04 < shoghicp> 16x128x16 blockData (half byte) 23:04 < shoghicp> 16x128x16 blockLight (half byte) 23:04 < shoghicp> 16x128x16 skyLight (half byte) 23:05 < shoghicp> then, NBT data of tile entities than need extra data to spawn, if any 23:05 < shoghicp> like signs or chests 23:05 < shoghicp> all of that is compressed using DEFLATE 23:05 < shoghicp> and yeah, chunkX and chunkZ is inside the compressed data 23:06 < shoghicp> block order is like on McRegion 23:08 < shoghicp> oh, I forgot 23:08 < shoghicp> before the NBT, after skyLight 23:08 < shoghicp> 256 bytes of biomeId 23:09 < shoghicp> and 256 int of grassColor (?RGB) 23:09 < shoghicp> gurun: https://github.com/PocketMine/PocketMine-MP/blob/master/src/pocketmine/level/format/mcregion/McRegion.php#L110-L141 23:12 < gurun> shoghicp: Ok. Understand. So the protocol you have implemented only seems to use that package for actual data upload. Is that correct? All the other chunk messages seems to have .. dissapeared on the way. 23:12 < shoghicp> yep, no ChunkDataPacket nor ChunkUnloadpPacket 23:12 < shoghicp> it's still in the code, but Johan (@jbenrhardsson on Twitter) confirmed that it does nothing in the code 23:13 < gurun> Oh, great. 23:13 < shoghicp> nothing useful, it can cause crashes if sent 23:13 < shoghicp> clients spawn when 56 chunks are received 23:13 < gurun> So. Another quick question (got the chunking now. Know where to look). 23:13 < shoghicp> and maintain a list of 96 chunks, at least 23:13 < shoghicp> they can handle more, but they can unload them without telling the server 23:13 < gurun> The first real thing after "handshake/etc" seems to be "Start game". It contains a seed. 23:14 < gurun> what is the seed actually used for? 23:14 < shoghicp> client does nothing with it 23:14 < shoghicp> it used to generate the world 23:14 < shoghicp> then the server sent a diff of the changes 23:14 < shoghicp> you can send whatever you want there :) 23:15 < shoghicp> hmm, I'll tell him to remove that since it's no longer used 23:15 <+Amaranth> 56 and 96? Where do those numbers come from? 23:15 < gurun> ok. too bad. I was kind of hoping that it would be a quick way to let the client take care of the world-generate and be up and running fast. 23:15 <+Amaranth> The PC version does your chunk and a radius out from it 23:15 < gurun> 56 & 96. 23:15 < shoghicp> Amaranth: lots of testing, then talking with the devs 23:15 < shoghicp> MCPE uses circular chunk sending 23:15 < gurun> It is the current going rate in yen for the Mojang stock? 23:16 <+Amaranth> Ok, circles make sense 23:16 < shoghicp> https://botbot.me/freenode/mcpedevs/2014-08-12/?msg=19576599&page=2 23:16 < gurun> Ok, so a developer running around in circles appear to me .. as lack of QA resources. 23:16 <+Amaranth> I wish the PC did circles too although it makes some of the logic more complicated it would save a lot of bandwidth and GPU time 23:16 < shoghicp> logs from when that was said :) 23:19 < shoghicp> Amaranth: well, at least they ported the optimizations they did on MCPE to PC 23:19 <+Amaranth> One of them 23:19 <+Amaranth> And I'm not so sure it was even the same algorithm just the same high level idea 23:20 < shoghicp> tommo did a blog post about that a few weeks ago 23:20 < gurun> yeah, thanks for the log. Interesting reading .. especially the part about saying something like "we are about to throw all the old shit out the window and start from scratch. It is really cool". Not so cool if you implement it using sniffers :-) 23:21 <+Amaranth> shoghicp: I'm aware 23:21 < shoghicp> ok :) 23:21 <+Amaranth> I discussed it with him on reddit trying to get details and tell him my idea to see if they were the same 23:21 < gurun> they seem cool about people hacking the protocol though,. Can't say the same for when we hacked ICQ. 23:21 < shoghicp> gurun: I'm expecting it. I can't have all the inventory on the server side without it it glitching the hotbar 23:21 <+Amaranth> He explained it then and then wrote a blog post to explain it in more detail 23:22 < shoghicp> gurun: haha, I reported them several type errors 23:22 < shoghicp> or weird behavior like the client turning to a server 23:22 < shoghicp> and sending server-only packets 23:22 <+Amaranth> Hmm, my rustc appears to be stuck in an infinite loop or something 23:23 < gurun> so. The tool you had for stealing the info .. PocketBurger. It doesn't sound like a sniffer. Sounds like it is reading .. files from the client or something. Is that correct or just an illusion. I don't know Android really. 23:24 < shoghicp> it reads ARM assembly dumps 23:24 < shoghicp> from a .so library 23:24 < gurun> oh. so decompiler basically 23:24 < shoghicp> nope, it needs it decompiled :) 23:24 < shoghicp> and it's all hacky code 23:24 < shoghicp> it helps updating things fast 23:25 < shoghicp> but won't tell you field names 23:25 < shoghicp> or complex packets 23:25 < shoghicp> and on 0.9, all the info about int/float was removed 23:25 < shoghicp> now they write bits directly 23:25 < shoghicp> there is a Wireshark filter, but it's a bit buggy 23:26 < shoghicp> then there is a plugin for PocketMine-MP that logs the PE protocol, useful to research weird things and client crashes 23:26 < gurun> isn't applications on android written in java? 23:26 < shoghicp> only the wrapper is written in Java 23:26 < shoghicp> MCPE for Android and iOS share most of the codebase 23:27 < gurun> oh, so you can have native stuff on android. sorry for my ignorance. would imagine that was the last thing i'd see. 23:27 < gurun> just thinking .. that 23:27 < gurun> getting the app in java and reverse engineer that (illegal for sure) would be easier. 23:28 < gurun> but then it doesn't really exist. 23:28 < gurun> So, where does all the naming and stuff come from. Your head or? 23:28 < shoghicp> well, they are OK with me using PocketBurger and looking at the assembly, if it is for getting the protocol info 23:29 < shoghicp> nope, calls on assembly 23:29 < shoghicp> Android has some debug info 23:29 < shoghicp> it contains things like FullChunkDataPacket::read() 23:29 < shoghicp> FullChunkDataPacket::write() 23:30 < gurun> oh, ok. makes sense then. but no named structures that you can extract i guess? 23:30 < shoghicp> only other calls and bit length 23:30 < shoghicp> http://p.wiki.vg/0.8.0.html#packets 23:30 < shoghicp> that is from 0.8.0 23:31 < shoghicp> but most of those fields are just writeBytes() calls now 23:31 < shoghicp> so you don't know if it is an int/float, you've to guess 23:31 < shoghicp> at least it's similar to the old PC protocol 23:31 < shoghicp> before all the varInt stuff 23:32 < gurun> does it work with 09 alpha? 23:32 < gurun> i mean the server 23:32 < shoghicp> pocketmine? 23:32 < gurun> yes 23:32 < shoghicp> yeah, 1.4 23:32 < shoghicp> get the beta build 23:32 < shoghicp> or the development build 23:32 < gurun> ok, good. 23:32 < shoghicp> there are some rough things, since most of the code has been rewritten 23:33 < gurun> do you auto-generate the code for the packages or .. write them by hand. thinking that the burger tool .. could be joined by some cheese to generate an XML file or similar. 23:33 < gurun> .. so i can steal that and just generate my stuff :-)¨ 23:33 < shoghicp> I do it by hand, there are a lot of things wrong 23:34 < gurun> maybe we should join force on that anyway. Document the protocol in like a structured format. With names and stuff... and then it can be used to generate the stuff needed. Like the wiki-page.' 23:34 < gurun> so edit the XML to update instead of hand enditing wiki and classes. 23:35 < shoghicp> yeah, PocketBurger did that, it had a markdown generator 23:35 < gurun> and java, php, whatever can do that. 23:35 < shoghicp> it produces json 23:35 < shoghicp> and it's compatible with Hamburglar and BurgerVitrine 23:35 < gurun> yeah, but the automatic output you have, is still not with names for the fields and stuff. 23:35 < gurun> that needs to be added, right? 23:35 < gurun> by hand 23:35 < shoghicp> you can't do that directly :) 23:35 < shoghicp> there is no info for that 23:36 < gurun> yeah, so that is what i mean. 23:36 < gurun> use burger to get the stuff out, and then handedit XML. And from that generate both specs and code. 23:36 < shoghicp> I can get better things from the PM code now ;) 23:37 < gurun> I once wrote an X3D player (VR plugin for browsers). I took the spec and applied regexp to it .. and it generated the whole codebase. It would have taken me weeks otherwise. 23:37 < shoghicp> the packet class structure is straightforward 23:37 < shoghicp> field declaration 23:37 < shoghicp> then encode() 23:37 < shoghicp> and decode() 23:38 < gurun> yeah, you had a simple pattern. nothing cryptic about it. 23:38 < gurun> the only thing i would have changed in your source .. is perhaps making sure that the classes could identify themselves. 23:38 < gurun> (the id i mean) 23:38 < shoghicp> hmm, what do you mean? 23:39 < shoghicp> oh, id number? 23:39 < shoghicp> https://github.com/PocketMine/PocketMine-MP/blob/master/src/pocketmine/network/protocol/Info.php 23:39 < gurun> get rid of the switch in https://github.com/PocketMine/PocketMine-MP/blob/master/src/pocketmine/network/RakLibInterface.php 23:40 < shoghicp> /TODO: more efficient selection based on range 23:40 < gurun> yes i saw the info.php. That is why i started asking about the chunk-data. 23:40 < shoghicp> I had something like that before 23:40 < shoghicp> a parser that created the class 23:40 < shoghicp> but it was slower than this 23:41 < gurun> the good thing about info.php is that .. well, it was easy to get an overview of the protocol :-) 23:41 < gurun> one thing i learned in java.. was to ALWAYS reuse package containers. as much as possible. 23:42 < shoghicp> https://github.com/nikic/PHP-Parser/ 23:42 < shoghicp> if you want to do it using an AST instead of regular expressions :) 23:43 < gurun> nah 23:43 < gurun> it's not like that .. 23:44 < gurun> :-) 23:44 < shoghicp> https://github.com/PocketMine/PocketMine-MP/blob/master/src/pocketmine/network/protocol/RotateHeadPacket.php 23:44 < shoghicp> those packets will be tricky to parse :) 23:44 < shoghicp> most movement/rotation packets are sent as a list of entities 23:45 < shoghicp> instead of multiple packets 23:45 < gurun> $this->reset(); 23:45 < gurun> is that .. reseting the buffer .. for reuse? 23:45 < shoghicp> had several calls for that because of old packets, I guess I can remove that now 23:45 < shoghicp> plugins can modify and mess up packets 23:46 < shoghicp> oh, and before, queues were in the same thread 23:46 < shoghicp> now all the RakNet stuff is on a different thread and library, RakLib 23:46 < gurun> so, for packages with dynamic length like that, it's difficult to be effecient. 23:47 < shoghicp> you can just detect that and write some pseudocode 23:47 < shoghicp> like old Burger did 23:47 < gurun> http://msdn.microsoft.com/en-us/library/windows/desktop/aa365198(v=vs.85).aspx 23:48 < gurun> that is a saver for threading on windows. Do you know if PHP is capable of using that? 23:48 < shoghicp> I use http://pthreads.org/ on PHP 23:48 < shoghicp> they fixed most of the bugs I reported, so it's really nice now :) 23:49 < shoghicp> also, this has to run on Windows, Linux, MacOS, Android and iOS 23:49 < gurun> Java didn't have that before they released the new IO packages that used select. 23:50 < gurun> yeah, but performance is always hurt. Remembers doing this in Perl early on with p/green threads and all (too old to remember details). And then we learned how to use select and stuff.. and then you could code again., 23:51 < gurun> Doing highperformance multi-users scenarios for Java was never really practical before that. 23:51 < shoghicp> THis pthreads extension had a Windows memory leak of about 30MB/s 23:51 < gurun> haha 23:51 < gurun> fantastic :-) 23:51 < shoghicp> it's fixed now, Windows stuff :) 23:51 < shoghicp> so now I can use the OOP way, instead of IPC sockets! 23:52 < gurun> well, php looks easy enough to work with. 23:52 < gurun> if you have a good editor that is. 23:53 < shoghicp> PhpStorm <3 23:53 < shoghicp> We have an open-source license for the project :) 23:53 < gurun> shit, don't know where any of us would be without jetbrains these days. I would for sure not work with Visual Studio.. can't handle it without resharper. 23:54 < gurun> i use their java and php editors in express edition. Has everything i want anyway since i don't do a lot of GUI shit these days. 23:54 < shoghicp> I did most of the things using a plain editor with syntax coloring :) 23:54 < shoghicp> then when I had to rewrite things, I started using an IDE 23:55 < shoghicp> well, I like the idea of generating autodocs from the code 23:56 < gurun> hehe .. 23:56 < gurun> well .. now i understand what you mean. 23:56 < shoghicp> I'll try to maintain the structure the same >:) 23:56 < gurun> let the code speak. 23:57 < gurun> maybe i should use that parser then .. and parse your code.. and generate C# from that. 23:57 < gurun> now it makes perfect sense. 23:58 < shoghicp> PlaceBlockPacket is not used in MCPE, but it's on the code 23:58 < gurun> i was kind of hoping that i could steal it from the Java code.. but they seem to have not gotn very far.. 23:58 < shoghicp> SetEntityLinkPacket is not implemented, yet 23:58 < shoghicp> and another one 23:58 < shoghicp> gurun: they ported RakLib (RakNet protocol in PHP) to Java 23:59 < gurun> yeah, but that is like .. an hours work, isn't it? 23:59 < shoghicp> then used pocketmine structure of minecraft packets 23:59 < shoghicp> it's easy to port OOP PHP code to Java --- Day changed lun. sept. 22 2014 00:00 < shoghicp> compare https://github.com/PocketMine/PocketMine-MP/blob/master/src/pocketmine/network/protocol/LoginPacket.php with https://github.com/PocketMine/PocketMine-MP/blob/master/src/pocketmine/network/protocol/LoginPacket.php 00:00 < shoghicp> and https://github.com/BlockServerProject/BlockServer/blob/master/src/java/org/blockserver/network/raknet/AcknowledgePacket.java with https://github.com/PocketMine/RakLib/blob/master/protocol/AcknowledgePacket.php 00:03 < shoghicp> well, I've to go :) 00:03 < shoghicp> good luck with the parser 00:11 < gurun> shoghicp: yes .. night. And thanks for the help. 00:12 < gurun> shoghicp: You will find the code here.. https://github.com/NiclasOlofsson/MiNET 14:32 < Aragas> I have something strange. So. i'm tryin' to implement compression. Can be PacketLength=0 and dataLength=1? lol 16:05 < Aragas> This isn't even funny. Last packet that i read correct is LoginSuccess 16:05 < shoghicp> encryption? 16:05 < Aragas> disabled 16:06 < Aragas> only compression 16:06 < shoghicp> hmm, weird 16:07 < Aragas> i always have only weird problems 16:07 < shoghicp> raw packet dump? 16:07 < Aragas> But this is a new record 16:08 < Aragas> Nope. The probles is, i cant read these packets. I get PacketLength=0 and DataLength=1 16:08 < shoghicp> o.O 16:08 < shoghicp> so, first field 0, second 1? 16:08 < Aragas> Yep. Lol 16:09 < Aragas> I read them as varInts, so all is correct 16:09 < shoghicp> :s 16:10 < shoghicp> I've class now, if you get dumps I'll be interested :) 16:11 < Aragas> Wanna the read methode? I wanna upload it on gitHub only when i'm done with this shiet 16:16 < shoghicp> Yeah, create a gist or something 16:16 < shoghicp> I'll get back to you in an hour or so, turning on powersave mode :) 16:18 < Aragas> http://pastebin.com/7MNy17sJ 16:22 < shoghicp> "Pastebin.com is under heavy load right now :(" 16:23 < Aragas> okay, gist then 16:23 < Aragas> https://gist.github.com/Aragas/448f954e4e1941176130 16:24 < shoghicp> OnDataReceived(id, _stream.ReadPacket(length - 1, 0)); 16:24 < shoghicp> id length can be more than 1 :) 16:24 < shoghicp> (not right now, but it's a varInt) 16:25 < Aragas> Yep 16:25 < Aragas> This is more a debug code 16:25 < shoghicp> that part seems ok 16:26 < shoghicp> need a packet dump D: 16:26 < Aragas> I tried to jut copy glowstone logic, but nope 16:27 < Aragas> Yep. But donno what to use. Anything can dump 1.8 packets yet>? 16:28 < shoghicp> Aragas: client itself? wireshark? tcpdump? 16:29 < shoghicp> you are not using encryption :) 16:29 < Aragas> ah, yes, wireshark 16:43 < Aragas> okay, i think i cant capture my local server 17:05 < Aragas> shoghicp: https://dl.dropboxusercontent.com/u/58476180/Dump.pcapng 17:05 < Aragas> This? 17:05 < shoghicp> could work :) 17:06 < shoghicp> I can't open it right now 17:06 < shoghicp> will do it in 20 minutes 17:06 < Aragas> Okay 17:25 < shoghicp> Are you the server or client? 17:25 < Aragas> both 17:25 < Aragas> but i'm debuggin' a client 17:28 < shoghicp> Aragas: what is the compression threshold? 256, the default? 17:28 < shoghicp> I think you are sending the set compression packet using the compressed format 17:28 < shoghicp> instead of using the normal packet format 17:30 < Aragas> 256 17:30 < Aragas> wait, i'm the client 17:30 < Aragas> i don't send setCompression, correct? 17:31 < shoghicp> I don't think so 17:31 < shoghicp> wait 17:31 < shoghicp> server is right 17:31 < shoghicp> skipped the packet id :) 17:31 < Aragas> ? 17:32 < shoghicp> you couldn't get past... which packet? 17:32 < Aragas> loginSuccess 17:34 < shoghicp> Aragas: you are one byte after the start of the next packet 17:34 < shoghicp> maybe you read too many bytes? 17:34 < Aragas> hm 17:34 < Aragas> ill check that 17:36 < Aragas> lol, it worked