01:04 <+sadimusi> the idea is that you still can have multiple clients for the same account 01:04 < Dinnerbone> Can't get it easily from java, changable, not easily unique, very likely to have conflicts on the same person on multiple computers 01:05 < Dinnerbone> ie at home I'm Dinnerbone and at work I'm Dinnerbone so if clientToken==hash("Dinnerbone") I'm not gonna be able to log in on both 01:05 <+md_5> so 01:05 <+md_5> make it a business model 01:05 <+md_5> license per computer, not per user! 01:05 * Dinnerbone slaps md_5 01:06 < Dinnerbone> Also I just realized the wiki article on yggdrasil doesn't cover refresh :( 01:06 <+sadimusi> did somebody finally write one? 01:06 < Dinnerbone> I hope that doesn't cause custom implementations to skip it 01:06 * sadimusi was too lazy 01:08 < PlayerW_OName> wait, client token in returned JSON is exactly same as in sended JSON? 01:08 < dx> >There were no results matching the query. Create the page "Yggdrasil" on this wiki 01:08 <+sadimusi> dx: http://wiki.vg/Session 01:08 <+sadimusi> it's pretty horrible 01:08 < dx> sadimusi: i suspected so 01:09 < Dinnerbone> PlayerW_OName, yes. It's something your client generates. 01:09 < Dinnerbone> If you don't send one, one will be generated on Yggdrasil and sent back for you to keep 01:09 < Dinnerbone> So you don't *have* to generate your own for the first use 01:09 < Dinnerbone> But you should 01:10 < PlayerW_OName> ohh, that's what i was looking for, i'll save that in java properties :) 01:13 < PlayerW_OName> is that right: 01:13 < PlayerW_OName> String jsonDecoded = "{\"agent\":{\"name\":\"Minecraft\",\"version\":1},\"username\":\"" + username + "\",\"password\":\"" + password + "\",\"clientToken\":\"" + index.config.getProperty("clientToken") + "\"}" 01:14 < PlayerW_OName> many backslashes :P 01:15 < dav1d> where does Yggdrasil come from? 01:15 < dav1d> Java has no escape-string literals thingy 01:15 < dx> dav1d: norse mythology? or what are you asking exactly 01:15 < dav1d> like python ' or """ 01:16 < dav1d> or D `` 01:16 < dav1d> `"I am a string"` 01:16 < SinZ> PlayerW_OName: Kinda, if you don't have a client token yet, you dont need to send it (but remember to save what you get sent back) 01:16 < dav1d> '"I am a string"' 01:16 < dav1d> """"I am a string"""" 01:16 < dx> ``I am a superior string'' 01:16 <+pdelvo> @"Jeah \o/" 01:17 < dav1d> java really sucks :> 01:17 < dx> hmm it doesn't have heredocs either 01:17 < SpaceManiac> dav1d: python ' and " are the same, you might be thinking r""? 01:17 < dav1d> PlayerW_OName: why don't you use a json library? 01:17 < dav1d> SpaceManiac: nope 01:17 < SinZ> @"this "is" a decent string" 01:17 < dav1d> SpaceManiac: but I expressed it with the wrong words 01:17 < dx> SpaceManiac: that's the point, having them as the same thing to you don't have to add backslashes to " 01:17 < SpaceManiac> ah right 01:17 < PlayerW_OName> look, it's json decoded, no encoded 01:17 < dav1d> dx: r"" is something else again 01:17 < dx> dav1d: yes 01:17 < dav1d> which is also pretty useful 01:17 < PlayerW_OName> i'll use google gson 01:18 < SinZ> PlayerW_OName: might work out for you, thats what mojang uses 01:18 <+md_5> java really sucks :> 01:18 < dx> dav1d: you still need to add backslashes to " 01:18 < dav1d> especially for regexes (well the python re module is smart enough to detect these escape-mistakes) 01:18 <+md_5> could write a java compiler to accept that 01:18 < dav1d> md_5: that obviously was a joke 01:18 < dx> write a compiler? ohgodwhat 01:19 < dav1d> saying a language sucks because it has no fancy, additional string literals thingy is just stuipid 01:19 < dav1d> dx: I guess to jvm bytecode? 01:19 < dav1d> then decompile it 01:19 < dav1d> recompile with javac 01:19 < dav1d> :> 01:19 < dx> !pbunny generate theme=java 01:19 < dx> ^ fund it 01:19 < dav1d> pls no 01:20 < dx> :D 01:20 < PlayerW_OName> so ill need to do if(index.config.getProperty("clientToken") == "") index.config.setProperty("clientToken", tokenFromMojang) 01:20 < dx> bots aren't allowed here anyway 02:05 < PlayerW_OName> i don't understand it,anyone know how would the string look for gson.toJson(String)? 02:06 <+md_5> "string" 02:06 < PlayerW_OName> yep 02:06 < PlayerW_OName> forgot "" 02:08 < Ampzilla> I'm really confused about this whole "Updating 1.6" section. Am I supposed to first get the json file(s) and then use them to determine where the actual game files are on the server? 02:09 < PlayerW_OName> not sure, but probably yes 02:11 < dx> Ampzilla: writing a launcher? 02:11 < dx> also lol forgetting quotes. off to a good start huh 02:12 < Ampzilla> yeah dx 02:12 < dav1d> anyone knows the bounding box of a player? 02:12 < dx> dav1d: i think it's in the curse minecraft wiki 02:13 < dx> sec, finding it 02:13 < Ampzilla> I've got the authentication for login all figured out with the authserver, but I don't understand how you are supposed to get all of the game resources to create a new minecraft folder 02:13 < dav1d> dx: thanks! 02:13 < dav1d> dx: http://www.minecraftwiki.net/wiki/Entity 02:13 < dav1d> didn't look there.. 02:14 < dx> dav1d: oh awesome, i was looking in players 02:14 < dx> *player 02:14 < PlayerW_OName> Ampzilla: if you figured out logging, how do you encode json? 02:15 < Ampzilla> for sending the json I'm just using a string that's formatted like a json file 02:15 < PlayerW_OName> lul 02:15 < PlayerW_OName> so why am i messing with gson xD 02:15 < Ampzilla> the authserver's response I'm deserializing into a class and then getting the client token and session token 02:15 < dx> dav1d: so wait wait wait, does this mean brala is going to stop being a noclip-only viewer? 02:15 < dav1d> omg 02:15 < dav1d> dx: yes 02:15 < dx> dav1d: whoa. 02:16 < Ampzilla> what language are you using? 02:16 < dav1d> dx: there is brala.physics.physics, brala.physics.survival and brala.physics.creative 02:16 < dav1d> dx: :> 02:16 < PlayerW_OName> java 02:16 < Ampzilla> c# 02:16 < dav1d> now I need a smart way of finding valid points for a player :> 02:17 < dav1d> shouldn't be that hard, but I want a beautiful design 02:17 < PlayerW_OName> hmm, im forward to learn c# that summer 02:18 < Ampzilla> I really like .net =D 02:20 < PlayerW_OName> first i vas using c++, but it had low amount of methods in standard libs (like java's string.split(regex)) 02:20 < PlayerW_OName> was* 02:21 < Ampzilla> okay tell me if this makes sense: first get the versions.json file to determine all of the currently available mc versions, then depending on which version you want use the "id" from the versions.json file to determine the url of the version you want (ex. versions/1.6.2) and then get the json file from that new url, in this case 1.6.2.json. Once you have the 1.6.2 json file you can MAYBE figure 02:21 < Ampzilla> out the files available within that directory? 02:25 < dav1d> there are more files than 1.6.2.jar? 02:25 < Ampzilla> tons more 02:25 < dav1d> current profile and session: https://github.com/Dav1dde/BraLa/blob/master/brala/minecraft/profiles.d 02:26 < dav1d> finding all minecraft jars: https://github.com/Dav1dde/BraLa/blob/master/brala/minecraft/folder.d 02:26 < Ampzilla> I need to download everything, basically a fresh copy of the .minecraft directory. So all the libraries and game assests 02:26 < dav1d> woot, I marked the last function @property 02:26 < dav1d> Ampzilla: my minecraft 1.6 launcheer doesn't do that? 02:27 < dav1d> nope it doesn't 02:28 < Ampzilla> my launcher is inspired by multimc, so it can have multiple fresh instances of the game in their own directories 02:28 < Ampzilla> when a user creates a new minecrat instance, it's supposed to create a fresh directory in a specified location and act like the official launcher does if you delete everything in .minecraft 02:29 < dav1d> some genious in here uses git to switch between versions :> 02:31 < dx> heh using git for a launcher 02:31 < dx> not sure how big that dep would be 02:32 <+pdelvo> can you merge in a mod? :D 02:33 < Ampzilla> my launcher will eventually be able to do that...it's a tall task =X 02:33 < dx> pdelvo: you can unzip the jars to folders as long as they have the same name, so probably you can. 02:33 < Ampzilla> that's how you have to unload the native dlls if you want to launch minecraft the same way the official launcher does 02:34 < dx> Ampzilla: does this code do what you want to do? https://github.com/SinZ163/SinZ-MC-Launcher/tree/master/SinZ%20MC%20Launcher/Download 02:35 < dav1d> this all sucks 02:35 < dav1d> in python I would so use a set 02:35 < dav1d> but meh 02:36 < Ampzilla> dx: kind of, it shows how to download the current version jar file 02:36 < Ampzilla> dx: doesn't help explain where all the directories/files outside of the "versions" folder comes from 02:36 < Ampzilla> I need to dig around though 02:36 < dx> Ampzilla: https://github.com/SinZ163/SinZ-MC-Launcher/blob/master/SinZ%20MC%20Launcher/Mojang/VersionList.cs ? 02:37 < Ampzilla> sorry, yes, I'm blind 02:37 < Ampzilla> <3 02:37 <+pdelvo> Oh noes. Application.DoEvents(). :( 02:37 < dav1d> pdelvo: is that bad? 02:37 < Ampzilla> sounds bad =X 02:37 <+pdelvo> jeah it is 02:37 < dx> is that something to continue the main loop from any part of the code? 02:37 < dav1d> sounds like a gui toolkits yield 02:37 < Ampzilla> I think I'll either use the async download file method or use a .net background worker 02:38 < SinZ> dx: that is my outdated code 02:38 < dx> dav1d: yeah, i'm thinking the same 02:38 < dx> SinZ: whoops. 02:38 < Ampzilla> Hey SinZ 02:38 < dav1d> now I need to transform client coordinates into block coordinates 02:38 < dav1d> 2:38am -_- 02:38 < dav1d> floor? 02:38 < dx> 21:38am -_- 02:38 < dav1d> I've already done that somewhere in my code 02:38 < dav1d> ... 02:39 <+pdelvo> 2:38 am. I have to wake up at 6:00 am :D 02:39 < dav1d> pdelvo: don't go to bed, problem solved 02:40 <+pdelvo> great idea :) 02:40 < Ampzilla> the weekend went by so fast 02:41 < dx> ...why did i think today is monday 02:41 <+pdelvo> its is monday for me :( 02:41 < dx> probably the same reason i wrote "am" in the message up there 02:41 < Ampzilla> dx: this is exactly what I need 02:41 < dx> Ampzilla: \o/ 02:43 < dav1d> ok 02:43 < dav1d> floor seems to be right 02:43 < dx> SinZ: can't find license text anywhere :/. feels uncomfortable to suggest someone to use your code for inspiration if that isn't clear 02:43 < Ampzilla> agreed 02:44 < SinZ> dx: I could never chose a license 02:44 < dx> SinZ: hm? why not? 02:45 < dav1d> maaaaan 02:45 < dav1d> fcorner.x.floor.to!int, 02:45 < SinZ> too many to chose from, wil prob be apache license or something 02:45 < dav1d> is this cool, or not? 02:46 < dx> dav1d: hold on, gotta find the rosetta stone for these runes you wrote 02:46 < dav1d> :> 02:46 < dav1d> instead of: to!int(floor(fcorner.x)) 02:47 <+pdelvo> reminds me to extension method in c# 02:49 < dav1d> http://vp.dav1d.de/2o4 ... I think I should slap myself for hardcoding this 02:50 < dav1d> might do later 02:50 <+pdelvo> gn8 02:51 < dav1d> gn8 pdelvo! 03:03 < LaxWasHere> Hola! 03:04 < dx> dammit lax is here 03:04 < mbaxter> No dx 03:04 < LaxWasHere> I was never here. 03:04 < mbaxter> He was here. This is merely his memory. 03:04 < dx> okay 03:04 < dx> mbaxter: oh that makes sense 03:04 < mbaxter> it's but an echo 03:04 < mbaxter> of laxes past 03:04 < LaxWasHere> Educate yourself young man. http://youtu.be/BTOODPf-iuc 03:05 < LaxWasHere> Time to build my Freenode empire 03:05 < dx> i think i saw this video 03:11 < dav1d> dammit 03:11 < dav1d> I am nearly 2m 03:40 < PlayerW_OName> how do i send that json to auth server? Will OutputStreamWriter do the job? 03:41 < Ampzilla> streamwriter works 03:41 < Ampzilla> especially if your json is just a string =D 03:41 < PlayerW_OName> lul, returns HTTP response code 400 03:41 < Ampzilla> could be a formatting issue with your json? 03:42 < PlayerW_OName> no, json parser worked well with it 03:42 < Ampzilla> username/password issue? 03:42 < PlayerW_OName> wait, i'll check that again 03:44 < PlayerW_OName> would username or password return bad request? 03:44 < Ampzilla> no idea to be honest 03:44 < PlayerW_OName> rather bad login-something 03:44 < Ampzilla> what uri? 03:45 < Ampzilla> and you are posting for sure 03:45 < Ampzilla> ? 03:45 < PlayerW_OName> wait, ill put whole code on pastebin 03:45 < Ampzilla> k 03:45 < PlayerW_OName> yes, post 03:45 < Ampzilla> remove username/pw if it's hardcoded =D 03:45 < Ampzilla> unless you have an actual file 03:45 < Ampzilla> unlike me lol 03:46 < PlayerW_OName> http://pastebin.com/PiEzbR62 03:47 < PlayerW_OName> easy, no hardcoding(excluding json xD) 03:47 < TkTech> MediaWiki's database is so convoluted... 03:52 < Ampzilla> the only thing I'm not sure about is the charset 03:53 < Ampzilla> I'm not even sure it matters, but it's really the only difference I see 03:55 < Ampzilla> http://pastebin.com/iVejkB4G 03:56 < Not-003> [BraLa] Dav1dde pushed 4 commits to master [+2/-0/±10] http://git.io/zGSHRQ 03:56 < Not-003> [BraLa] Dav1dde 2fcdd7d - fix pseudoqueue 03:56 < Not-003> [BraLa] Dav1dde a4e2c3e - use queue.get_all 03:56 < Not-003> [BraLa] Dav1dde 65a86dc - move camera from feet to head 03:56 < Not-003> [BraLa] Dav1dde aab8df4 - implement very basic physics, well bounds checking 03:57 < PlayerW_OName> changed from text/json; charset=utf-8 to application/json and still same HTTP_400 03:57 < PlayerW_OName> ;( 04:00 <+AndrewPH> TkTech: hah you think mediawiki's bad 04:01 <+AndrewPH> i have some horror stories that I'm not at liberty to share 04:02 < Ampzilla> Even if the json string had an error I think it would still work, I just broke mine and it still returned data 04:04 < Ampzilla> PlayerW_OName: Is it possible you are requesting the response to quickly after writing the json to the output stream? 04:05 < PlayerW_OName> no, after clicking login, it hangs program for about 5 seconds 04:06 < Ampzilla> that hang could be from resolving the url though, no? 04:06 < PlayerW_OName> hmm 04:06 < PlayerW_OName> wait 04:07 < Ampzilla> what about move the input.read outside of the try block? I think you would have to declare it above the try, initialize it in the try and then read after it requests all of the data 04:11 < PlayerW_OName> no, it reads and saves to byte array 04:13 < PlayerW_OName> btw input.read needs try,catch :P 04:14 < Ampzilla> oh okay sorry 04:15 < Ampzilla> is it a 400 or a 40x? 04:15 < PlayerW_OName> 400 04:15 < PlayerW_OName> bad request 04:24 < Ampzilla> Do you need to do something with the "Authentication" property of the HttpURLConnection? 04:24 < Ampzilla> just randomly guessing at this point 04:27 < PlayerW_OName> nevermin, i did it 04:27 < Ampzilla> what was the problem? 04:27 < PlayerW_OName> idk, i used that: http://www.xyzws.com/Javafaq/how-to-use-httpurlconnection-post-data-to-web-server/139 04:27 < PlayerW_OName> :P 04:28 < PlayerW_OName> return excutePost("https://authserver.mojang.com/authenticate", jsonEncoded); :P 04:28 < PlayerW_OName> oh, and changed application/x-www-form-urlencoded to application/json 04:29 < Ampzilla> content length and the content type are different than what you had 04:29 < Ampzilla> I bet you that was the problem 04:29 < Ampzilla> especially the content length 04:30 < PlayerW_OName> i didn;t had length :P 04:30 < Ampzilla> yeah that's what I mean 04:31 < Ampzilla> who knows, I didn't have that either actually so nevermind, good job getting it to work 04:32 < Ampzilla> i'll tackle this asset download stuff tomorrow, see ya 12:58 < PlayerW_OName> hello 12:58 <+pdelvo> hi 13:01 < PlayerW_OName> ok, when i send empty clientToken in JSON, shouldn't mojang reply me correct token? 14:13 < Not-003> [netherrack] thinkofdeath pushed 1 commit to master [+0/-0/±2] http://git.io/z8oaUw 14:13 < Not-003> [netherrack] thinkofdeath fd7055a - Fix hay block placement 14:58 <+sadimusi> I'm rewriting all the yggdrasil stuff on the session page, does it look ok so far? http://wiki.vg/Session#Authentication 15:05 <+sadimusi> and I noticed we're missing the {{citation needed}} template :D 15:07 < Jckf> sadimusi: Great! I can finally update my tools' login classes \o/ 15:08 < Jckf> Has anyone here started poking around Cube World, by the way? 15:08 <+pdelvo> jeah I started but I dont havent done much 15:10 < Jckf> Ditto. I started on a proof of concept man in the middle proxy, but so far I can't even log in =D 15:10 < Jckf> I also snagged the domain cwdevs.org 15:10 < Jckf> The same way I originally snagged mcdevs.org and pissed TkTech off *blush* 15:11 <+pdelvo> nice :D 15:12 < Jckf> Technical information about CW seems to be pretty spread out right now 15:12 < Jckf> so the idea was a wiki like wiki.vg 15:12 <+sadimusi> why like it? 15:12 <+sadimusi> the idea was to do it _on_ wiki.vg 15:12 < Jckf> Perhaps with support from you people =) 15:12 < Jckf> Orly? 15:12 <+pdelvo> tktech wanted to put a cubeworld section on wiki.vg 15:13 < Jckf> Oh cool 15:13 * Jckf hasn't been paying attention in class 15:14 < Jckf> Well then 15:14 < Jckf> At least we have a useless domain =) 15:15 < TkTech> The cubeworld guys haven't been horribly responsive, was trying to get permission to use some media assets like the logo. 15:15 < TkTech> They've kinda dropped off the face of the internet. 15:17 < TkTech> sadimusi: Looks good, IMO the page should be split into the old and the new, and Snoop on its own page. 15:17 < TkTech> sadimusi: I'd also list some of the known exception types. 15:17 <+sadimusi> good idea 15:17 <+sadimusi> I also wanted to split up the page 15:17 <+sadimusi> the updating part doesn't really belong there either 15:18 < TkTech> (Some of the Exceptions seem useful, like UserMigratedException (https://gist.github.com/TkTech/1ac813864258a885d383)) 15:20 <+sadimusi> I keep getting "Bad login" on joinserver.jsp, maybe the session id wasn't documented correctly by itsme 15:22 < TkTech> sadimusi: It looks okay from my recollection. Try doing it as a POST not a GET. 15:24 <+sadimusi> TkTech: POST gives 504 (gateway timeout) 15:27 <+sadimusi> m( just forgot the "token:" 15:31 < TkTech> sadimusi: It works as a GET? I thought that was deprecated eons ago. 15:31 <+sadimusi> nope, works fine 16:08 <+sadimusi> did the old login system have a name too? 16:10 < TkTech> sadimusi: Not that I ever knew of 16:18 < TkTech> Wonder if there's any way to get top contributor for each month on the wiki, send them the local value of a case of beer. 16:20 < TkTech> Looks like a bunch of extensions do user "scoring", but focused on all-time vs. monthly. 16:24 <+sadimusi> I'm not sure if a automated system is the best idea 16:27 < iBotPeaches> yeah whoever moves the pre-release into protocol, gets major contribution :o 16:31 <+sadimusi> at this rate the spambots make the recent changes page almost unusable :/ 16:31 <+sadimusi> is there a better way to hide them than namespace=0? 16:32 < Thinkofdeath> sadimusi: http://wiki.vg/index.php?namespace=2&invert=1&title=Special%3ARecentChanges 16:33 <+sadimusi> oh, there was even a checkmark for it o.O 16:33 <+sadimusi> thanks 16:33 < Thinkofdeath> np 16:33 < iBotPeaches> sweet, can that be made the default of that link 16:33 <+sadimusi> I guess I can live without seeing changes to user pages anyway 16:35 <+sadimusi> confirming users might take a few more clicks 16:36 <+sadimusi> TkTech: thoughts? 16:37 <+sadimusi> I'll just change it, if somebody complains we can still revert it 16:38 < TkTech> sadimusi: What's up? 16:39 <+sadimusi> since Special:Resent Changes is useless we want to exclude the user namespace 16:40 < TkTech> Wait, what? What are you changing? 16:40 <+sadimusi> I haven't done anything yet 16:41 <+sadimusi> the idea is to change the link in the sidebar to something useful 16:41 < TkTech> Ah 16:41 < TkTech> The script *is* banning them. They apparently have an infinite number of IPs. 16:42 <+sadimusi> the markup of the sidebar is weird as hell, I'm not even sure it accepts absolute links without a domain 16:42 < TkTech> set(['50.115.174.119', '46.246.61.139', '91.121.28.133', '91.237.249.248', '188.165.85.106', '124.207.18.105', '142.4.213.113', '80.79.122.8', '188.165.121.232', '188.165.252.20', '80.79.122.3', '85.192.166.187', '151.237.190.164', '8.18.120.77', '192.95.12.192', '78.46.161.237', '92.228.176.39', '188.116.20.84', '46.118.123.81', '173.236.32.221', '5.135.30.145', '175.144.178.198', '188.165.247.184', '94.23.176.111', 'BrendaDonnelly', '46.105.247.245', 16:42 < TkTech> '50.115.163.232', '188.165.121.227', '91.121.4.183', '151.237.190.173', '74.221.220.70', '87.98.137.11', '91.121.87.138', '91.237.249.101', '108.178.5.238', '46.164.19.62', '173.232.7.49', '38.105.21.195', '37.113.153.153', '108.163.228.14', '108.163.228.12', '142.4.212.227', '172.246.115.66', '74.118.200.106', '108.62.71.157', '173.237.182.76', '46.105.187.254', '50.115.168.140', '216.152.252.236', '69.175.94.14', '125.44.15.244', '74.221.217.218', '66.248.20 16:42 < TkTech> 2.179', '91.237.249.168', '199.204.45.205', '50.2.194.183', '110.77.234.26', '199.119.227.234', '142.91.79.6', '5.135.167.147', '5.135.53.242', '199.119.225.74', 'HaydenEEAC', '94.23.234.194', '173.234.196.195', '62.219.3.11', '27.154.11.160', '5.135.43.153', '37.59.56.147', '142.4.213.30', '198.175.126.45', '110.85.112.23', '108.178.53.174', '198.50.28.130', '216.152.251.37', '5.135.113.155', '206.214.82.164', '188.165.192.211', '142.91.79.198', '187.188.134.4 16:42 < TkTech> 5', '184.22.115.74', 'Bradly60Hxfdijn', '173.234.226.27', '142.4.213.27', '142.4.213.26', '142.4.213.25', '130.185.156.69', '198.143.143.43', '96.127.151.204', '66.248.194.30', '5.135.47.87', 'RitaDailyzukzy', '37.59.176.223', '69.162.119.3', '184.105.235.141']) 16:42 < TkTech> Ah shit, meant to paste the gist URL. 16:46 < iBotPeaches> is the ip ban, script level or server level? 16:49 < TkTech> It's a mediawiki ban, not iptables or anything. 16:49 < TkTech> https://gist.github.com/TkTech/6000549 16:49 < TkTech> ^- Just a horrible, horrible quick script. 16:51 <+sadimusi> of course the RecentChanges template doesn't recognize the invert option -.- 16:51 <+sadimusi> guess the only solution is an ugly absolute link to index.php in the sidebar 16:54 <+sadimusi> hm, what if we treat new users as bots? they should be hidden automatically 16:54 <+sadimusi> that would probably be the least hacky solution I can come up with 16:56 <+sadimusi> TkTech: didn't you want to keep beta.wiki.vg to play around with? 16:57 <+sadimusi> @off-topic: best use of U+202E I've seen so far https://twitter.com/mikko/status/356788263719170048/photo/1 17:18 < TkTech> sadimusi: I did, haven't gotten around to it yet. 17:18 < TkTech> sadimusi: If you just want to play with a template there's the sandbox on the wiki proper. 17:18 < TkTech> sadimusi: My idea for beta.wiki.vg was testing backups/restores, new extensions, core configuration changes, etc... 17:18 <+sadimusi> I just installed my own instance to play around 17:19 <+sadimusi> making users bots by default would definitely be a core configuration we should test first 17:24 <+sadimusi> TkTech: my idea seems to be working fine 17:24 < TkTech> sadimusi: Which one is that? 17:24 < TkTech> (I'm at work, sorry for the delays) 17:25 <+sadimusi> no problem 17:25 <+sadimusi> $wgGroupPermissions['user']['bot'] = true; 17:25 <+sadimusi> $wgRevokePermissions['Confirmed']['bot'] = true; 17:26 < TkTech> No way, mon. 17:26 <+sadimusi> I created a user, confirmed him and he made an edit. this is the result: http://ceilingcat.ch/wiki/index.php?title=Special:RecentChanges 17:26 < TkTech> The bot group is special, you do not want to assign new users to it. 17:26 < TkTech> Or any real users. 17:27 <+sadimusi> why not? 17:27 <+sadimusi> it's not a group, it's a permission 17:27 <+sadimusi> and confirmed users won't have it 17:27 <+sadimusi> and most unconfirmed users actually _are_ bots 17:28 < TkTech> It just seems like hiding them by default is a bad idea. 17:31 <+sadimusi> why is that? you can still just click on "show bots" 17:32 < TkTech> "You can hide the dirt under the rug, but you can still see it if you lift up a corner."... 17:32 < TkTech> Just think there should be a better solution. 17:32 < TkTech> How does wikipedia prevent signup spam? 17:33 <+sadimusi> they don't 17:34 <+sadimusi> you won't ever see more than a minute of edits on RecentChanges anyway 17:34 <+sadimusi> *5 minutes 17:34 <+sadimusi> hm no, on all namespaces it's way less than a minute 17:36 <+sadimusi> I still don't quite follow your logic. we want to hide account creation from recent changes, and the best solution is bad because it hides account creation from recent changes? 17:37 < TkTech> We don't want to hide account creation from recent changes. 17:38 < TkTech> We want to slow the bot spam to a trickle so we don't even care. 17:38 <+sadimusi> the ideal solution would be no bots, yes 17:38 <+sadimusi> but that ain't happaning 18:08 < TkTech> sadimusi: Lets see how this does.\ 18:16 <+sadimusi> TkTech: your gist could use a client token, it always invalidates all my access tokens ;) 18:16 < TkTech> Whoops 18:29 < TkTech> Jckf: Feel free to do CubeWorlds on the wiki, I was thinking in the CW: namespace. 18:30 <+sadimusi> TkTech: looking at my line counts, an automated system for that case of beer might be a good idea after all :) 18:30 < TkTech> Jckf: I've spoken to some of the people doing their own RE and they're open to content being copied (with attribution) 18:30 < Jckf> TkTech: Yeah, I was just about to say that I don't have any original content yet 18:30 < TkTech> sadimusi: 'twas a silly idea. 18:31 < Jckf> TkTech: But I am hoping to get some stuff done this week. Just have my hands full with work and Minecraft duties ;p 18:31 < TkTech> Jckf: http://wiki.project-kube.de/index.php?title=Main_Page would be a good place to start. 18:31 < TkTech> Jckf: I convinced him to re-licence under the CC share-alike. 18:32 < Jckf> That's where I've gotten most of my protocol stuff from ;) 18:32 < Jckf> That, and CuWo's source on GitHub 18:34 < Jckf> TkTech: I can cname cwdevs.org to mcdevs.org if you wish to put something there 18:34 < TkTech> Jckf: mcdevs.org will shortly just be a namespace on wiki.vg. 18:35 < TkTech> Consolidate and simplify. 18:35 < Jckf> You're dropping the domain? 18:35 < TkTech> What? No. It'll redirect to http://wiki.vg/mcdevs:about or what not 18:35 < Jckf> Right, good =) 18:36 < Jckf> So I'll cname it. Handle the 0 visitors as you please 18:38 < Jckf> Done 18:40 < Jckf> Hm. Someone (not me) just dropped pizza on my laptop *shrugs* 18:44 < SimSonic> Good time of a day to all, I found that my account on wiki.vg was deleted and I should reregister and ask here for editing rights. 18:45 <+pdelvo> whats your name on wiki.vg? 18:48 < SimSonic> SimSonic 18:48 <+pdelvo> confirmed 18:48 <+pdelvo> you have write access now 18:49 < SimSonic> Thanks 19:12 < TkTech> sadimusi: That's better I think, no spam in 60 minutes. 20:01 < TkTech> sadimusi: http://wiki.vg/MCDevs/rules#Suggestions 20:01 < TkTech> sadimusi: You can do horrible, horrible things with page css overrides. 20:18 < iBotPeaches> lots o whitespace, looks good 21:27 < TkTech> Off-topic: Anyone in Toronto and looking for a job? Assuming you've got some public work I can take a look at I have a few fellows looking for referrals. 22:57 < superjoe> TkTech, no remote work, eh? 23:13 < TkTech> superjoe: I'm not sure, actually. You'd have to make a few trips at least for in-person interviews. 23:14 < TkTech> sadimusi: I've made some changes again. I've ditched confirmations (backed up just in case) and switched to a question on registration plus a handful of DNSBLs. 23:14 < TkTech> sadimusi: Someone *please* give me better questions and answers…right now the only one is "Snow White and The Seven ______" => "Dwarfs" because I happened to be looking at a movie listing. 23:15 <+sadimusi> I was just looking at it and thought it was pretty horrible :D 23:17 <+sadimusi> TkTech: if one single question keeps off the spam, you could make it pretty easy (but minecraft related) 23:17 < iBotPeaches> a zombie in minecraft is called (3 letters) ___ 23:17 < TkTech> It's a list of question (which can be dynamic) and answer (which can also be dynamic). 23:17 < iBotPeaches> boom bots would never know that, unless hardcoded 23:18 < TkTech> The problem is the kid in Taiwan getting $1 per 1000 questions. 23:18 < TkTech> They'll need to be switched up every so often. 23:18 < iBotPeaches> derivative of 10x^2 + 10x + 5 23:20 < dexter0> Probably shouldn't be MC related if you want to expand the wiki to cover CW. 23:20 < TkTech> ^ 23:20 <+sadimusi> I kinda liked the previous approach, but I guess this can work too 23:22 <+sadimusi> if there's a Taiwanese kid, shouldn't we just create a single question and change it regularly? 23:23 < TkTech> Good point. 23:23 < TkTech> Could still use a better default question. 23:23 <+sadimusi> should it be CS related? 23:24 < TkTech> In a perfect world, it would be a context-sensitive question but one that's simple enough for youths to get (no complex questions about math or CS) 23:24 <+sadimusi> I should be working on my bachelor thesis, so I have all the motivation in the world to work on the wiki :) 23:24 < TkTech> Haha. 23:26 <+sadimusi> if it doesn't matter if the taiwanese kid gets it it can be very simple 23:26 <+sadimusi> like "how many dimensions are there at least in our observable universe?" 23:26 <+sadimusi> (maybe not simple enough, 3 and 4 might both be acceptable answers) 23:28 < iBotPeaches> What is the 4th dimension?, perfect questions 23:28 <+sadimusi> time of course 23:29 * sadimusi didn't completely read your statement 23:29 < iBotPeaches> a little kid might not know that 23:29 <+sadimusi> might be a little bit to hard, but do we really want little kids? 23:30 < iBotPeaches> isn't it a developer oriented wiki anyway 23:30 < iBotPeaches> a tough question wouldn't harm anything 23:30 <+sadimusi> best question: "which is the best programming language?" 23:30 <+sadimusi> only acceptable answer: none 23:31 < dexter0> lol 23:31 <+sadimusi> (some result in permanent ban) 23:31 < iBotPeaches> "Spell jeb's last name?" 23:31 < iBotPeaches> answer: can't 23:31 <+sadimusi> what is he called? 23:31 < iBotPeaches> jenn* 23:31 < iBotPeaches> jen***** 23:32 <+sadimusi> Jens Bergensten doesn't look so hard to spell 23:32 <+sadimusi> or is google wrong? 23:32 < dexter0> that's mc specific though 23:33 <+sadimusi> "what character was used to add colors to chat messages in the good old times?" 23:33 < mbaxter> Steve. The answer is Steve. 23:33 <+sadimusi> the answer herobrine should always be accepted 23:34 <+sadimusi> "what was removed from minecraft in update xxxx?" 23:35 < iBotPeaches> "what is block id 63?" 23:36 <+sadimusi> at least make it 46 23:36 < dexter0> ha 23:36 <+sadimusi> what about what is is 17 in hexadecimal? 23:37 <+sadimusi> that should be trivial for anyone visiting the wiki 23:38 < iBotPeaches> multi question, what is 17 in hex, oct, dec, binary 23:39 <+sadimusi> why do programmers confuse christmas and halloween? 23:39 <+sadimusi> because oct 31 = dec 25 23:39 < iBotPeaches> LOL 23:41 <+sadimusi> iBotPeaches: how does the SS update go btw? 23:42 < iBotPeaches> haven't had a crash on the newest copy, so seems pretty good. Someone said buhkit chats aren't filtered or something correctly 23:42 < mappum> why do java developers wear glasses? 23:42 < iBotPeaches> but I've never ran it, so I'll have to set that up and test this weekend 23:42 < mappum> because they don't C# 23:42 <+sadimusi> mappum: :D 23:43 <+pdelvo> just make everybody upload a pic with their personal "minecraft development face" 23:43 <+sadimusi> A programmers wife sends him to the store and says "get some bread, and while you're there pick up some eggs" The programmer never came back. 23:44 <+sadimusi> (via http://www.reddit.com/r/AskReddit/comments/1h1cyg/whats_the_most_intellectual_joke_you_know) 23:44 < mappum> lol 23:44 < mappum> I have a joke about UDP, but you probably wouldn't get it 23:44 < iBotPeaches> I wish I had the xkcd one, it was about dropping tables 23:44 <+sadimusi> little billy tables? 23:45 <+sadimusi> http://xkcd.com/327/ ? 23:45 < mappum> you named your son "Bob '; DROP TABLE students"? 23:45 <+sadimusi> *bobby 23:45 < iBotPeaches> yes love it :) 23:46 <+sadimusi> look at how horrible xkcd looked back then :) 23:46 < mappum> what do you mean? it's the same 23:47 <+sadimusi> not really 23:47 < iBotPeaches> harder to read, less dark, weird text 23:47 < iBotPeaches> it got better over the years :) 23:48 < mappum> true 23:48 <+sadimusi> one of my favorites is still http://xkcd.com/349/ 23:49 <+sadimusi> and I still get myself into this situation sometimes 23:50 * sadimusi 's znc is running on the combination of two macbooks which fell victim to linux installers 23:52 <+sadimusi> back on topic: how about "I put on my robe and ______ hat" 23:54 <+sadimusi> or how about "I accidentally ____ 93MB of .rar files" --- Day changed mar. juil. 16 2013 01:06 < barneygale> sadimusi: love early xkcd, but I'm sure it's only for nostalgia value. One of the few things I don't feel has gone downhill heh 01:06 < barneygale> randall munroe's a cool guy. he helped me buy a server once! 02:26 < alasi> hi guys 02:28 <+pdelvo> hi 02:28 < alasi> I'm here because I'm curious about multiplayer packets 02:31 <+sadimusi> alasi: have a look at wiki.vg 02:31 < alasi> yeah, i'm there now 02:31 < alasi> Just noticed the channel written on it so I thought I'd come by :P 02:31 <+sadimusi> you might have already noticed; the protocol is pretty horrible ;) 02:32 < alasi> Yeah :P 02:32 < alasi> I'm no java developer 02:32 < alasi> I just wanna make a client in nodejs 02:32 < alasi> An invisible one 02:33 <+sadimusi> invisible in what sense? 02:33 < alasi> As in, not a visible "steve". The purpose is to use the server's player/world data for a greater cause 02:33 < alasi> With the server owners consent of course 02:33 < alasi> It's like a robotic drone 02:34 <+sadimusi> and what would it do? 02:36 < alasi> Well I would like start with using some attibutes (time, weather) 02:36 < alasi> and they could broadcast to my node servers as a widget a server owner could embed on their site 02:37 < alasi> But I might go up to a widget that renders a view of the server 02:37 < alasi> Maybe an auto-camera that pans around what players are doing 02:37 <+sadimusi> good luck with that :D 02:38 < alasi> yeah :P 02:38 < alasi> There are some existing things people have written, like a bot that IS visible and can do pathfinding and whatnot 02:38 <+sadimusi> to me it sounds like all of this would work much better as a bukkit plugin than a client 02:38 < alasi> sadimusi: That was my original thought 02:38 <+sadimusi> mineflayer? 02:39 < alasi> Yeah, that changed my perspective :D 02:39 < alasi> You familiar with that stuff? 02:39 <+sadimusi> of course 02:39 < alasi> With node and everything? 02:39 <+sadimusi> I have written some things in node, but I wouldn't consider myself a node programmer 02:40 < alasi> Yeah, me either xD 02:40 < alasi> on npm, I found this https://npmjs.org/package/minecraft-protocol 02:41 <+sadimusi> I think that's written by superjoe 02:41 < alasi> but this doesnt sound promising: "gets kicked when no credentials supplied in online mode (4678ms)" 02:41 <+sadimusi> he's here as well 02:41 < alasi> yeah, he online? 02:41 < alasi> I dont want to ping any of these guys > 02:41 <+sadimusi> looks like he's afk 02:41 < alasi> oh ok 02:42 < alasi> Do you know when he's usually active? Ever? 02:42 <+sadimusi> not sure when he's usually around, but he's here often 02:42 < alasi> hm ok! 02:42 <+sadimusi> still, I don't think a client is the right approach 02:42 < alasi> yeah 02:43 < alasi> I'm thinking if the bukkit plugin used websockets to the node server 02:43 < alasi> But again, I hate java 02:43 <+sadimusi> there are also some bukkit plugins providing a json api for a webinterface 02:44 < alasi> thats cool 02:44 < alasi> I'm looking to use a protocol thats more realtime than Dynmap used 02:44 < alasi> I think it was ajax or something *shudder* 02:46 <+sadimusi> I'm sure there's a way to use websockets in java 02:46 < alasi> I'm guessing bukkit has a higher level of support for accessing server attributes than parsing packets 02:46 <+sadimusi> but I wouldn't make the detour over nodejs 02:46 < alasi> yeah 02:46 < alasi> sadimusi: What do you mean? 02:46 < alasi> Java does have a sockets api built in I believe 02:46 < alasi> *an import of course 02:47 <+sadimusi> (2:43:20 AM) alasi: I'm thinking if the bukkit plugin used websockets to the node server 02:47 <+sadimusi> just use websockets to the browser 02:47 <+sadimusi> no need for nodejs 02:47 < alasi> Yeah 02:47 < alasi> Because my original idea was to make it a PaaS 02:47 < alasi> so it would have to be routed through nodejs 02:47 <+sadimusi> and obviously the server has access to pretty much every detail of the game, unlike a client 02:47 < alasi> Yes 02:48 <+sadimusi> I don't really see the benefit of paas here 02:50 < alasi> sadimusi: For hosting the widget, maybe as a standalone site, I wanted ease of use for the server owners (installing a plugin and using a web based control panel), but I DID want a little moola.. 02:50 < alasi> I would open source a lot of the components 02:50 < alasi> The hosting/control panels/integration would be the part I would close up 02:51 <+sadimusi> well, afaik websockets are not subjected to the same origin policy, so you can easily host the widget on your server but use websockets from the original server 02:52 < alasi> wat 02:52 < alasi> The websockets are broadcast to the PaaS 02:52 < alasi> was my plan 02:52 <+sadimusi> but why would you do that? 02:53 < alasi> For most server owners, installing nodejs etc is a pain 02:53 <+sadimusi> connecting them directly to the browsers makes much more sense 02:53 < alasi> Oh thats what you mean 02:53 <+sadimusi> as you said sourself, java is perfectly capable of providing websockets 02:53 < alasi> hm 02:55 < alasi> idk why, but I dont like that must transparency. If I put it thru the node server, just even by re echoing it, I could make the Paas control what the browser sees, making less data to be sent to the browser 02:55 < alasi> The paas would be the camera bot, which only exposes the data to the browser that it sees 02:56 < alasi> Instead of using much more bandwidth/packets 02:57 < alasi> Instead of making the bukkit plugin the camera bot either, you route it thru the node server so a server owner could declare the path of the camera straight from a web interface 02:59 <+sadimusi> sure you can do that, it'll just be a bit slower 02:59 <+sadimusi> and use much more of your bandwidth 03:00 < alasi> like, paas's bandwidth? 03:01 <+sadimusi> yes 03:01 < alasi> Because the concern is the browser's bandwidth, isnt that a bigger concern? 03:01 <+sadimusi> that would be exactly the same 03:01 < alasi> paas lag > browser lag 03:01 < alasi> but again, the paas is restricting the amount data sent to browser 03:02 < alasi> It's just sending the rendering path of the camera drone 03:02 < alasi> to the browser 03:02 < alasi> ^these are my plans 03:06 <+sadimusi> so the browser will render it? 03:07 < alasi> Render as in the 3d sense, yes 03:07 < alasi> threejs/voxeljs 03:07 < alasi> But since it's attribute based, not say video stream based, it uses less bandwidth 03:08 < alasi> And more customizable 03:08 <+sadimusi> and won't work at all 03:08 < alasi> why 03:08 < alasi> The concept of it, or the logic? 03:09 <+sadimusi> both are fine, but browsers just aren't ready to render minecraft 03:09 <+sadimusi> someone once tried to make a webGL based client 03:09 <+sadimusi> didn't work out very well 03:09 < alasi> sadimusi: Check this out mate http://voxeljs.com/ 03:09 < alasi> Remember its just block/player data, no world data needed 03:09 < alasi> inventory, particles? no 03:10 < alasi> Mineflayer itself achieved this: https://github.com/vogonistic/mineflayer-voxel 03:11 < alasi> Look at this !! http://www.youtube.com/watch?v=FjDmAfcVulQ 03:11 <+sadimusi> those are much better than the first efforts, but they're still nowhere near the vanilla client 03:12 < alasi> So maybe the shaders wont be accurate (or existent), and maybe the movement wont look as real as minecraft itself, but you're still streaming the server's awesome taj mahal! 03:14 < alasi> or 1 trillionth survival games match featuring capta1nsparklez (im not talking any chances pinging someone here) 03:15 < alasi> Theyre nowhere near the vanilla client, well thats what I'm trying to do myself 03:18 <+sadimusi> what about mobile devices? 03:18 <+sadimusi> or just outdated PCs? 03:18 < alasi> sadimusi: Thats not part of the target group, then 03:18 < alasi> If they dont support webgl, they dont support minecraft 03:21 < alasi> so uh yeah 03:26 < alasi> sadimusi: have you written any bukkit plugins before? 03:26 <+sadimusi> no 03:26 < alasi> oh ok 03:27 <+sadimusi> this channel is more about doing things from scratch 03:27 < alasi> ah 03:27 <+sadimusi> but there are some bukkit devs in here 03:28 < alasi> I'll be back here tomorrow, maybe sup3rj0e will be online. Thanks for your help! 03:29 <+sadimusi> no problem 03:29 <+sadimusi> see you 03:29 < alasi> cya 03:29 < alasi> *all 03:29 <+clonejo> A web based MC client could be done with asm.js 03:30 <+sadimusi> clonejo: why not just compile vanilla minecraft with jasmin and run it with asm.js :P 03:31 <+sadimusi> no wait, jasmin was something else 03:32 <+sadimusi> right, it's called GCJ 03:32 <+clonejo> I'm not sure if gcj is mature enough 03:32 <+sadimusi> I'm pretty sure it isn't 03:32 <+sadimusi> I've never heard of anyone using it 03:33 <+sadimusi> last update seems to be in 2009 04:17 < Ampzilla> sadimusi: thanks for updating the wiki regarding game files/login 08:35 <+AndrewPH> clonejo: a web-based MC client could be done with java 11:01 < ffmdr> my bouncer sucks, it left the channel after few days of inactivity :/ 11:09 < ffmdr> md_5: if you responded to my question few days ago could you quote? my bouncer failed 11:44 <+md_5> uh 11:44 <+md_5> idk what I said 11:44 <+md_5> java -jar SpecialSource.jar --help is good ffmdr 11:45 < ffmdr> I looked at the help -.- 11:46 < ffmdr> the problem is it will not remap field and method calls if I don't put the mod in jar with rest of minecraft 11:53 <+md_5> yeah 11:53 <+md_5> use the java -cp arg 11:53 <+md_5> and then use --live 11:54 <+md_5> it needs the rest of MC 11:54 <+md_5> so it can do inheirtance 11:55 <+clonejo> dav1d: Brala's version of glwtf doesn't compile for me: https://gist.github.com/anonymous/6007376 12:08 < ffmdr> md_5: that's awesome, thanks 14:33 <+sadimusi> Dinnerbone: are those access tokens supposed to be valid forever? 14:33 <+sadimusi> mine has now been valid for about 12 hours... 14:40 <+md_5> sadimusi yes they are 14:41 < SinZ> but you still need to refresh them iirc 14:41 <+sadimusi> no you don't, that's exactly my point 14:41 <+sadimusi> so all you have to do is prevent a client from refreshing it and you can use the stolen access token forever 14:41 <+sadimusi> without the user even noticing it 14:42 <+sadimusi> you only need to refresh when changing profiles, but that's not implemented yet... 14:43 <+sadimusi> maybe I shouldn't complain, it makes it much easier for third-party tools to use the launcher_profiles.json 14:50 < Dinnerbone> sadimusi: it will expire 14:50 < Dinnerbone> I don't know how long, maybe a week or so 14:51 <+sadimusi> that kinda defeats the whole point of the refreshing 14:51 < Dinnerbone> Not really? 14:51 < Dinnerbone> Without refreshing your token will expire after a period of time 14:52 < Dinnerbone> Refresh to extend it another [x period of time] 14:52 < Dinnerbone> Lets you "Remember me" for this time 14:52 <+sadimusi> that's fine, imo the period of time is just way too long 14:52 < Dinnerbone> If you log in at home and then go on a holiday for a weekend and come back, you kinda expect it to have remembered you 14:53 <+sadimusi> I should make myself clearer 14:53 <+sadimusi> you should still be able to refresh after a week, but not to join servers after 5 minutes 14:54 < Dinnerbone> How does that benefit us against malicious use of the token? 14:54 <+sadimusi> the attacker has to refresh it, so yours becomes invalid 14:55 < Dinnerbone> However the launcher always refreshes to make sure it's valid another week, so it would make theirs invalid if they didn't refresh it themselves 14:55 <+sadimusi> they would refresh it, but you'd notice it 14:55 < Dinnerbone> Okay let's draw this out 14:55 < Dinnerbone> Victim vs Attacker 14:56 < Dinnerbone> Victim using vanilla launcher, attacker stole the users tokens and is using a 3rd party tool to use them 14:56 < Dinnerbone> Scenario 1: 14:56 < Dinnerbone> Attacker refreshes token and plays minecraft. 14:57 < Dinnerbone> Victim opens the launcher. Launcher calls refresh to make sure he's still logged in, finds out he's not (token has already been used) 14:57 < Dinnerbone> Victim logs back in, attacker is logged out. 14:57 < Dinnerbone> Scenario 2: 14:57 < Dinnerbone> Attacker uses the token outright, doesn't refresh it. 14:57 < Dinnerbone> Victim opens launcher. Launcher calls refresh to make sure he's still logged in, finds out he is. New token is generated and old one is expired 14:57 < Dinnerbone> Attacker is logged out. 14:58 <+sadimusi> my issue with scenario 2 is that you never notice the attack 14:59 <+sadimusi> there should also be a scenario 3: 14:59 <+sadimusi> Attacker refreshes token and plays minecraft. 14:59 <+sadimusi> attacker wipes client token from victim's launcher_profiles.json 14:59 <+sadimusi> Victim opens the launcher. Launcher calls refresh to make sure he's still logged in, finds out he's not (token has already been used) 14:59 <+sadimusi> Victim logs back in, attacker is _not_ logged out. 15:00 < Dinnerbone> Nothing we can do about that aside from what we're already working on and I've told you about before; a list of your currently logged in locations from inside the launcher 15:01 <+sadimusi> yes, that will definitely help 15:01 < Dinnerbone> (With a button to log them out) 15:02 <+sadimusi> there should also be a way to do it on mojang.com, otherwise an attacker might just run a script to keep me out 15:02 < Dinnerbone> It will require elevated authentication; your username and password 15:02 < Dinnerbone> The attacked won't have this (if they do, website only won't help) 15:02 < Dinnerbone> s/attacked/attacker/ 15:02 <+sadimusi> ok 15:05 < SimSonic> "location" means IP address? 15:06 < Dinnerbone> Yes 15:06 < Dinnerbone> And time 15:07 < Dinnerbone> Possibly geoip, I don't know 15:09 <+sadimusi> Dinnerbone: you convinced me (for now), the only thing you should probably still do is deleting the lastlogin file 15:09 <+sadimusi> maybe not now, but when nobody plays 1.5.x anymore 15:09 < Dinnerbone> Yes it will be done soon 15:10 < Dinnerbone> Thanks for the concerns! 15:11 <+sadimusi> well thanks for your elaborate answers 17:11 < superjoe> hello alasi 17:11 < alasi> Ohai superjoe 17:12 < alasi> I really wanted to talk to you :D 17:12 < superjoe> I saw you were checking out some mineflayer stuff :) 17:12 < alasi> yeah 17:12 < alasi> Wait like on irc right? 17:12 < superjoe> uh 17:12 < alasi> nvm 17:12 < superjoe> yes 17:12 < alasi> heh 17:12 < alasi> So about mineflayer -- 17:13 < alasi> Does the server it connects to, can it be a normal minecraft server? 17:13 < superjoe> yes 17:14 < alasi> and have you seen vogonostic's mineflayer voxel? 17:14 < superjoe> yep 17:14 < superjoe> pretty cool 17:14 < alasi> Yeah 17:14 < dexter0> link? 17:14 < superjoe> https://github.com/vogonistic/mineflayer-voxel 17:14 < alasi> https://github.com/vogonistic/mineflayer-voxel 17:14 < alasi> What part of mineflayer repo connects to the IP ? 17:15 < dexter0> ah, that is cool 17:15 < superjoe> there is a bunch of youtube stuff here: https://github.com/superjoe30/mineflayer#third-party-plugins 17:15 < alasi> brb 17:15 < superjoe> oh yeah and this one: http://www.youtube.com/watch?v=x3AL5T4er7Y 17:17 < alasi> ooh 17:18 < alasi> So I'm planning to make a Paas the utilizes minecraft server data 17:18 < superjoe> Paas? 17:18 < alasi> And I'm trying to decide if I should do what you did, which is make a fake client 17:18 < alasi> yeah 17:18 < alasi> It's a hosted thing 17:19 < alasi> Server owners would subscribe 17:19 < superjoe> ah, platform as a service 17:19 < alasi> yes 17:19 < alasi> Well Product As Service sort of 17:19 < alasi> So yeah either a fake client or a bukkit plugin 17:19 < alasi> I saw in an npm 17:19 < alasi> called minecraft-protocol 17:20 < alasi> It parses mc packets, but apparently it'll get kicked for no identification? Does mineflayer get kicked from servers? 17:20 < superjoe> what makes you think it'll get kicked for no identification? 17:21 < alasi> gets kicked when no credentials supplied in online mode (4678ms) << 17:21 < superjoe> that's happening to you? 17:21 < moejoe> hi all 17:21 < alasi> It says it on the npm page 17:22 < superjoe> alasi, I don't see what you're talking about 17:22 < alasi> https://npmjs.org/package/minecraft-protocol 17:22 < superjoe> oh. are you looking at the tests? 17:22 < alasi> yeah 17:22 < superjoe> okay... that is a test that makes sure if you connect to an "online-mode: true" server with no credentials, that you get kicked and are able to handle getting kicked properly 17:23 < superjoe> that means even the error conditions are working 17:23 < alasi> oh 17:23 < alasi> But would I be able to put a mineflayer bot on uberminecraft or something? 17:23 < alasi> And pwn people in the walls? 17:23 < superjoe> yes, assuming that uberminecraft is a vanilla server 17:23 < alasi> I doubt it 17:24 < alasi> There is like shopcraft or something 17:24 < superjoe> as long as you can play on uberminecraft with the normal client, without installing mods, then this package will work 17:24 < alasi> Oh cool 17:24 < moejoe> NickG around? 17:24 < superjoe> alasi, you're probably more interested in mineflayer 17:24 < alasi> superjoe: Yeah probably 17:24 < superjoe> which is still lagging behind by 1 minecraft version 17:25 < alasi> oh 17:25 < alasi> Maybe I should write a bukkit plugin then 17:25 < alasi> The idea is to make a voxeljs webview for a minecraft server 17:25 < alasi> And I'm deciding on streaming the view 17:26 < superjoe> neat 17:26 < alasi> yeah 17:26 < superjoe> vogonistic did a bunch of that work 17:26 < alasi> Yeah 17:26 < alasi> But again, it's mineflayer :P 17:26 < superjoe> there's not too much to do to get mineflayer up to date 17:27 < superjoe> I might get around to it this week 17:27 < alasi> oh cool 17:27 < alasi> Is there a way to make the bot hidden? (no steve visible, even when you list players)? 17:30 < superjoe> I hope not 17:30 < superjoe> that would be some pretty broken server logic 17:31 < alasi> oh 17:31 < alasi> Because I think it's a little intrusive if I had the camera bot (for streaming to the browser) visible and stalking all the players 17:31 < alasi> So I think I might go with websockets bukkit plugin 17:32 < superjoe> cool, have fun 17:32 < alasi> yeah.. 17:32 < superjoe> yeah if you're trying to make a camera, you don't want a fake client 17:32 < superjoe> server plugin is a better way to go 17:32 < alasi> Ok, that's what I need to know 17:33 < alasi> thanks 17:33 < superjoe> np 17:33 < superjoe> another possibility is a proxy 17:33 < alasi> How/What 17:33 < superjoe> sits in between the server and the clients 17:33 < alasi> Oh cool you work at learnboost? 17:34 < superjoe> no, I'm just the maintainer of one of their open source projects 17:34 < alasi> do the clients have to connect to that? 17:34 < alasi> Oh 17:34 < alasi> Yeah I saw juice 17:34 < superjoe> clients don't see anything different 17:34 < superjoe> you run both the proxy and the server on the server computer 17:34 < alasi> hmm 17:34 < superjoe> the real mc server is not exposed; it connects to the proxy 17:34 < superjoe> the proxy is exposed; the clients connect to it 17:35 < superjoe> since the proxy receives all the data for each client, you could do the camera thing 17:35 < alasi> But thats not very easy to implement for the server owners... 17:35 < superjoe> that might be a concern 17:35 < alasi> Yeah 17:35 < superjoe> I'm not familiar with server owners and what is or isn't convenient 17:36 < superjoe> I mean, I feel like my proxy is pretty easy to use 17:36 < alasi> The easiest thing would be 1) Fake Client 2) Bukkit plugin 3) Proxy 17:36 < superjoe> but I'm biased 17:36 < alasi> is it a standalone application? 17:36 < alasi> Fake client would be easiest to implement because the server owner could just use a web interface 17:36 < superjoe> yes it's a node program, you run it in the same folder as your minecraft server and it "just works" 17:36 < alasi> But again, nobody wants to install nodejs 17:36 < superjoe> orly 17:37 < superjoe> well they have to install *something*. 17:37 < alasi> I think bukkit might be easier to install 17:37 < alasi> Then the plugin broadcasts to the node server via websockets 17:37 < alasi> and there's no need to parse "ox10c" represents 'player update' 17:38 < alasi> Because I could have my own custom packet format 17:38 < alasi> idk 17:39 < superjoe> wait so there's already a node server? 17:39 < superjoe> so having node installed is a given 17:39 < alasi> Here's how I propose it be structured: Bukkit Plugin -> Paas (node server) -> Browser 17:40 < alasi> Node server would be hosted by Moi 17:40 < superjoe> node server sitting on the same machine as bukkit plugin? 17:40 < alasi> no 17:40 < alasi> It would be on nodejitsu or heroku or some shit 17:40 < superjoe> so you're sending the block data for every single client over the internet? 17:40 < alasi> Well yes, to the node server 17:41 < alasi> But theres even less data for the browser 17:41 < superjoe> and then sending it again to any connected clients 17:41 < alasi> ? 17:41 < superjoe> block data for every client travels over the internet for all connected clients to heroku 17:41 < alasi> no, it would be the server data 17:41 < superjoe> what's the difference? 17:41 < alasi> Bukkit plugin, not player plugin 17:42 < alasi> wait.. 17:42 < superjoe> I'm not saying I don't think it will work 17:42 <+sadimusi> superjoe: the camera isn't following the players but a preconfigured path (if I got that correctly yestreday) 17:42 < superjoe> it just seems like a ton of bandwidth 17:42 < superjoe> might be worth making sure it's acceptable 17:43 < alasi> Browser receives the camera buffer packets -> Nodejs makes virtual camera buffer -> Bukkit server plugin sends general packets to node server 17:43 < alasi> Wait wrong order 17:44 <+sadimusi> and why doesn't bukkit do the job nodejs does now? 17:44 < alasi> sadimusi: Because it would use less bandwidth to send to the client 17:44 <+sadimusi> you can cut latency in half, if not more... 17:44 < superjoe> ^ 17:44 <+sadimusi> how would it use less bandwith 17:44 <+sadimusi> +? 17:44 < alasi> Because the node server is the virtual camera buffer 17:45 < alasi> It takes the bukkit plugin's world data 17:45 <+sadimusi> make bukkit the virtual camera buffer 17:45 < superjoe> yes 17:45 < alasi> yeah 17:45 < alasi> hm 17:45 < alasi> But then there's not a lot of customizablility for the camera 17:45 < superjoe> yes there is 17:45 < alasi> The idea would be it's controlled over a web interface 17:45 <+sadimusi> sure there is 17:45 < superjoe> java is turing complete 17:46 < superjoe> you can still make a web interface with java 17:46 < superjoe> and voxeljs is a client-side thing right? so you can still use that too 17:46 < alasi> Yeah 17:46 < alasi> hmm 17:47 < alasi> The idea was, I would definitely open source a lot of the stuff, but it would also be a PaaS 17:48 < alasi> Plus, again, much harder for the server owners 17:48 <+sadimusi> you keep mentioning paas, I don't think it fits the task here 17:48 < alasi> ik 17:48 <+sadimusi> what is harder for server owners? installing a bukkit plugin? 17:48 < alasi> Installing nodejs and a bukkit plugin etc 17:48 < alasi> vs just a bukkit plugin 17:48 <+sadimusi> no need for nodejs 17:49 <+sadimusi> just make everything in the plugin 17:49 < alasi> hmm 17:49 < alasi> I hate java tbj 17:49 < alasi> tbh 17:49 <+sadimusi> write it in scala then :P 17:49 < alasi> write it in nodejs then :/ 17:50 <+sadimusi> or write it in js and run it with rhino :P 17:50 < alasi> IDK, I have the summer, maybe I'll try a bunch of different approaches 17:51 < alasi> Today maybe I'll fire up eclipse and do something 17:51 < alasi> I'll see how websockets work in java/bukkit 17:53 <+sadimusi> if you're going to do the whole webinterface in java I'd have a look at some frameworks 17:53 <+sadimusi> like play 17:54 <+sadimusi> most of them also support websockets 17:54 < alasi> Is that like apache of some sort 17:54 < alasi> Cause how does the web interface interact with the plugin 17:54 < alasi> Is it stored in a db? 17:55 <+sadimusi> if you run it as a bukkit plugin you have direct access to all server mechanics 17:55 < barneygale> alasi: https://github.com/masteroftime/Python-Plugin-Loader might be up your street? 17:55 < alasi> barneygale: Nah, we're talking about nodejs 17:55 < alasi> Bukkit would be installed as bukkit 17:56 < alasi> Then the rest would be separate 17:56 < barneygale> yeah, I just saw you didn't want to use java 17:56 < alasi> I'll write a bukkit plugin, it's just that I dont want to do EVERYHTING in java 17:56 < dx> there are javascript plugin loaders too 17:56 < alasi> There's no need for a plugin loader 17:57 < alasi> The plugin itself would just be a websocket client 17:57 < alasi> Broadcasting server attributes to a remote service 17:57 < alasi> remote service = nodejs 17:57 <+sadimusi> I don't like java that much, but creating suchg a complex system just because of that is insane 17:58 < alasi> The java plugin's just a client to the mainframe though 17:58 < alasi> mainframe = nodejs xD 17:58 < alasi> So is the web interface 17:59 <+sadimusi> if you insist on using javascript at least use a js plugin loader for bukkit 17:59 < alasi> What's a plugin loader for? 18:00 < alasi> Do you write plugins to interpret to java? 18:00 < dx> http://dev.bukkit.org/bukkit-plugins/jxpl/ 18:00 <+sadimusi> you write your plugin in js and it'll get run as if it were java 18:00 < barneygale> It lets you access the bukkit api from another language. The one I linked uses jython, which compiles python to jvm bytecode. I can't remember how it lets you use the bukkit api 18:00 < barneygale> something clever 18:01 < alasi> m 18:02 < barneygale> you should just write it in java though. people don't like plugins that are complicated to install 18:02 < alasi> Yeah 18:02 < alasi> I should 18:02 < alasi> Especially if it's much more complicated to set up then going to http://minecraftthingy.com, getting an authkey, and putting that in a text file 18:03 < alasi> Then you just manage everything on http://minecraftthingy.com 18:03 < barneygale> you probably could do it the way you're talking, but it's quite ambitious and headache-y. The wrapper I maintain is being split up into >1 process and it's messy getting the protocol sane. 18:03 < alasi> What do you mean, wrapper? 18:04 < barneygale> wraps the minecraft process, i.e. launches it as a child and wraps stdin/stdout/stderr 18:04 < alasi> hm 18:04 < barneygale> not applicable to what you're doing, I only mentioned it for the >1 process comparison 18:05 < alasi> If I download Bukkit Api will I be able to use it as a test server? 18:05 < dx> the bukkit api is... just an api. not the implementation, not the server 18:05 < alasi> oh 18:05 < dx> craftbukkit is the implementation 18:05 < alasi> ok 18:11 < alasi> wtf it's outdated 18:13 < dx> ...did you grab the recommended build and expected it to support 1.6.x, which still has bugs in vanilla? 18:13 < alasi> yes 18:13 < dx> http://dl.bukkit.org/downloads/craftbukkit/ 18:13 < alasi> I said outdated server 18:13 < dx> grab latest dev 18:14 < alasi> Oh ok 18:14 < alasi> I will later 18:17 < dx> the bukkit devs take stability so seriously that they didn't promote a recommended build for 1.5.2 until two weeks before 1.6 was released 18:17 <+ammar2> lol 18:21 < dx> (okay maybe that's not the exact reason, but whatever.) 22:38 <+sadimusi> lol http://people.zoy.org/~sam/filsdepute.txt 22:46 <+clonejo> sadimusi: btw, http://hmarco.org/bugs/CVE-2013-4788.html 23:07 <+sadimusi> clonejo: look at the source of the page I linked ;) 23:13 <+clonejo> hahaha 23:24 < dx> hah, nice 23:25 < dx> didn't know -1 was accepted as a "pid" --- Day changed mer. juil. 17 2013 00:14 < LaxWasHere> Hey, where'd the protocol list go?! :| http://wiki.vg/Pre-release_protocol 00:16 <+sadimusi> what list? 00:17 <+sadimusi> you mean http://wiki.vg/Protocol_History? 00:18 < LaxWasHere> That! :D 00:20 <+pdelvo> its incomplete. there is missing a lot 00:47 < SpaceManiac> :( 01:28 < Not-002> [fCraft] fragmer * r2069 189 files : Updated all code copyright notices to "2009-2013" 10:09 < Not-002> [netherrack] thinkofdeath pushed 1 commit to master [+1/-0/±5] http://git.io/-XJ3SA 10:09 < Not-002> [netherrack] thinkofdeath 11516a9 - Protocol cleanup 16:58 <+sadimusi> I'm rewriting mc4p's protocol definitions and could use some opinions 16:58 <+sadimusi> awesome or way too much magic? http://pastie.org/8149356 17:02 < dexter0> wow, you can do that in python? Context aware constructors? 17:03 * dexter0 does not know python 17:06 <+sadimusi> there's quite a bit of black magic going on 17:07 < iBotPeaches> it looks sexy 17:07 < dexter0> sure does 17:07 <+ammar2> sadimusi: pretty nice, I'd imagine the code to actually handle it is a nightmare though 17:08 <+sadimusi> ammar2: it definitely is 17:08 <+sadimusi> I am trying to imitate sqlalchemy to some extent (http://docs.sqlalchemy.org/en/rel_0_8/orm/extensions/declarative.html) 17:11 <+ammar2> also how are you going to handle special stuff like 0x1D which has a prefix of number of ints, then requires you to read that many ints 17:11 <+ammar2> same for chunk bulk packet where a short specifies how many columns to read 17:11 <+sadimusi> I will probably do it similar to the old system https://github.com/sadimusi/mc4p/blob/master/mc4p/messages.py#L892 17:12 <+sadimusi> some packets probably need custom field types 17:12 <+sadimusi> I hope I can put them into the class definitions as well 17:13 <+sadimusi> oh, you meant 0x1d, not 0xd1 17:13 <+sadimusi> no you probably didn't 17:14 <+ammar2> they're abotu the same 17:15 <+sadimusi> currently 0x1d just has a custom field type, but I'm trying to avoid that as much as possible 17:15 <+sadimusi> probably won't have a choice for stuff like 0x2c though 17:16 <+ammar2> sadimusi: when I'm gonna be overhauling my python protocol implementation, I hope to do something similar but was gonna put in a field type in the form of a python function to handle complex types like that 17:16 <+ammar2> seems like the cleanest solution to me 17:17 <+sadimusi> well, all field types are classes with a write and a read method 17:17 <+sadimusi> currently they're just all defined in one place which doesn't make much sense 17:17 <+sadimusi> and there are way too many of them 17:18 <+ammar2> yeah I was gonna have a file per each protocol that inherits from other protocol files and makes changes to it 17:45 < dav1d> PUSH TIME 17:45 < dav1d> after 3days no internet -. 17:45 < Not-002> [BraLa] Dav1dde pushed 35 commits to master [+2/-0/±63] http://git.io/qikYZA 17:45 < dav1d> Not-002: pls 17:46 < Not-002> [BraLa] Dav1dde 607a763 - return blocks from empty chunks 17:46 < Not-002> [BraLa] Dav1dde 26586fd - fix a few nasty bugs, opengl resources get released again! 17:46 < Not-002> [BraLa] Dav1dde 7ba2eca - individual loglevel/writer for NamedLogger 17:46 < Not-002> [BraLa] Dav1dde 2da40f6 - implement logger.log_exception 17:46 < Not-002> [BraLa] Dav1dde 28a35d5 - fix compilation in utils.log 17:46 < Not-002> [BraLa] Dav1dde a11deb7 - fix formatstring 17:46 < Not-002> [BraLa] Dav1dde 688fbef - fix grass and crafting table 17:46 < Not-002> [BraLa] Dav1dde f2b377c - seed prng once 17:46 < Not-002> [BraLa] Dav1dde ef29780 - less work for the GC 17:46 < Not-002> [BraLa] Dav1dde 807808f - fix is_valid_position 17:46 < Not-002> [BraLa] Dav1dde 150f046 - implement block.name 17:46 < Not-002> [BraLa] Dav1dde a9626d0 - implement sliding along edges, instead of preventing movement 17:46 < Not-002> [BraLa] Dav1dde 97ecdb6 - fix delta_ticks? 17:46 < Not-002> [BraLa] Dav1dde 0ce3ce9 - revert to old queue, mutex.lock took up to 700ms 17:46 < Not-002> [BraLa] Dav1dde 1bc0c00 - fix furnace 17:46 < Not-002> [BraLa] Dav1dde 57124a2 - cleanup queue