23:54 < SevereOverfl0w> Gj on Netherrack :) Looks really cool. 23:54 < Thinkofdeath> Thanks :) 23:54 < SevereOverfl0w> Thinkofdeath: Wish I knew Go well enough to help. Trying to learn currently. 23:55 < SevereOverfl0w> I thought it'd be pretty simple to read in a Varint, how wrong I was. 23:55 < Thinkofdeath> VarInts are part of go's stdlib 23:56 < Thinkofdeath> http://golang.org/pkg/encoding/binary/#PutUvarint 23:56 < SevereOverfl0w> Thinkofdeath: Yup. But it looks like you had to jump through hoops to make them read nicely with the net.Conn type. 23:57 < Thinkofdeath> Its not too bad 23:57 < nickelpro> for the block add bits, would you just add them to the base id or...? 23:57 < Luqman> SevereOverfl0w: this is why i just copied go's implementation :P 23:58 < Thinkofdeath> https://github.com/NetherrackDev/netherrack/blob/master/protocol/connection.go#L887 (the comment is wrong) 23:58 < SevereOverfl0w> Luqman: heh 23:58 < SevereOverfl0w> Thinkofdeath: What's missing from the project so far? 23:59 < barneygale> nickelpro: they represent the 9th through 12th bits, if you imagine block ID to be a 12-bit integer 23:59 < nickelpro> barneygale: I thought that might be the case, thanks 23:59 < Thinkofdeath> SevereOverfl0w: Its been awhile, can't remember :P 23:59 < barneygale> (from the right) --- Day changed sam. nov. 23 2013 00:00 < SevereOverfl0w> Thinkofdeath: Heh. 00:01 < nickelpro> barneygale: By the way, I've based a ton of code off your work, never got around to thanking you, so thank you] 00:01 < SevereOverfl0w> If you finish it up, big servers would be pretty chuffed. A way to save server costs? yes please. 00:01 < barneygale> nickelpro: : 00:01 < barneygale> :]* 00:01 < SevereOverfl0w> Or even little servers. Would cut the costs of running an mc server. 00:02 < Thinkofdeath> Still needs a lot of work and cleaning up and I haven't had much time 00:20 < nickelpro> barneygale: So I assume metadata is block dependent data, block light is the light level of the block, what's skylight? Whether the block sees the sky or not? 00:21 < barneygale> nickelpro: blocklight doesn't refer to the light level of blocks 00:21 < barneygale> it's the level of light generated by nearby luminous blocks (torches, lanturns, etc) 00:21 < barneygale> blocklight: "light from blocks", skylight: "light from the sky" 00:22 < nickelpro> barneygale: And combined they give you total light level? 00:22 < barneygale> they're considered differently because skylight has to travel from heightlimit to the first block immediately below without losing intensity 00:22 < barneygale> nickelpro: the client does things with them 00:23 < barneygale> they have different colours, and skylight isn't rendered as highly when it's night (though the actually value sent in map chunks doesn't change) 00:23 < barneygale> i.e. the values the client receives for skylight are always midday, and you then dim it based on the time of day 00:23 < barneygale> You probably want something like aggregateLight = max(skyLight, blockLight) 00:24 < barneygale> Are you writing a client or a server? 00:24 < nickelpro> barneygale: Makes sense for skylight, do we know what the client does with the block light level? 00:24 < nickelpro> client 00:24 < nickelpro> https://github.com/nickelpro/spock 00:24 < barneygale> You know that light spreads a block at a time, and every time it diminishes in value? 00:25 < nickelpro> yes 00:25 < barneygale> The difference between skylight and blocklight is the "seeds" (i.e. full-brightness blocks) for the first iteration 00:26 < barneygale> with skylight, it iterates down from skylimit until it finds an opaque block. I /think/ it considers air and glass to be transparent and doesn't diminish them 00:26 < barneygale> there may be other blocks too 00:26 < nickelpro> Alright, so the client has to calculate how far a block is from any light sources? 00:26 < barneygale> That gives you a bunch of blocks on the surface that have "15" brightness. You then run the spreading algorithm to determine the skylighting of nearby blocks 00:26 < barneygale> No, your client just needs to render the values its given 00:27 < barneygale> unless you're doing prediction or something? 00:27 < nickelpro> Nope, this isn't even really important, just trying to anticipate a plugin that cared about light levels and providing the simplest API that provides "This is the light level at this block right now" 00:27 < barneygale> ah 00:28 < barneygale> iirc it's just max() of them 00:28 < nickelpro> barneygale: Thanks a bundle :D 00:28 < barneygale> but you may want to render block light with a more red/orange tinge 00:28 < barneygale> and skylight with more white 00:28 < barneygale> I'm not sure how the minecraft client does it, I *think* it does that 00:32 < nickelpro> barneygale: Wait, got lost on one point, can you just max() the two or do you first have to account for time_of_day for skylight? 00:33 < barneygale> first have to account for time of day 00:33 < nickelpro> That's what I thought, thanks 00:33 < barneygale> I don't know how that works though :/ 00:33 < barneygale> you may have to do some digging 00:33 < nickelpro> I'll just test it a bit, post my findings on the wiki 00:33 < barneygale> like, I'm not sure exactly /how/ time of day factors in 00:33 < barneygale> cool, sounds good! 00:33 < barneygale> lighting isn't well-documented at the moment 00:34 < nickelpro> World format in general is poorly documented, MCForge header docs are on a poorly written user page 00:35 < nickelpro> Anvil* 00:59 < mathuin> Can someone explain to me the cursor x y z values sent in the player block placement packet? wiki.vg/Protocol isn't very detailed. 01:11 < dexter0> mathuin: working under the assumption that block textures are 16x16 for a moment, the x,y,z, position in that packet corresponds to the texel of the block the cursor was hovering over when the block was placed. 01:12 < mathuin> And the x y z coordinates (the non-cursor ones) are the coordinates of the block which the cursor is hovering over. 01:12 < mathuin> Sorry, that was ? not . 01:13 <+clonejo> the xyz coordinates are the block the player clicked against 01:13 < dexter0> I was referring to Cusor position x,y,z 01:14 < dexter0> Cursor* 01:14 < mathuin> I was asking about cursor x y z versus normal x y z 01:14 < mathuin> so normal x y z is the block, cursor x y z is the texel on that block. 01:14 < dexter0> yes 01:15 < mathuin> Awesome. 03:02 < dav1d> nickelpro depends on the chunk, if you remind me tomorrow ca 12 hours I can provide you with code samplea 23:49 < anta> hello all, need help with protocol 1.6.4 23:50 < umby24> State the issue and if someone can help they will eventually look and respond. Just note that 1.6.4 is of course outdated 23:50 < anta> the question is: how do i get world blocks metadata, 0x38 does always send zeros in AddBitmap 23:51 < anta> the block metadata comes with single block change packet 0x35, but not with the chunks 23:53 < umby24> the add bitmap/bitmask doesn't actually contain the metadata. The metadata is contained within the compressed data that is sent later in the packet 23:54 < umby24> the add bitmask (and the data it represents) have nothing to do with the block metadata 23:54 <+pdelvo> the Add Bitmap is in unmodded minecraft always 0 23:55 < anta> hmm, i'll look into protocol on wiki once more 23:56 <+pdelvo> Here are the infos you need: http://wiki.vg/SMP_Map_Format 23:57 < anta> yes, "Block metadata array - half byte per block" that's what i get zeros for. ps you were right addbitmap is not used --- Day changed dim. nov. 24 2013 00:01 < anta> ok i have tnew ideas will try them then ask again if no success 00:11 < anta> sorry for disturbing guys, i dumped the packet it has the data. this is my shitcode that does not see it. thanks for psychotherapy 00:45 < Pyker> anyone know what's up with all this "bad login" stuff going on? 00:46 <+md_5> Pyker 1.6 session servers are pooped 00:46 < Pyker> figured 01:00 < SuperSpyTX> 1.6 session servers gone? 01:00 <+md_5> no, just dodgy 01:01 < SuperSpyTX> ok 01:02 < barneygale> how many players does a server list ping return in "sample"? the full set? 01:03 <+md_5> yeah 01:03 < barneygale> oh excellent 01:03 <+md_5> bungee returns 0 01:03 <+md_5> because obvious reasons 01:03 < barneygale> yah makes sense 01:03 <+md_5> lets send 6000 player list to every ping! 01:03 < barneygale> \o/ 01:07 < Thinkofdeath> barneygale: The sample is 12 players on vanilla 01:08 < barneygale> limited to 12? 01:09 < Thinkofdeath> It wont send more but custom servers could 01:10 < barneygale> OK, fair enough 01:10 <+md_5> 12 which players 01:10 <+md_5> that stupid 01:11 < Thinkofdeath> Its random I think 01:12 < Thinkofdeath> Well "int i1 = ou.a(this.q, 0, B() - arrayOfGameProfile.length);" a random offset into the player list 01:13 < Thinkofdeath> which is "Collections.shuffle(Arrays.asList(arrayOfGameProfile));" before being sent 01:13 < Thinkofdeath> *set (looks like it updates it every now and again) 01:15 < Thinkofdeath> If i'm reading it right the player list on the ping updates every 5 seconds 03:44 <+Amaranth> Every 5 seconds it copies the player list and shuffles it just so the server list can show 12 of the players on your server? 05:04 < woder> how does picking up blocks work? (I have a bot and when you throw him something it does nothing) 05:18 < nickelpro> woder: Does your bot update it's position regularly? 05:18 < woder> no, is that what its based on? 05:18 < nickelpro> items are only added to inventories on position update IIRC 05:19 < woder> ah ok, that makes sense 05:19 < nickelpro> You should be updating your position ~1/tisk 05:19 < nickelpro> tick* 05:19 < nickelpro> 50ms 05:20 < dx> also try telling the server that you're not flying 05:20 < nickelpro> dx: Do you spawn flying? 05:21 < dx> nickelpro: hmm now that you mention it, i think you do, but that's fixed in the first position update anyway 05:22 < dx> nickelpro: but i was talking about the 'player' / 'on ground' packet that does mysterious things in a similar way to what you said with the full position update packet 05:23 <+md_5> isnt there a packet to pick up items 05:23 <+md_5> or is that server->client 05:23 < dx> yeah it's server->client 05:24 < nickelpro> md_5: Server to client and it's only for animation purposes 05:24 <+md_5> make sure you upadte your pos every 50ms 05:24 < dx> nickelpro: animation and player satisfaction purposes 05:26 < nickelpro> woder: Your code open-source? I love looking at clients 05:26 < woder> yeah it is 05:26 < nickelpro> link? 05:28 < woder> https://github.com/woder/TorchBot 05:29 < nickelpro> woder: Ya I'm looking though it, you've been working hard 05:30 < woder> yeah, its come quite a way 05:30 < nickelpro> love that you have an Astar implementation, keep meaning to get around to coding one 05:31 < woder> that actually reminds me that I need to fix that, since it only works the first time you use it... lol 06:33 < SuperSpyTX> [This message is only going once]: http://www.mixify.com/supahspii/live/supah-spiis-live-dj-sessions-11-23 09:56 < anta> is there a python lib for 1.7 network protocol? 10:39 < WizardCM> anta: a few 10:40 < WizardCM> there's also an auth server that uses the 1.7 protocol, if that helps https://github.com/barneygale/authserver 10:45 < anta> WizardCM: good! thnx 11:49 < Thinkofdeath> Amaranth: Not the whole list, just 12 players 11:50 < Grum> random 12 11:50 < Thinkofdeath> Its not that random, its just a random offset in to the list 11:50 < Thinkofdeath> then shuffled to look random 12:02 < Grum> same difference 12:21 < Drainedsoul> Why is it only 12? Sending a whole PNG file base64 encoded was just fine, but the whole player list, 2much? 12:25 < Grum> because upto 12 it displays nicely in the mouseover @ serverlist :) 12:25 < Grum> and we're not using it for anything else, so why send more! 12:26 < Flemmard> "because we can" 12:27 < Grum> and then on those servers with 12000 people you get send 300kb per ping? 12:27 < Grum> good idea sir! 12:27 < Flemmard> yep ! and this is "because fuck you, that's why" XD 12:27 < Flemmard> lol 12:27 < Grum> :p 12:27 < Grum> you punish both the server owner and the client with it 12:28 < Flemmard> was just joking eh, i dont care about playerlist lol 12:28 < Flemmard> serverlist or whatever 12:28 < Grum> me neither ;) 12:28 < Grum> it was just that we realized we could trivially do it 12:28 < Grum> so we did :P 12:28 < Flemmard> eh ^^ 12:29 < Grum> and when you do that, you are sane and limit it to the amount you need, and not more :P 12:34 < WizardCM> now all we need is a notifier of which server certain people are on 12:34 < WizardCM> and a built in friends list 12:34 < WizardCM> ;) 12:34 < Grum> :) 12:34 < Grum> friendlists etc are going to be mighty interesting 12:35 < Grum> no idea how we're going to do that sanely 12:35 < WizardCM> a lot of things are like that 12:35 < WizardCM> so many possibilities, no idea where to begin 12:35 < Grum> it's probably a solved problem, but still hehe 12:35 < Grum> not possibilities 12:35 < Grum> problems :P 12:36 < Grum> we cannot do this via the server 12:36 < Grum> we have to do it in the client 12:36 < Grum> but that means each running friend-list-client will need a connection to the server 12:36 < Grum> and then you can do it two ways 12:36 < Grum> client polls server, server push to client 12:36 < Grum> both suck :p 12:37 < WizardCM> hmm 12:37 < Grum> client polls server means BILLIONS OF POLLS, server pushed to client means millions of open connections :p 12:37 < WizardCM> yes, both definitely suck 12:37 < Grum> and those are the only options ;) 12:37 < WizardCM> i'm guessing none of the mojang servers actually track online players, just the last they logged in, and their latest session time, yes? 12:38 < Grum> not even that 12:38 < Grum> we just have a big cache with session tokens 12:38 < Grum> we dont track anything 12:38 < WizardCM> damn 12:38 < WizardCM> knowing amazon's servers, they probably wouldn't handle tracking so many people :P 12:38 < Grum> they can 12:38 < Grum> heh you know 'snooper data' ? :D 12:39 < WizardCM> ah, right 12:39 < WizardCM> how frequently is snooper data sent? 12:39 < Grum> that is >200GB/day :p 12:39 < Grum> every 15 mins iirc 12:39 < WizardCM> well, you could use that.. however it's not linked to a player, it's all anonymous, right? 12:39 < Grum> yup 12:40 < WizardCM> such a missed opportunity in that case :P 12:40 < Grum> no? we told people we wouldn't do that :P 12:41 < WizardCM> i meant that it can't be used for this purpose :P 12:41 < WizardCM> the only logical way i could think of doing it is having a new server that tracks all players, stores a list of their friends, and keeps an eye on what servers the players are connected to 12:41 < WizardCM> that'd be too much work though for such a feature 12:43 < Grum> we'll probably start without tracking who plays where 12:43 < Grum> having a friendlist is not a problem 12:43 < WizardCM> either way, you need a list of online players 12:43 < WizardCM> which you currently don't have 12:43 < Grum> you dont 12:43 < Grum> but yeah this will be interesting 12:43 * WizardCM raises eyebrow 12:43 < Grum> maybe we should just leverage an existing protocol 12:44 < Grum> but i have no idea what can hold 12 million people online at the same time =) 12:44 < SinZ> Steam 12:44 < WizardCM> yay large playerbase making things complex 12:44 < Grum> SinZ: they have the same problem and probably somehow solved it 12:44 < Grum> i mean, skype has solved it :) 12:44 < Grum> i just dont think there is any 'out of the box' tech that would do this 12:44 < SinZ> skype is also a big problem in eSports 12:45 < SinZ> as you can get the IP of a player with it, then DDoS them 12:45 < Grum> sigh people ddossing 12:45 < WizardCM> that's why you don't use skype for games.. 12:45 < Grum> everyone who does that should just be shot in the face 12:45 < WizardCM> teamspeak, mumble and the ugly other one are good 12:46 < SinZ> I use teamspeak mainly now, and trying to get people off skype onto it 12:46 < WizardCM> i completely agree, Grum 12:46 < Grum> 'the ugly other' ? -- wha? 12:46 < SinZ> Ventrilio 12:46 < WizardCM> ventrillo is what i was thinking of, yes 12:46 < Grum> -i 12:46 < WizardCM> however you spell it 12:46 < WizardCM> :P 12:46 < Grum> Ventrilo :) 12:46 < Grum> that one for the longest time was better than TeamSpeak 12:46 < Grum> because TeamSpeak didn't have pushtotalk ;) 12:47 < SinZ> but now it does 12:47 < WizardCM> i don't even use push to talk on TS, i prefer voice activation detection 12:47 < Grum> yup, so people quickly moved over :) 12:47 < Grum> WizardCM: and then you fart 12:47 < Grum> or your better half calls out 12:47 < Grum> or your cat mews 12:47 < Grum> or you scratch your head 12:48 < WizardCM> that's what the noise gate is for, i don't have a better half [ :( ], my cat prefers to bite my feet when she wants something, and for the last one, again noise gate 12:48 < WizardCM> plus lowering the boosrt on a microphone lowers the sensitivity SIGNIFICANTLY 12:48 < WizardCM> boost* 12:48 < Grum> i just prefer push-to-talk :) 12:48 < Flemmard> half of people doesnt have their mic properly 'set' so .. 12:49 < Grum> but then again, i come from a raiding in wow with 25 people-background 12:49 < Grum> there is very little option other than forcing PTT 12:49 < WizardCM> this is true Flemmard, and i'm glad push to talk exists. i just don't like using it myself 12:49 < Flemmard> crappy background noises, larsen, .. 12:49 < Grum> Flemmard: to be honest, setting up a mic properly is not trivial 12:49 < Grum> especially with crappy mics & software only 12:49 < Flemmard> sure 12:49 < WizardCM> then you have the people without headsets, using the laptop mic 12:49 * WizardCM shudders 12:49 < Flemmard> but some people doesnt even try 12:49 < Grum> Flemmard: make a guide on how to do it 12:49 < Grum> its not so easy :) 12:50 < Flemmard> get a headset => solve half (or more) of problems 12:50 < Grum> and afaik there is nothing out there to assist 12:50 < Grum> yes ofc 12:50 < WizardCM> depends on the program, both teamspeak and mumble walk you through it 12:50 < Grum> headset or stand-alone mic > * 12:50 < Grum> barely 12:50 < WizardCM> yeah, it should be more detailed 12:50 < Grum> that wont help you notice excess sound leaking in 12:50 < Grum> or beeps/squeekswhatever 12:51 < Grum> or loops :P 12:51 < WizardCM> true 12:51 < WizardCM> oh god loops 12:51 < WizardCM> glad teamspeak has a way to avoid that 12:51 < WizardCM> but nobody bothers to turn it on 12:51 < Grum> if it would be flawless it would be turned on by default ;) 12:51 < dav1d> webcam mic ftw 12:51 < WizardCM> dav1d: you cruel, cruel man 12:51 < Grum> better, webcam mic with speakers 12:51 < dav1d> Grum: obviously 12:52 < Flemmard> Grum: with speakers at the other side of the room 12:52 < Flemmard> full volume 12:52 < Flemmard> better 12:52 < WizardCM> and a tv with full volume 12:52 < dav1d> my headset mic somehow records the the sound coming from the pc 12:52 < WizardCM> and dogs barking 12:52 < dav1d> na same speakers with music 12:52 < WizardCM> dav1d: the term for that is misconfiguration 12:52 < Grum> dav1d: fun not? and no idea how to fix it 12:52 < dav1d> WizardCM: no the term for this is broken 12:52 < Grum> WizardCM: that is the problem, there is little documentation 12:52 < Grum> some drivers just fuck up 12:53 < dav1d> ^ 12:53 < Grum> and then you are just ... screwed 12:53 < WizardCM> also true 12:53 < dav1d> I tried to fix it, it happens with alsa/pulse and on windows 12:53 < dav1d> so I assume it's broken 12:53 < Grum> i've had my driver put my freq at 48khz 12:53 < Grum> and each time it did that i got this nasty extra beep 12:53 < Grum> but it only showed the SECOND time you opened the panel 12:53 < Grum> wonderful stuff :) 12:54 < dav1d> only using my headset for CS:GO nowadays 12:54 < dav1d> because hearing footsteps with bad boxes is hard 12:54 < WizardCM> bah so excited to release this tomorrow, it's going to be great http://wizrd.tk/1tipej 12:54 < Flemmard> i use my headset when i dont want to hear what's happening around me XD 12:55 < dav1d> Flemmard: ok^^ 12:55 * dav1d does that as well 12:55 < WizardCM> headsets are great for that, Flemmard 12:55 < Flemmard> because with the one i have .. with music you hear NOTHING .. even when the other person is @ 1meter lol 12:55 < Flemmard> that's fun :D 12:55 < WizardCM> but i much prefer my 5.1 speaker setup. glad minecraft, skyrim and BF3 all have surround compatibility 12:56 < Flemmard> well my headset does (somehow) 7.1, so that's very nice (i did not believe it, and tried .. was "wtf .. awesome :D") 12:56 < Flemmard> my 5.1 is on my tv, better for movies :> 12:56 < WizardCM> my headset (G35) has software surround, not as good though 12:56 < WizardCM> and something in minecraft messes with it 12:56 < Flemmard> yeah g35 12:57 < dav1d> I need a new one 12:57 < Flemmard> i found it pretty good imho 12:57 < dav1d> any recommendations? 12:57 < Grum> Flemmard: though for MC the 'up'-vector is broken 12:57 < Grum> so you cannot ever hear 'up or down' :D 12:57 < dav1d> (I had to tape my old back together) 12:57 < Flemmard> lol 12:57 < WizardCM> i've noticed that Grum 12:57 < Flemmard> up vector is broken, like Z :P 12:57 < Grum> should be fixed in 1.7 though 12:57 < WizardCM> i mention it a lot in my survival let's play 12:57 < Flemmard> should or is ? 12:57 < Flemmard> :P 12:57 < WizardCM> so annoying when hearing mobs underground 12:57 < Grum> i have no way to confirm 12:57 < WizardCM> i can confirm it's broken in 1.7.2 12:58 < WizardCM> unless it's the headset software, which is also possible 12:58 < Grum> we construct the correct vector 12:58 < WizardCM> i can be your up-vector tester, Grum :D 12:59 < Grum> but there is no definition of how the space is layed out for the sound :) 12:59 < Grum> so hell, err er might be pointing somewhere random 13:00 < WizardCM> well when i last played i could NOT tell whether the silverfish was hiding above or below me 13:00 < WizardCM> which would have been thursday 13:00 < Grum> you know what the whole thing is, if i remove your ears you actually have no way of telling up from down 13:00 < WizardCM> this is true 13:01 < Grum> and the only way you can 'guessimate' it with any accuracy IRL is because your brain has had years of training listening for the deformaties of the sound your ears cause 13:01 < Grum> AND because you always have a frame of reference 13:01 < WizardCM> yay frame of reference 13:02 < Grum> so if you are hearing airplane sound coming from the floor, you automagically realize that is BS :p 13:02 < Grum> unless it is, and then you will go 'wtf' :p 13:02 < Grum> but then typically it would have vibrations you'd pick up on in your legs 13:03 < Grum> anyhow, you can fuck over someone rather trivially if you understand how it works 13:03 < Grum> meh there was this awesome youtube video that displayed this :p 13:04 < Grum> but i lost the actual term for 'mixing sounds up because of other stimuli' 13:04 < WizardCM> madness 13:04 < Grum> hahah and just googling that gives me: Synesthesia 13:04 < Flemmard> Synesthesia > 13:04 < Flemmard> yeah 13:04 < Grum> and http://en.wikipedia.org/wiki/McGurk_effect 13:04 < Grum> ! :D 13:04 < Flemmard> lol 13:04 < Grum> now to find that video 13:05 < Grum> http://www.youtube.com/watch?v=G-lN8vWm3m0 13:05 < Grum> done! =D 13:05 < Grum> at least, i think ! =D 13:05 < WizardCM> watching doctor who, i'll look at it later 13:05 < ellisvlad> I remember that video from a bilogy lesson years ago! :P 13:05 < ellisvlad> *biology 13:06 < Grum> that video is awesome 13:06 < Grum> and that is why i prefer to look at someones mouth while they talk :p 13:07 < ellisvlad> :P 13:07 < Flemmard> eh 13:07 < Flemmard> there's also the "blind spot" in eyesight that brain "ignores" but that exists .. 13:07 < Flemmard> brain interpolates and show you a perfect image 13:07 < Flemmard> and this is very dangerous while driving for example, when you look with only one eye 13:07 < ellisvlad> err.. Also, am I the only one getting HTTP Error 204 (No Content) from https://sessionserver.mojang.com/session/minecraft/hasJoined?username=ellisvlad&serverId=1b2a941c3574e52fa299f7fc1642ba439f42bf8a 13:08 < Grum> Flemmard: are you talking about 'the blind spot' ? 13:08 < Flemmard> it's what i said no? 13:08 < Grum> that is just because that is where the ocular-trunk-line of nerves to your brain connects 13:08 < Flemmard> yep 13:08 < Grum> there are actually no sensors there 13:08 < Flemmard> yes 13:08 < Flemmard> but brain interpolates and make you see normally, using both eyes 13:08 < Flemmard> but when looking with only one eye, you can miss something 13:08 < Grum> that is like how it cuts out your nose 13:08 < Flemmard> like a car incoming and shit 13:09 < ellisvlad> All my biology lessons flooding back now xD 13:09 < Grum> this is also why after some days of seeing the world upside down, your brain simply adjusts 13:10 < Grum> threating upsidedown as rightsideup from that moment 13:10 < Grum> -h 13:10 < Flemmard> yeah 13:10 < ellisvlad> ..but yeah, anyone have any idea why sessionserver is blanking me? :P 13:10 < WizardCM> ellisvlad: 1.6? 13:11 < ellisvlad> 1.7 13:11 < WizardCM> huh 13:11 < ellisvlad> The 1.6 sessions just started saying "NO" recently :P 13:12 < WizardCM> this is true 13:12 < ellisvlad> so I guess my code there broke somehow... niether works :P 13:13 < ellisvlad> but using https://sessionserver.mojang.com/session/minecraft/hasJoined?username=&serverID= doesn't work for me? am I doing something wrong? 13:13 < Grum> issues with the session servers 13:13 < ellisvlad> ah right :P Not just me then? 13:14 < Dinnerbone> legacy session servers* 13:15 < Dinnerbone> Go use the new ones. 13:16 < ellisvlad> new ones? 13:17 < Dinnerbone> Oh that is the new one 13:17 < Dinnerbone> You've typo'd 13:17 < Dinnerbone> serverId 13:17 < Dinnerbone> Not serverID 13:17 < Dinnerbone> http://wiki.vg/Protocol_Encryption#Authentication 13:19 < ellisvlad> oh, I meant https://sessionserver.mojang.com/session/minecraft/hasJoined?username=ellisvlad&serverId=1b2a941c3574e52fa299f7fc1642ba439f42bf8a :P But I still get HTTP 200, No Content 13:20 < Eyes> u wot 13:21 < ellisvlad> :P http://puu.sh/5rN1E.png 13:23 < ellisvlad> That is what I get, and the status says HTTP/1.1 200 (No Content) 13:24 < ellisvlad> Content-Length: 0 13:36 < ellisvlad> ah... 13:36 < ellisvlad> I found my problem.. 13:37 < ellisvlad> In the 0x01 Login Start S->C Packet, I was sending the serverID as a NULLED String (Length 0, no data) 13:38 < ellisvlad> session server was making no reply, so the serverId has was of a nulled string... I imagine the session server doesn't like null serverIds :P 13:48 < ellisvlad> Woo! All working now :) 13:51 < SinZ> Dinnerbone: is there a reason why the old session servers are herping 13:51 < Grum> because they have herpites :( 13:52 < [z]> It's the weekend -> one server or another dies 13:52 < WizardCM> because they're the session servers :P 13:53 < WizardCM> now to hope my modem holds on long enough to upload pixelmon overnight 13:53 < WizardCM> good night guys 16:49 < Pyker> SinZ: apparently throttling issues... 16:53 < woder> when I send a position packet is the server suppose to be responding with a player look and position? or is that the server correcting me because I made a mistake? 16:59 < ProjectBarks> Ok so I am using protcol lib and I am trying to make a player sleep and it works but how can I change the rotation 16:59 < ProjectBarks> Im using packet 17 17:08 < ProjectBarks_> Ok so currently I am trying to spawn in a fake player and have them lay down which works. But how can I change there rotation 17:09 < ProjectBarks_> in protcol lib 17:10 < Thinkofdeath> ProjectBarks_: I think the rotation is based on the target bed 17:11 < ProjectBarks_> Well there is no bed... 17:12 < Thinkofdeath> Maybe minecraft has a default rotation if there isn't a bed. Try placing a bed there and seeing if the player changes rotation 17:13 < ProjectBarks_> ya it does 17:15 < ProjectBarks_> How could I rotate it then without a bed 17:15 < ProjectBarks_> or shall I deem it impossible 17:16 < Thinkofdeath> I'm guessing its impossible 17:17 < Thinkofdeath> Short of quickly placing the bed, setting the player to sleep and removing the bed quickly 17:21 < ProjectBarks_> Ok now how can I set the display name of an etity but keep there skin in protocol lib Thinkofdeath 17:22 < Thinkofdeath> You can't for players 17:22 < ProjectBarks_> Ok 17:22 < ProjectBarks_> great 17:22 < ProjectBarks_> what about changing the color of the name 17:22 < ProjectBarks_> would that keep the skin 17:23 < Thinkofdeath> Yes but you are limited to 16 chars and it takes 2 to colour a name 17:23 < Thinkofdeath> anyone with a 15 or 16 char name would lose their skin 17:24 < Thinkofdeath> unless you colour the name using teams 17:24 < ProjectBarks_> Ok so if I am creating a corpse plugin and this guy wants corpses that have no name but a skin 17:24 < ProjectBarks_> thats impossible 17:24 < ProjectBarks_> correct 17:24 < Thinkofdeath> correct 17:25 < ProjectBarks_> can I hide the display name to a client? 17:25 < Thinkofdeath> no 17:28 < ProjectBarks_> One final question 17:28 < ProjectBarks_> y acess can have .5s right 17:28 < ProjectBarks_> *axis 17:29 < Thinkofdeath> ? 17:29 < ProjectBarks_> Like If I wanted 8.5 17:29 < ProjectBarks_> thats impossible 17:29 < Thinkofdeath> For a sleeping player, yes 17:30 < Thinkofdeath> it has to be a block coordinate 17:39 < ProjectBarks_> thanks Thinkofdeath 17:39 < Thinkofdeath> np 19:28 < btilm305> Has the encryption method changed in 1.7.2? 19:28 < Thinkofdeath> btilm305: nope 19:29 < btilm305> Strange, can't find any bouncy castle references in the 1.7.2 code 19:30 < Thinkofdeath> I'm pretty sure they dropped it 19:30 < btilm305> :\ 19:30 < Thinkofdeath> Not sure netty now handles it or something else 19:30 < btilm305> I hate how they just now switched to netty 19:31 < Thinkofdeath> Why? 19:31 < btilm305> the old encryption doesn't seem to be working 19:31 < btilm305> And it's harder to deobfuscate 19:31 < Thinkofdeath> Netty isn't the reason for the deobuscation problems 19:31 < Thinkofdeath> they refractored a lot 19:32 < btilm305> I never successfully receive S->C : Login Success 19:32 < Thinkofdeath> What do you get? 19:32 < btilm305> Random packet size, and random packet id 19:32 < btilm305> It uses encryption for localhost right? 19:33 < btilm305> I read somewhere that it didn't 19:33 < Thinkofdeath> Its encrypted at that point 19:33 < Thinkofdeath> It only not encrypted in offline mode 19:33 < Thinkofdeath> *its 19:34 < btilm305> Has anyone found where the 1.7.2 mc server handles encryption? 19:35 < btilm305> I'd be very gracious if I could get a file name 19:35 < btilm305> class name 19:39 < ProjectBarks__> Guys what would be the most efficent method of making a courpse with no username on there head and configurable orientation. in bukkit 19:39 < Thinkofdeath> btilm305: nd and ef may be useful 19:40 < Thinkofdeath> btilm305: and ec 19:40 < btilm305> thanks 19:45 < Thinkofdeath> btilm305: Cipher localCipher = Cipher.getInstance("AES/CFB8/NoPadding"); where Cipher is javax.crypto.Cipher so it looks like they are using the crypto builtin to the java library 19:46 < btilm305> Hm 19:46 < btilm305> but are they using an encrypted stream? 19:46 < btilm305> Or just encrypting the packets then sending them? 19:48 < Thinkofdeath> localByteBuf.writerIndex(this.a.update(arrayOfByte, 0, i, localByteBuf.array(), localByteBuf.arrayOffset())); 19:48 < Thinkofdeath> encrypting then sending them by the looks of it 19:48 < Thinkofdeath> this.a == Cipher 19:50 < btilm305> That looks like a netty thing --- Day changed lun. nov. 25 2013 00:26 < SinZ> if he didn't leave, I would tell him that Mojang uses netty now 00:34 < ProjectBarks_> Hey in protcol lib could I send a death packet to a fake player and have all clients see a corpse 00:34 < ProjectBarks_> or impossible 00:36 < umby24> as far as I know the whole death thing is an animation 00:36 < umby24> hurt, fall over, then poof. 00:37 < ProjectBarks_> thanks 05:02 < WizardCM> i'm curious as to why mojang went with "has just earned the achievement ___" instead of "just achieved ____" which would work better for longer player names and achievement names 07:36 < Grum> WizardCM: we dont want people to achieve anything! 07:36 < WizardCM> haha 07:36 < WizardCM> well 1 line is always nicer than 1 and a bit 07:36 < Grum> pffft minor :P 07:37 < WizardCM> minor, but on servers with 10-20 people online you'd have a lot of spam of people trying to get achievements early 07:38 < Grum> not really a problem? 07:38 < WizardCM> not really, just a minor annoyance as you said :P 07:38 < Fenhl> you can always turn it off in server.properties 07:38 < Grum> or just ignore the fact that it happens as it only happens once :) 07:39 < WizardCM> i probably will for the first couple days when bukkit finally release their version -.- 07:39 < WizardCM> once per player, Grum :P 07:39 < WizardCM> i have a small server, and have had 6000+ unique players in a single year 07:39 < Fenhl> “small” 07:39 < WizardCM> unique players 07:40 < WizardCM> i average 0-5 on a daily basis 07:40 < WizardCM> i call that small 07:40 < WizardCM> 4 online right now 07:40 < WizardCM> ..make that 3 07:40 < WizardCM> :P 07:40 < Fenhl> what do you call a server with a whitelist of 23 players then? 07:41 < WizardCM> stable 07:41 < WizardCM> :P 08:16 < SinZ> my old classic server had ~30K uniques in its first and only month 08:21 < WizardCM> yeah but thats when the average playerbase would have been larger, with less servers/networks to spread out on 08:43 < cathode> are there any servers that use a SQL database instead of the world folder structure on the filesystem? 08:46 <+md_5> sql database 08:46 <+md_5> for minecraft 08:46 <+md_5> === worst idea ever 08:46 <+md_5> you cannot store chunks in sql 08:47 < cathode> erm... 08:47 < cathode> ok, so you don't like the idea. that doesn't mean it's invalid 08:48 < cathode> nothing about SQL makes it inherently bad for storing small BLOBs and a chunk would be very small indeed compared to many of the things that are shoved into SQL databases 08:54 < SinZ> there is nothing about SQL that makes it good at storing a world 09:10 < cathode> what a remarkably boring attitude for a game about creativity 09:11 <+ammar2> why do you want to store the world in sql, what utility does that provide over the usual file based system 09:11 < Flemmard> more cpu intensive ! 09:11 < Flemmard> :P 09:12 < Flemmard> more dependencies ! 09:17 <+md_5> nothing about SQL makes it inherently bad for storing small BLOBs and a chunk would be very small indeed compared to many of the things that are shoved into SQL databases 09:17 <+md_5> "small" 09:24 < SinZ> a single chunk is 16^3 blocks 09:34 < jast> protip: SQL is not a storage system. it's a language. 09:35 < jast> whether storing world data in a relational database is a good idea depends mostly on the implementation of the database 10:11 <+AndrewPH> cathode: in most cases I'd guess that direct filesystem access would be faster than database storage. 10:34 < jast> it really depends on the storage 10:35 < jast> with SQL-based systems you'll have the overhead of parsing and compiling the query... so it's infeasible to execute SQL every time you need a piece of data, and you're going to need to cache data in RAM 10:36 < jast> at that point there isn't much of a benefit to using a relational DB in the first place (not to mention you're not going to have to do complex queries in the first place) 10:36 <+AndrewPH> mirroring to a database for whatever reason would be more reasonable, if there were a reason to 10:36 <+AndrewPH> maybe remote world fetching 10:37 < jast> it'd be much saner, I guess, if you had a non-SQL database with good caching behaviour 10:37 < jast> but then again, why bother. there are no real benefits. 10:37 <+AndrewPH> yeah in the end there are way easier solutions that are better, too 16:19 < TkTech> jast: This is not really true. Most SQL databases provide optimizations for working with BLOBs. 16:20 < TkTech> My Vanity server used SQLite for storing world chunks and worked fine. 16:20 < TkTech> http://sqlite.org/intern-v-extern-blob.html 16:20 < TkTech> http://www.sqlite.org/capi3ref.html#sqlite3_blob_open 17:44 < jast> TkTech: I'm not saying blobs are inefficient in *storage* just because the server happens to use SQL; I'm saying it's overkill to have to parse and compile a query every time you want to retrieve a blob by a unique ID 18:16 < TkTech> jast: Eh, it didn't really impact performance but I see your point. 18:17 < TkTech> jast: Keeping a cache of nearby chunks and eagerly loading soon-to-be chunks worked fine 18:18 < TkTech> In the simplest form it's just an indexed lookup on a PRIMARY KEY, say [x|y|z|DIM] 18:49 < mathuin> How are player UUIDs generated when the server is in offline mode? 18:55 < Thinkofdeath> mathuin: They are random 18:55 < Dinnerbone> Not true 18:55 < Thinkofdeath> oh I guess I was wrong 18:56 < mathuin> :-) 18:56 < Dinnerbone> They are a type 3 UUID based on the name of the player 18:56 < Thinkofdeath> UUID.nameUUIDFromBytes(("OfflinePlayer:" + this.i.getName()).getBytes(Charsets.UTF_8)); 18:56 < mathuin> With a namespace UUID of mojang.com or something similar? 18:57 < Dinnerbone> Can't in java so easily, or it'd be a type 5 UUID instead :p 18:57 < mathuin> Python's nice, though! 19:05 < Drainedsoul> jast: If you're worried about the "overhead" of parsing and compiling a query, just use a prepared statement? 20:24 < jast> TkTech: yeah, but if you're caching, you relegate the database to the role of dumb storage layer, and then there's no longer really any point to using SQL, or an SQL database, anymore 20:25 < jast> basically I just don't see any point here that says "SQL makes this better" 21:33 < btilm305> Is there any library to convert vanilla json text to readable chat text? 22:41 < nickelpro> btilm305: what language? --- Day changed mar. nov. 26 2013 00:01 < nickelpro> umby24: Minebot is 1.7 compatible? 00:01 < umby24> not as it is on github, but yeah, the version i've been working on is 1.7 compatible 00:02 < umby24> also in the progress of rewriting it 00:02 < umby24> as previous versions had all networking code with the bot, and now i'm using my library 00:03 < umby24> and the bot was pretty messy because of all of that.. so just rewriting it 00:03 < umby24> http://pastebin.com/eGsi35vN <-- was a randomly thrown together gui app that I used to test server pinging 00:35 < TkTech> jast: My intention at the time was to make everything very simple to move around, all settings, chunks, history, etc.. were in a single file 00:36 < TkTech> Keep in mind that Vanity predates just about everything in Alpha and was very basic 03:24 < mathuin> I got "public key reconstitute failed" when I tried my encryption module. I am sending out the key in the PEM format: ---BEGIN PUBLIC KEY--- sort of thing. Should I be doing something else with it? 03:35 < nickelpro> mathuin: What language? 03:44 < barneygale> mathuin: PEM format is wrong, re-read the wiki 03:48 < Drainedsoul> mathuin: You need to send a SubjectPublicKeyInfo structure, i.e. the ASN.1/DER-encoded representation 05:02 < mathuin> nickelpro: python. 05:04 < mathuin> I would have responded to barneygale but he left -- I am inexperienced with encryption keys and formats, and naively assumed that the instructions on how to import keys via PEM meant that the ASN.1 format was the same as the PEM format. 05:05 < mathuin> Drainedsoul: http://pyasn1.sourceforge.net/rfc2459.html is deep and thick. I confess I was hoping for something like 'from pyasn1 import DER // encoded=DER.encode(key)'. :-) 05:18 < mathuin> ... it was as simple as .exportKey('DER') Woo. 05:19 < Eviltechie> \o/ 05:24 < mathuin> IKR? The vanilla client seems happy with what it received. Now to decode what it has sent in return... 05:29 < mathuin> ... and the client and server both agree on the shared secret decryption. Woot. 05:51 < mathuin> I don't have time tonight to actually encrypt the packet stream, but that shouldn't be hard compared to this... 10:17 < mathuin> So I made some progress on the stream cipher stuff. I think. The wiki page says "For the Initial Vector (IV) and AES setup, both sides use the secret key." I'm assuming this actually means the shared secret created by the client since that makes more sense than the private key that only the server knows. Also, the page says "From this point forward, everything is encrypted.". What point is that? Once the client sends the Encryption Response? Once 10:17 < mathuin> the client receives the Login Success packet? 10:22 < mathuin> The vanilla client doesn't seem to like any of the packets I'm sending, which is probably due to a problem with my implementation of AES CFB-8. 10:23 < Thinkofdeath> Login Sucess is encrypted and so is everything afterwards 10:23 < mathuin> http://pastebin.com/DFM4dCdv -- my encryption.py. RSA works, AES doesn't. 10:28 < Thinkofdeath> Can you read encrypted packets ok? 10:30 < mathuin> I do not receive any. (I am working on a server.) 10:30 < Thinkofdeath> Oh ok then 10:32 < mathuin> I just enabled debugging on the client, and I receive no valid packets. 10:32 < mathuin> So it's almost definitely something about my AES. 10:34 <+ammar2> def stream_encrypt(self, bytestream): 10:34 <+ammar2> return self.iv + self.cipher.encrypt(bytestream) 10:34 <+ammar2> huh 10:34 <+ammar2> what do you think you're doing there 10:34 < mathuin> https://www.dlitz.net/software/pycrypto/api/current/toc-Crypto.Cipher.AES-module.html <-- what that says 10:35 < mathuin> I don't know if the IV changes or rotates or anything. Example code is somewhat thin on the ground. 10:39 <+ammar2> mathuin: http://pastie.org/private/omqzsotwzljtm6b8ig7g 10:40 <+ammar2> where fileobject is made from self.socket.makefile() 10:40 <+ammar2> and is used to read from the socket (ensures complete length) 10:40 <+ammar2> thats a piece of code from my thing which I know works 10:41 <+ammar2> this is from the client perspective but it should be the same on the server, mostly 10:43 < mathuin> Hmm. Thanks. 11:26 < nickelpro> mathuin: Here's my version too, also client but should work for server https://github.com/nickelpro/spock/blob/master/spock/plugins/core/net.py#L9-L18 12:01 <+ammar2> nickelpro: encipher *cringe* 15:26 <+sadimusi> mathuin: did you ever take a look at this? https://github.com/sadimusi/mc4p/blob/master/mc4p/encryption.py 16:55 < TkTech> sadimusi: Any thought on using tlslite instead of pycypto? 16:56 < TkTech> sadimusi: Supports everything you're doing but is pure-python with optional C extensions. PyCrypto can be a bitch to install. 16:59 <+ammar2> also, why/what outdated versions of pyCrypto are you trying to support there 17:01 < TkTech> (Also has RC4, don't need your RC4 method) 17:06 < dx> tlslite looks nice 17:07 < mathuin> sadimusi ammar2 nickelpro: do any of you guys write tests for your code, or is it enough that it successfully decrypts live traffic? 17:08 <+ammar2> I don't currently have any tests, I've been meaning to re-write my client and add bogaloo like tests then 17:09 <+ammar2> currently its pretty horrible 17:09 <+ammar2> most of it anyway 17:09 < dx> indeed 17:09 < mathuin> *nod* I've made about 2800 lines of changes across 47 files in bravo to support protocol 4, and I'm trying to add in a few tests for the additional code I've written. 17:10 < mathuin> In general, bravo's got a decent test suite -- I've only broken three tests by the refactoring. 17:12 < mathuin> Of course, there's a bunch of other weirdness but I'm hoping other folks will help work it out now that I've done the heavy lifting. 17:12 <+ammar2> btw sadimusi, pkcs handles padding by itself https://github.com/dlitz/pycrypto/blob/master/lib/Crypto/Cipher/PKCS1_v1_5.py#L126 17:18 < mathuin> And packets are now working, except something else blows up. Whee. 17:21 < TkTech> dx: It is, fairly easy to patch out PyCrypto dependencies. http://w.tkte.ch/getting-rid-of-pycrypto-in-jira-python.html 17:29 < dx> TkTech: i also like how it actually uses pycrypto as one of the optional dependencies 17:30 < dx> so for people who had pycrypto installed before, the switch to tlslite is pretty much free 17:30 < TkTech> PyCrypto's C versions are very good and well optimized, but useless on App Engine, or for my purpose bundling for distribution. 17:30 < TkTech> I needed to bundle pure-python for an Alfred extension 17:30 < TkTech> https://github.com/TkTech/jira_alfred 17:31 < TkTech> Since JIRA uses OAuth1 with weird RSA signing. 17:50 <+sadimusi> TkTech: haven't heard of it, but I'm more than happy to ditch pycrypto 17:51 <+sadimusi> ammar2: some of the windows binaries people have installed are of an older version which doesn't support the padding yet 17:53 < TkTech> Yeah, you can move away from all of that and there's no extra setup other than adding it to your setup.py 17:53 < TkTech> If PyCrypto happens to be installed it'll use some of its C implementations, otherwise it's pure-python. 17:54 <+ammar2> oh goodie 19:00 < nickelpro> ammar2: I didn't know what else to name it -.- just "cipher" seemed wrong, they're both ciphers 19:00 < dx> encriptifier 19:01 < nickelpro> dx: That's actually not bad 19:02 < dx> nickelpro: the only problem is that it's a completely made up word 19:02 < dx> otherwise it's flawless 19:03 < Luqman> dx: words have to start somewhere 19:04 < nickelpro> dx: https://github.com/nickelpro/spock/commit/90438e2915a3ee0db538a4f213730dd9d58932bb 19:06 < dx> hahah oh wow 19:11 <+ammar2> 10/10 development 19:11 < TkTech> Never ask the channel for names. That's how we ended up with Burger and toppings. 19:12 < dx> mc4p is a relatively good name though 19:13 <+sadimusi> dx: this channel suggested I name it mc8p: MineCraft Pretty Printing Prevailing Portable Protocol Parsing Python Proxy :P 19:14 < dx> sadimusi: :D 19:14 < dx> should have gone with python instead of portable 19:15 < dx> since it's broken in windows 19:15 < dx> or at least nobody knows how to install it 19:16 <+sadimusi> if you get gevent and pycrypto to work it runs fine :) 19:16 <+sadimusi> there are binary installer for both 19:17 < dav1d> nickelpro: I like your homepage http://i.imgur.com/ZaXulup.png 19:17 <+sadimusi> :D 19:18 < dx> 19:20 < nickelpro> dav1d: I used my homepage to learn angularjs, I'll probably change it eventually 19:21 <+ammar2> nickelpro: only 4.7k scrobbles, plebian 19:21 < dav1d> nickelpro: I find it funny how people always assume JS 19:21 < dav1d> and the site is just a megafail without 19:21 <+sadimusi> dav1d: how is it funny? today you really can assume JS 19:21 < dav1d> sadimusi: ha 19:22 < dav1d> IE 6 <3 19:22 <+sadimusi> even IE 6 does js :P 19:22 < dav1d> sadimusi: ofc you can 19:22 < dav1d> but I never would let the page look completly fail without js 19:23 < dx> 19:23 < nickelpro> dav1d: It was laziness :-P I didn't want to set up a server side renderer, static hosting is such a breeze 19:24 < dav1d> lol the spam https://gist.github.com/Dav1dde/c4e469d9dfe58b8801d6 19:24 <+sadimusi> 19:24 < dav1d> nickelpro: node? 19:25 < nickelpro> dav1d: When I get around to it it'll probably be Jinja2/Flask/uWSGI because I'm more familiar with them 19:26 < dav1d> gunicorn <3 19:26 <+sadimusi> I was forced to use a horrible tabbing library for minecraftservers.org which, among other things, makes the page look horrible without javascript http://d.pr/i/zZvN -.- 19:26 < nickelpro> but mah performance 19:27 < nickelpro> No joke I love gunicorn, but uWSGI blows it out of the water 19:28 < dx> there's the uwsgi python module too, with a bunch of awesome features 19:28 <+ammar2> sadimusi: >forced to use 19:28 <+ammar2> why 19:30 < dx> sadimusi: at least it shows most of the tabbed content 19:30 <+sadimusi> ammar2: the design studio put it in the code base and I initially thought the time to rewrite the whole thing wasn't worth it. turns out that was the wrong decision 19:30 <+sadimusi> ammar2: I might replace it with my own library sometime, I just hate that fraction of a second it looks wrong while the page loads 19:33 < nickelpro> I've been thinking about making PyCrypto optional and rolling a pure python implementation of just AES and RSA, and just enough to make minecraft work, to use as a fallback 19:34 < nickelpro> Then I realize I have no idea how to do that and go back to working on maps or something 19:35 <+sadimusi> TkTech: [16:55:53] sadimusi: Any thought on using tlslite instead of pycypto? 19:35 <+sadimusi> TkTech: [16:56:57] sadimusi: Supports everything you're doing but is pure-python with optional C extensions. PyCrypto can be a bitch to install. 19:35 <+sadimusi> nickelpro: ^ 19:35 < nickelpro> sadimusi: Just replacing one dependency with a different dependency 19:35 <+sadimusi> yes, but wit a pure python one 19:35 <+sadimusi> *with 19:36 < dx> a pure python one that makes pycrypto optional 19:36 <+sadimusi> if setuptools can install it on every system without any issues I don't see a problem in using it 19:36 < dx> which is what you originally wanted, right? :D 19:37 < nickelpro> dx: The goal is to have a single file to fallback on if import fails 19:37 < nickelpro> I'll probably switch over to tlslite also 20:37 < TkTech> Flask <3 20:52 <+AndrewPH> TkTech: Yes, I agree. 20:54 <+AndrewPH> somebody I used to work with said it wouldn't scale very well, but just a couple of tweaks and my setup can handle 1500 concurrent connections. With at least one database query per pageview. MariaDB is literally the limiting factor. 20:56 < jast> 1500? cute... I used to work on a daemon that handles 32k concurrent connections :} 20:57 < jast> didn't talk to a DB though 20:59 < TkTech> AndrewPH: It scales very well with tweaks, we have backend APIs being hit millions of times a day that can handle >10k easily. 21:00 < TkTech> AndrewPH: (This is inserting into MongoDB [no comments] and using gunicorn) 21:00 < dx> nice 21:00 < TkTech> Honestly, even if it didn't the dev time it saves is worth running a few more instances. 21:00 < dx> and yeah, mongodb is never a bottleneck 21:01 < TkTech> MongoDB is an insane bottleneck, but I can't tell if you're being sarcastic. 21:01 < dx> :D 21:01 <+AndrewPH> jast: when you're working with a mysql replacement in a limited environment, 1500 is not bad 21:01 < jast> sure, I can imagine 21:02 <+AndrewPH> flask itself could probably 32k fine if I had enough uwsgi threads/instances to handle connections in a timely manner 21:02 <+AndrewPH> and also a better processor 21:02 <+AndrewPH> and also jesus juice 21:02 < dx> get one of those VPSes with 15ghz processors 21:02 < TkTech> Typically, in "real" situations IO is your bottleneck, not anything flask does (even Jinja2 template rendering) 21:03 < TkTech> gunicorn/gevent helps vastly here. 21:03 <+AndrewPH> TkTech: yeah that guy said that flask was 'too slow', but really, ANY amount of io would be loads slower than anything flask would have to do 21:03 <+AndrewPH> unless you're going through a 15k list and doing something to each entry, of course 21:04 < TkTech> In which case you have other problems. 21:04 < TkTech> Like a shit architecture. 21:04 <+AndrewPH> yeah 21:05 < TkTech> Some of the endpoints are as simple as kicking off a Celery task on a worker and giving you back an ID. 21:05 < TkTech> "Yeah, we'll get on that. Come back later and see if it's done." 21:08 < dx> you guys are talking about massive scalability and meanwhile i'm thinking about that one CGI app i wrote which can be DoS'd with just two or three connections per second 21:19 < TkTech> Sounds like minecraft.net pre-EC2/S3. 21:19 < TkTech> When Notch had his home-rolled DB that crashed the site on every insert (user signup) 21:20 < TkTech> Well, not really crashed, it just took a long, long time. 21:20 <+AndrewPH> sounds like most default apache + php setups, where holding down f5 causes it to start using tons of cpu. 21:47 < SinZ> hurrhurr send ALL the webpages to php 21:49 < dx> yeah my app actually generates static html, so it has only one DoS point... the static html generator 21:49 < SinZ> it works, aslong as it doesn't need to be too interactive 21:51 <+ammar2> @app.route('/index.php') 21:56 < dx> id = re.search("WHERE id=(\d*)", request.form['sql']).group(1) --- Day changed mer. nov. 27 2013 17:22 < woder> what does it mean if the server just ignores my position packets? (id 4) 17:22 < nickelpro> woder: Ignores how? 17:23 < woder> I send the packets but no movement occurs 17:24 < nickelpro> woder: Turn on debugging http://wiki.vg/Debugging, check to see if the server is even receiving/interpretting your packets 17:25 < woder> nickelpro: is there anyway to look through all this easier? I have it on but not entirely sure how to look for something 17:25 < mathuin> The server debugging's actually pretty awesome. 17:25 < mathuin> You get what state the state machine is in (handshaking, login, play) and what packet number (in decimal) was received. 17:26 < mathuin> Depending on your setup, you might be able to log into the server with another client and watch your test client to see if it actually moves around. 17:26 < woder> yeah, thats what I did, nothing though 17:27 < nickelpro> woder: You're packing the movement packet wrong, not sending it, or not sending valid positions. Process of elimination 17:28 < nickelpro> mathuin: The default server kicks for invalid packets doesn't it? 17:29 < mathuin> It has when I've screwed up. I don't know if there are other screwups that won't kick it. 17:29 < woder> nickelpro: shows this in debug: IN: [PLAY:4] is[] 17:29 < mathuin> woder: that's good news -- the server has received a packet of type 0x04 (in mode 'play'). 17:30 < woder> I guess that means its invalid position? (shouldn't server correct that position though?) 17:30 < Thinkofdeath> If you move to an invalid position the server ignores movement packets until you send back its correction it gave you 17:30 < Drainedsoul> are you sure about the endianness? 17:30 < woder> I think I know whats wrong then, one second 17:34 < woder> Thinkofdeath: so if I don't answer the look position packet with my own it wont work right? 17:35 < Thinkofdeath> Correct the x y z etc must match the server's 17:37 < nickelpro> Why does the protocol send absolute positions as doubles? Why not just send the integer representation? 17:37 < mathuin> Because where you are on the block can sometimes matter? 17:38 < mathuin> Think about looking around corners or creeping out on the edge of a long set of blocks over lava to place the next block in the set, etc. 17:38 < woder> what should the stance be set to? 17:38 < nickelpro> mathuin: Its a fixed point number, client can just interpret the 5 LSBs as the decimal places 17:39 < nickelpro> Sending it as a double just introduces imprecision 17:39 < mathuin> Does it? 17:39 < Thinkofdeath> woder: I think its y + 1.6 17:40 < nickelpro> mathuin: Floating point cannot precisely represent all decimals within its range, fixed point can at the expense of a smaller range 17:40 < nickelpro> I'm 95% the notchian server uses fixed point internally, don't know why it uses a double in the protocol 17:40 < mathuin> Right. We don't need to know to the nanometer where we are on a block. 17:40 < mathuin> The half-centimeter is enough. 17:41 < mathuin> a) because Notch liked them maybe and b) ... I'm out. 17:42 < woder> weird, still doesn't work even after I set it to reply to the position and look packets 17:43 < nickelpro> woder: Did you send back the exact same position and look it sends you? 17:43 < mathuin> The next step I'd take would be to tcpdump vanilla client with vanilla server, then your client with vanilla server, and see how they differ. 17:43 < woder> yes, its the same data: read out of stream and put in back in 17:44 < nickelpro> woder: What protocol version? 17:44 < woder> 1.7.2 17:44 < nickelpro> woder: Can't do that then, packet ids are different in Clientbound and Serverbound 17:45 < woder> well, I change the packet id :P 17:45 < mathuin> What packet ids are you using? 17:46 < nickelpro> woder: Also the serverbound packet doesn't have a "Stance" field 17:48 < woder> nickelpro: here is snippet of the code used http://pastebin.com/6CK28EGF 17:59 < nickelpro> woder: Huh, looks good. Someone who knows more about movement will have to take a look at it 17:59 < woder> yeah... its left me rather puzzled 18:00 < Thinkofdeath> buf.writeBoolean(true); -> buf.writeBoolean(c.onground); maybe? 18:01 < nickelpro> Thinkofdeath might have got it there 18:03 < woder> Thinkofdeath: changed that but to no avail 18:05 < Thinkofdeath> woder: No idea then 18:05 < woder> lol, this is going to be fun 18:37 < mathuin> Why is stance y + 1.6? 18:38 < mathuin> You could try y+ 1.8 and see if the client gets kicked for illegal stance. :-) 18:38 < woder> sure 18:38 < mathuin> That would at least tell you if the packet's being decoded. 18:39 < mathuin> (if the wiki page can be trusted on the kick issue) 18:40 < woder> using y + 1.8 still nothing 18:40 < mathuin> Okay, then the problem is something else. 18:41 < woder> debug claims it receives the packet though 18:41 < mathuin> Maybe that illegal stance thing is a lie? 18:43 < Thinkofdeath> It was true at some point, whether it still is i'm not sure 18:44 < [z]> I still think the "stance" is the distance between the two numbers, ie player height, rather than either of the two numbers... 18:46 < woder> Unless the server is receiving the packet but not reading it, it isn't kicking 18:48 < ellisvlad|asleep> Anyone know a good way to teleport to another world with the same dimention 18:52 < barneygale> unload the chunks, reload them? 18:52 < barneygale> or switch to another dimension then immediately back? 18:52 < barneygale> idk 18:52 < nickelpro> barneygale: First option 18:53 < nickelpro> Just unload all the chunks the client knows about and then load in your knew world 18:53 < nickelpro> new* 18:54 < ellisvlad|asleep> Is there a good way to trigger the client to do the "Changing world" screen? 18:56 < barneygale> I think you can only do that with the Respawn packet with a different dimension 18:57 < nickelpro> ellisvlad|asleep: Respawn in a temp dimension (either dimensiion different from the current one), then immediatly respawn back to desired dimension 18:57 < nickelpro> that's how it's usually done 18:57 < barneygale> Does the respawn packet automatically unload old chunks? 18:57 < nickelpro> barneygale: yes 18:57 < barneygale> sweet 18:58 < barneygale> and what triggers you coming out of the "changng world" screen? the client having received all chunks its expecting? 18:58 < barneygale> or maybe a Player Position packet? 18:59 < nickelpro> barneygale: position and look, but you need to seed them some chunks first or weird shit happens 19:00 < nickelpro> same reason you can't respawn into the same dimension, vanilla client doesn't handle it well 19:21 < mathuin> Do a crazy stupid double respawn. 19:21 < mathuin> ... oh, nickelpro already covered that. 19:21 < mathuin> Mental note: read alll the scrollback. 20:16 < rom1504> it's not very mental if you write it down --- Day changed jeu. nov. 28 2013 05:34 < WizardCM> are the session servers on the fritz again? 06:30 < umby24> Anyone have any clue what the correct order on packets and so on is supposed to be for 1.7? 06:30 < umby24> my client won't get health updates and the server corrects my location multiple times 06:34 < Eviltechie> WizardCM: The answer to that question is usually the same as "is it the weekend or a holiday" 06:35 < WizardCM> Eviltechie: haha, yeah... 14:44 <+sadimusi> nickelpro: how well is your client working already? 18:01 < nickelpro> sadimusi: It works, I'm quite proud of the plugin and event API. I'm working on the world/map plugin right now, then I'll do physics and pathfinding. Then it can start doing actual fun stuff 19:27 <+sadimusi> nickelpro: can plugins send raw packets? I want to test if a bug made it to 1.7 and my own tools aren't updated yet… 19:28 < nickelpro> saidmusi: Ya, easily 19:29 < nickelpro> sadimusi: This is what sending a handshake packet looks like https://github.com/nickelpro/spock/blob/master/spock/plugins/helpers/start.py#L33-L41 20:49 < TheUnnamedDude> What packet are sent to make the client send the player damage sound? --- Day changed ven. nov. 29 2013 01:02 < basicer> In 1.6.4 the server could sends -1 Window and -1 Slot to change the icon under the cursor, anyone know what 1.7.2 sends to do that ? 01:19 < basicer> Ah, it is suspose to be -1, but the client reads it as an unsigned byte, and then checks if it == -1, : ( 06:05 < IronOxide> I'm having trouble finding where, in the source, that player movement (or anything else) affects what chunks are loaded. Can someone give me a hint? Perhaps a class to look into? Thanks 06:25 < zuazo> IronOxide: see packets 51 and 56 (for 1.6.4) 06:26 < IronOxide> packets? I'm looking for the code in the source. The logic behind how chunks are chosen for loading. 06:26 < IronOxide> packets are mp data transfers, right? 06:27 < zuazo> Packet51MapChunk and Packet53BlockChange classes 06:27 < zuazo> sent from the server to the client for chunk loading 06:27 < IronOxide> I literally found them as i just tabbed out seconds ago 06:28 < IronOxide> was in EntityPlayerMP and was already on the page referring to them!! 06:28 < IronOxide> whoa, big cooincidence. thanks for the tip. i really appreciate it. 06:28 < zuazo> np ;-) 06:31 < IronOxide> it appears to be requesting loadedChunks from the server, but I wonder where what chunks are to be loaded is determined. I want to get a view of how MC does it since my 2D game uses a chunk architecture and I'm at the point of coding player traversal thru the land. 06:34 < IronOxide> Looks like PlayerManger may have a lot to do with it. 06:36 < zuazo> WorldServer.tick() calls PlayerManager.updatePlayerInstances, where the chunks seems to be loaded 06:36 < IronOxide> checking 06:41 < IronOxide> phew. overwhelming. especially when still partially obfuscated. 06:49 < IronOxide> The more I view MC source the more determined I am to not let this kind of class bloat occur in my own projects. It just seems... like trying to unbind a tub of 34 knotted electrical cords. 13:56 < Grum> < IronOxide> [06:49:21] The more I view MC source the more determined I am to not let this kind of class bloat occur in my own projects. It just seems... like trying to unbind a tub of 34 knotted electrical cords. <== ++++++ :p 15:16 <+Prf_Jakob> haha... tho that is a bit of the problem of only having classes, being able to just do free form functions can help a bit with that type of problem. 15:33 < Grum> Prf_Jakob: you can have that, called static methods ;) 15:37 < Grum> also that in no way would make it better 15:39 <+Prf_Jakob> modeling game objects is hard 15:40 <+Prf_Jakob> Java style polymorphic classes doesn't really lend itself to it. 15:41 < Grum> absolutely 15:41 <+Prf_Jakob> https://www.youtube.com/watch?v=EQhlp6rCrY8 <-- this talk really resonated with me 15:41 < Grum> using inheritance for that means PAIN 15:42 <+Prf_Jakob> yeah 15:42 < Grum> explains the time it takes to undo that ;) 15:43 <+Prf_Jakob> hehe :) 15:48 < Grum> almost at the point he will explain it 15:49 < Grum> but i'm sure its basically 'aspect based' through mixins (but lua is a bit more flexible than that, you can just ... overwrite methods runtime) 15:50 <+Prf_Jakob> Yeah exactly 15:51 <+Prf_Jakob> And indeed lua (or most dynamic language) makes that really easy to do. 15:52 < Grum> and a fucking mess :) 15:52 < Grum> they say that is hard to manage, imagine just prodding into 'objects' changing them 15:53 < Grum> haha he says mixins indeed 15:53 < Grum> :p 15:54 <+Prf_Jakob> It depends on how you implement the mixins (since thats not a feature of Lua from the start). 15:56 <+Prf_Jakob> But I can see how they might be hard to manage, or different, oth I think its preferrable to a class hirachy based approach. 15:56 < Grum> oh it is 15:57 < Grum> we're figuring out a sane way to do it for MC :) 15:57 <+Prf_Jakob> In Java, that seems... interesting. 15:58 < Grum> oh yes 15:58 <+Prf_Jakob> Actually depending on how flexible java @interfaces are you could do it that way. 15:59 < Grum> its not 15:59 < Grum> you can do a proxy but that is also painful 16:02 <+Prf_Jakob> Ok, I'm not all that familiar with the inner workings of Java so I can't really comment, but please let me know how you solved it. 16:03 <+Prf_Jakob> I'm working on a language of my own and solving this problem is on the list of things I want to be in it. 16:06 < Grum> :) --- Day changed sam. nov. 30 2013 02:22 < Not-002> [MCPP] RobertLeahy pushed 4 commits to 1_7_protocol [+6/-3/±6] http://git.io/XMzCUQ 02:22 < Not-002> [MCPP] RobertLeahy 3b24a5f - IP Address Range 02:22 < Not-002> [MCPP] RobertLeahy b5d3e15 - Blacklist 02:22 < Not-002> [MCPP] RobertLeahy b976eb7 - Permissions Makefile Update 02:23 < Not-002> [MCPP] RobertLeahy b274267 - Server Fix 02:28 < Not-002> [fCraft] fragmer * r2287 2 files : Fixed an regression in ChatPreview that prevented ConfigGUI's designer from working 02:29 < Not-002> [fCraft] fragmer * r2288 2 files : Improved organization of event handling code in ConfigGUI's MainForm. 02:30 < Not-002> [fCraft] fragmer * r2289 2 files : Prevented ReSharper from inserting explicit "private" modifiers by default. 19:54 < coolcat> In region files, are the chunks all paded to the nearest 4096 bytes ? 19:56 < dexter0> coolcat: http://minecraft.gamepedia.com/Region_file_format 19:56 < dexter0> In short, yes 19:59 < coolcat> So the table has them all paded but in reality they arent..? 20:00 < dexter0> The chunk data may not end up occupying a multiple of 4kB, in which case padding is added. 20:01 < coolcat> Oh, and then the length before the data is telling you what is not paded? 20:02 < dexter0> yes, that is the size of the compressed data 20:03 < coolcat> Alright cool, thanks 20:03 < dexter0> minus 1 20:03 < coolcat> minus 1 ? 20:03 < dexter0> the byte that store the compression type counts as pat of that size 20:03 < coolcat> oh because of the compression type? 20:03 < dexter0> yes 20:03 < coolcat> k 20:04 < dexter0> https://github.com/SirCmpwn/Craft.Net/tree/master/source/Craft.Net.Anvil should have complete read/write support if you need an example. 21:42 < Not-002> [fCraft] fragmer * r2290 2 files : Stored more ReSharper formatting rules to team-shared settings. For consistency! --- Day changed dim. déc. 01 2013 00:10 < Not-004> [fCraft] fragmer * r2291 3 files : Initial implementation of "Paste" and "PasteNot" brushes. 00:30 < Not-004> [fCraft] fragmer * r2292 2 files : Fixed incorrect padding in Packet.MakeExtInfo(...), which threw ArrayIndexOutOfRange exception and hung connecting CPE-enabled clients. 02:36 < barneygale> 1.7 seems to move `logs/latest.log` to `logs/yyyy-mm-dd-i.log.gz` on startup, where that date is when the latest.log was generated. How does it know? 02:36 < barneygale> filesystem? 02:36 < barneygale> or maybe level.dat? 02:38 <+clonejo> If I had done it, I would have referred to the timestamp attribute of the file 04:21 < Not-004> [fCraft] fragmer * r2293 12 files : [does not build] Started overhauling the brush infrastructure. IBrush and IBrushInstance interfaces are getting merged into a single simpler interface. Implementations are being refactored accordingly. Writing new brushes should be much simpler when I'm done here. 07:15 < Not-004> [Craft.Net] SirCmpwn pushed 1 commit to 1.7.x [+0/-0/±2] http://git.io/eoH1Sg 07:15 < Not-004> [Craft.Net] SirCmpwn a45aa53 - Implement remaining 1.7.x packet definitions 07:29 < Not-004> [Craft.Net] SirCmpwn pushed 1 commit to 1.7.x [+0/-0/±1] http://git.io/J1uxCw 07:29 < Not-004> [Craft.Net] SirCmpwn a4b4024 - Assign packet IDs to packet implementations 07:36 < Not-004> [Craft.Net] SirCmpwn pushed 1 commit to 1.7.x [+0/-0/±1] http://git.io/KsWw1g 07:36 < Not-004> [Craft.Net] SirCmpwn 6c717c6 - Switch into Play mode after handling Login Start 08:10 < Not-004> [fNbt] fragmer pushed 1 commit to master [+0/-0/±1] http://git.io/nlRDNQ 08:10 < Not-004> [fNbt] fragmer a5e5fff - Updated .gitignore to match SirCmpwn's fork 08:37 < Not-004> [fNbt] fragmer pushed 1 commit to master [+5/-0/±0] http://git.io/40Jn3g 08:37 < Not-004> [fNbt] fragmer 16ad5a0 - Merged SirCmpwn's serialization code - PR #2 17:28 < ellisvlad> Hi# 17:29 < ellisvlad> Having some trouble with special characters.. I know the client uses code page 437, how do I access the special characters in it? anything beyond chr(128) appears as a weird question mark 17:30 < Eviltechie> Java? 17:31 < ellisvlad> C++ 17:55 < TheUnnamedDude> wat o.O 18:03 <+ammar2> ellisvlad: could you show us the relevant bit in your code where you are encoding strings to be sent to the client 19:30 < Drainedsoul> ellisvlad: Show your code to me. 20:04 < Not-004> [fNbt] fragmer pushed 3 commits to master [+0/-0/±11] http://git.io/Upo8Ww 20:04 < Not-004> [fNbt] fragmer 0da9099 - Included the Serialization code in the project 20:04 < Not-004> [fNbt] fragmer 08c96ff - Cleaned up formatting and removed unused using directives in the newly-merged code. 20:04 < Not-004> [fNbt] fragmer 012cbac - Sped up NbtSerializer.Deserialize significantly by eliminating repeated type comparisons using "is". 20:52 < btilm305> I'm trying to create a basic client for 1.7.2. My client authenticates and works, but my player isn't visible on a vanilla server 20:52 < btilm305> and http://wiki.vg/Protocol_FAQ isn't updated 20:53 < btilm305> Are there any packets that I must send after I receive the join game packet? 20:56 < umby24> client settings, and once you receive player position and look, you must repeat it back to the server 20:56 < btilm305> let me try 21:01 < btilm305> Ah, client settings! 21:04 < umby24> Works I take it? :P 21:08 < btilm305> Yeah thanks 21:08 < btilm305> now velocity.... 21:08 < btilm305> wouldn't that require for me to actually record values from chunk packets 21:09 < btilm305> and calculate where my player should land if it gets hit? 21:09 < umby24> not sure, in my library movement is completely broken atm. 21:09 < btilm305> why doesn't the server do this? lol. whenever the player in this basic client gets it, it turns red but doesn't knockback 21:09 < btilm305> ah 21:09 < umby24> The server continually sends position updates, doesn't seem to like that I want to move. 21:21 < btilm305> Any idea on how to at least make the client not hover? :\ 21:24 < umby24> you may have more luck with movement than I, but once spawned you could check if there is a block under you. If not, then begin moving yourself down until you hit ground 23:08 <+Amaranth> Kicking a client in 1.7 is the server sending them a disconnect packet and waiting for the client to close the socket? 23:18 < umby24> I would think the server would send the packet then assume you have received it, and close the socket on it's end. It's then up to the client to disconnect on its end as well 23:20 <+md_5-> ^^ 23:20 <+md_5-> wouldnt make sense any other way 23:31 < Grum> and that is what it does 23:31 < Grum> send the packet and in the future of that 'sending' it closes the channel 23:58 <+Amaranth> Grum: It looks like it sends the packet and then just stops reading from the socket until it dies --- Day changed lun. déc. 02 2013 00:02 < Grum> code says that on kick it should close it 00:03 < Grum> doesnt mean it does that whenever someone randomly sends the disconnect packet 00:03 < Grum> but our method does it :/ 00:08 <+Amaranth> Grum: The method that vanilla sends the disconnect packet from doesn't seem to close the socket 00:09 <+Amaranth> Unless the setAutoRead(false) call on ChannelConfig is actually meant to be called setSocketOpen(false) 00:10 < Grum> we dont do anything automagically 'onDisconnect' 00:11 < Grum> could be oversight at that stage 00:11 <+Amaranth> So kicking the client is just sending them the disconnect packet and waiting for them to close the socket? 00:12 <+Amaranth> There is a really bad bug here in vanilla and I'm trying to make sure I understand why 00:20 < Grum> depends in which stage 00:20 < Grum> when you kick from play i know it is handled properly 00:20 < Grum> could be the other ones might not be 00:21 <+Amaranth> Grum: The method the kick command calls does not seem to do what you say 00:22 < Grum> it does? 00:22 <+Amaranth> It sends the disconnect packet and then does the setAutoRead(false) thing 00:22 < Grum> http://pastie.org/private/dbvnemvblr8oddonhio0lw 00:22 < Grum> not in my code 00:23 <+Amaranth> Son of a bitch, got used to the future being empty so I didn't even try to scroll over 00:23 < Grum> http://pastie.org/private/re9w9k6eoscbvi5urc4la 00:23 < umby24> If I may ask since you're here grum, what is the order packets are sent for the server to accept your location updates? Client settings, plugin message, ..?