23:33 < Mathuin> Is compression still used in world sections? 23:37 < Bibl> looks like im not reading chat properly 23:37 < Bibl> because when i read the tag name 23:37 < Bibl> i get stuff like got: 115 lay 23:37 < Bibl> *§7Right click with the quick warp compass 23:41 < Bibl> oh wow 23:41 < Bibl> i was connecting to another server with the bot 23:41 < Bibl> and it was showing different stuff compared to what was shown in my mc client --- Day changed ven. déc. 12 2014 05:15 < Lukario45> How big are movement packets? 07:24 < Not-311d> [fNbt] fragmer pushed 1 commit to master [+0/-0/±1] http://git.io/YsydBg 07:24 < Not-311d> [fNbt] fragmer 3c1c564 - Improved string-writing performance by another 5% or so, by avoiding temporary allocations on long strings. We now do a few extra writes to the underlying string (strings are encoded in 256-byte chunks instead of all-at-once) but avoid allocating Encoders and byte arrays for every long string write. Further testing may be needed to figure out if this optimization is worth the extra writes. 14:18 < Not-311d> [fNbt] fragmer pushed 2 commits to master [+0/-0/±4] http://git.io/_gfw3A 14:18 < Not-311d> [fNbt] fragmer a1acdcc - Fixed NbtList.Insert() setting ListType of an empty list too early, before all arguments have been validated, sometimes inadvertently changing list's state on failed insert. Added a unit test to check for this and a few other obscure list-related scenarios. 14:18 < Not-311d> [fNbt] fragmer e92801a - Improved test coverage of Unicode string support. 20:47 < Bibl> hmm server doesnt send byte[] biomeData anymore? 21:43 < Bibl> also is chunk data compressed? 23:51 < Not-311d> [fNbt] fragmer pushed 2 commits to master [+0/-0/±27] http://git.io/0CqP6Q 23:51 < Not-311d> [fNbt] fragmer 1396f6c - Fixed a case where NbtReader would sometimes not set its state to "Error" after an exception is thrown while reading a corrupt stream. Added a unit test for this, and for a few other previously-untested things. 23:51 < Not-311d> [fNbt] fragmer 64864c3 - Tightened up formatting and graphics on level 3 --- Day changed sam. déc. 13 2014 03:50 < Bibl> getting entity type id 30 with a spawn mob packet :/ 13:14 < RedstoneSheep> So I found this strange bug with skins.minecraft.net https://bugs.mojang.com/browse/MCAPI-1105 13:14 < RedstoneSheep> It gives you the cape when the user has no skin, but does have a cape 16:18 < Bibl> for packet 0x23 block change in the notes on wiki.vg it says "id << 4 | data" 16:18 < Bibl> what does that mena 16:18 < Bibl> mean* 21:00 < Bibl> anyone know what entity metadata 1 does? 21:01 < Bibl> i can only find "1 Short Air " --- Day changed dim. déc. 14 2014 19:39 < Bibl_> anyone know why my player wont show up? i send a respawn request and my position every 50 ms, the server sends me a position and a health update but it still doesnt show 21:18 < Aaron1011> Bibl_: Can I see your code? 21:19 < Bibl_> theres a lot of code lol 21:19 < Bibl_> i uploaded a vid 21:19 < Bibl_> https://www.youtube.com/watch?v=PvADEwcr26k&feature=youtu.be 21:24 < Aaron1011> Bibl_: Could you put in in a pastebin or something? 21:25 < Bibl_> which part 21:25 < dx> http://topdank.org/ cool website 21:25 < Bibl_> thnx :) 21:26 < Bibl_> http://hastebin.com/redinaboqi.avrasm here is the 1.8 protocol 21:27 < Bibl_> near the bottom is the respawn thing 21:28 < Bibl_> and in the localplayer class (client player) i have this 21:28 < Bibl_> @Override 21:28 < Bibl_> public void setHealth(float health) { 21:28 < Bibl_> this.health = health; 21:28 < Bibl_> System.out.println("set health: " + health); 21:28 < Bibl_> if (health <= 0) { 21:28 < Bibl_> bus.dispatch(new RequestRespawnEvent()); 21:28 < Bibl_> } 21:28 < Bibl_> } 21:37 < Bibl_> any ideas? --- Day changed lun. déc. 15 2014 05:17 < Not-311d> [fNbt] fragmer pushed 3 commits to master [+0/-0/±7] http://git.io/poQCKg 05:17 < Not-311d> [fNbt] fragmer 51a5b7d - Fixed NbtWriter.WriteByteArray(String,Stream,int,byte[]) being too picky with buffers, unnecessarily limiting it to NbtBinaryWriter.MaxWriteChunk (512 MiB). The limit has been removed. 05:17 < Not-311d> [fNbt] fragmer e92eda1 - Fixed NbtList.IndexOf(null) throwing ArgumentNullException instead of returning a negative value. 05:17 < Not-311d> [fNbt] fragmer 6554cad - Expanded unit test coverage slightly, including recently-fixed NbtWriter.WriteByteArray and NbtList.IndexOf. Now at 97% (and unlikely to change much) 06:36 < Not-311d> [fNbt] fragmer pushed 2 commits to master [+1/-0/±5] http://git.io/qCpvmw 06:36 < Not-311d> [fNbt] fragmer e8fdae9 - Fixed handling of unexpected end-of-stream and partial-read conditions in several places. EndOfStreamException should now be reliably thrown on premature end-of-stream, and finicky Streams that do not always Read() all requested bytes are now handled with patience. 06:36 < Not-311d> [fNbt] fragmer 3043c3b - Added unit tests for reading from partially-Read()ing Streams. 07:52 < Not-311d> [fNbt] fragmer pushed 2 commits to master [+0/-0/±10] http://git.io/dQKyxg 07:52 < Not-311d> [fNbt] fragmer e581c76 - Fixed "expected" and "actual" parameter order in some assertions. 07:52 < Not-311d> [fNbt] fragmer 0d82825 - Fixed another rare case where unexpected end-of-stream does not result in an immediate EndOfStreamException 09:34 < bibl2> Frick 09:34 < bibl2> Left hexchat open on computer 09:34 < bibl2> So I can't have the name bibl on my phone 11:50 < bibl2> Player positions were off got the walking fixed 20:07 < Bibl> anyone ever had a problem where other players positions go out of sync for a bit? 20:07 < Bibl> so its a few blocks off their real position until you get an absolute position update that fixes it 20:56 < TkTech> Floats, floats, floats, what ya gonna do when floats decide to float? 21:17 < Bibl> eww i send 0x03 instead of 0x06 21:18 < Bibl> sent* 21:18 < Bibl> ever had your client go out of sync with other play positions? 21:18 < Bibl> player* 21:19 < TkTech> Floats, floats, floats, what ya gonna do when floats decide to float? 21:19 < dx> deja vu 21:48 < joshumax> Anyone alive in MCDevs? 21:51 < Fenhl> hi 21:53 < dx> no 21:54 < Weloxux> define alive 21:56 < TkTech> Sometimes, I don't know man. Are we all just a simulation? Is anyone else even real? 22:30 < Not-311d> [node-minecraft-protocol] roblabla pushed 2 commits to master [+0/-0/±2] http://git.io/ZaYOCA 22:30 < Not-311d> [node-minecraft-protocol] mrfrase3 bcbcf5e - Update yggdrasil.js to fix bug This fixes a crash that occurs on line 310 of index.js where it tries to read the value of client.session.selectedProfile.id which doesn't exist if the session was acquired by a refresh with old auth details. 22:30 < Not-311d> [node-minecraft-protocol] roblabla ba4d871 - Merge pull request #106 from mrfrase3/patch-1 Update yggdrasil.js to fix bug when reloading session --- Day changed mar. déc. 16 2014 15:47 < morfin> hello 15:47 < morfin> i have next question: how custom mob collisions are being calculated on server side? 18:45 < Bibl> when i strafe with another mc client, the position of that players goes wierd 18:45 < Bibl> its like a few blocks off on the x or z 19:16 < TkTech> Floats, floats, floats, what ya gonna do when floats decide to float? 19:16 < TkTech> I feel like a broken record. It's a funny feeling. 19:17 < dx> 17:18 < dx> deja vu 19:19 < TkTech> dx: After the 3rd time, would you get the inkling that it's related to your previous comments? I feel like it should have clicked by now, but I'm being an ass by not just directly saying it I guess. 19:20 < dx> TkTech: "your previous comments" mine? 19:20 < TkTech> Nein, the other guy 19:20 < dx> oh 19:20 < dx> well 19:20 < dx> i sorta got it 19:20 < dx> but dejavuing anyway 19:21 < TkTech> Bibl: I'm assuming that you're using floats or doubles here and there? (or your languages equivelent types) 19:22 < Bibl> no its not that 19:22 < Bibl> i use doubles for storing entity positions 19:22 < Bibl> ill make a vid 19:26 < TkTech> All of your comments so far perfectly describe float precision issues. 19:31 < Bibl> its off by 4 minecraft blocks 19:31 < Bibl> why would a float round down 4 19:32 < TkTech> Exactly 4, at all times? 19:32 < TkTech> It wouldn't, but the game is very spammy with movement updates. 19:32 < TkTech> The errors add up quickly over time 19:32 < Bibl> not exactly 4 19:33 < TkTech> update -> position + <0.1, 0, 0>, position + <0.1, 0, 0>, ... 19:33 < Bibl> https://www.youtube.com/watch?v=Egxl6ZD-HE4&list=UUsGxp2cCPKBlSfZrFLt1qNw does this look like rounding problem? 19:36 < TkTech> That would be my first inclination, yes. Looks like an accumulation of rouding issues 19:38 < Bibl> im always using doubles 19:39 < Bibl> packet: 19:39 < Bibl> moveX = in.readByte() / 32D; 19:39 < Bibl> moveY = in.readByte() / 32D; 19:39 < Bibl> moveZ = in.readByte() / 32D; 19:39 < Bibl> handler: 19:39 < Bibl> PacketPS15EntityMove pem = (PacketPS15EntityMove) p; 19:39 < Bibl> bus.dispatch(new EntityMoveEvent(pem.getEntityId(), pem.getMovementX(), pem.getMovementY(), pem.getMovementZ())); 19:39 < Bibl> event: 19:39 < Bibl> @EventTarget(priority = EventPriority.HIGHEST) 19:39 < Bibl> public void onEntityMove(EntityMoveEvent e) { 19:39 < Bibl> Entity entity = getEntityById(e.getEntityId()); 19:39 < Bibl> if (entity == null) 19:39 < Bibl> return; 19:39 < Bibl> entity.setLocation(entity.getX() + e.getX(), entity.getY() + e.getY(), entity.getZ() + e.getZ());} 19:43 < TkTech> In almost every single one of those, you have chance of losing precision if the value cannot be accurately represented 19:53 < morfin> oh shit 19:53 < morfin> with float/double that's bad 19:54 < morfin> are not fixed point values better for representing such stuff? 19:55 < TkTech> That's correct. 19:56 < morfin> i remeber that Minecraft had issues when values are really huge 19:56 < TkTech> Yes, resulting in odd movements and the "crazy zone" when you're at the edge of theoretical map. 19:57 < TkTech> http://minecraft.gamepedia.com/Far_Lands 19:57 < morfin> i did not reach that limits but rounding errors are really huge in that far lands 19:58 < morfin> i remember once i was calculating sum of positive/negative floats and last operation was -0.01 + 0.01 20:00 < morfin> which gave me very small non-zero value(i used epsilon to round it to 0) 20:06 < morfin> but even if server will do fixed point math i think client will have issues anyway 20:06 < TkTech> It does, which are corrected by the absolute updates every once in awhile 20:07 < morfin> unless somebody rewrite client :D 20:07 < TkTech> Minor drift is not a problem, and is very hard to notice 20:20 < morfin> anyway 20:20 < morfin> there is no point to fix that because it's not requied ) 20:20 < morfin> *required 20:44 < Bibl> cant find this rounding error e_e 21:07 < Bibl> omg 21:07 < Bibl> it doesnt happen 21:07 < Bibl> if i dont change yaw or pitch 21:12 < Bibl> yeah it only messes up when i change yaw or pitch 21:13 < Bibl> yet the packet class is the exact same 21:34 < Grum> You might be doing something wrong Bibl? 21:34 < Bibl> :( 21:34 < Bibl> grum 21:34 < Bibl> isnt that the skeleton alien bad guy from power rangers SPD? 21:35 < Weloxux> *thing doesn´t work* "maybe you´re doing something wrong" 21:35 < Weloxux> great deductive skills here xD 21:36 < Grum> All I can do with the very limited information given :) 21:36 < Weloxux> just teasin´ ya ;) 21:36 < Grum> OMG YOU RAGE ME! 21:36 < Grum> =) 21:36 < Weloxux> more smileys :) 21:36 < Grum> :'( 21:37 < Weloxux> ;-; 21:37 < Grum> QQ 21:38 < Weloxux> :o 21:39 < Grum> big nose! 21:40 < Grum> |8) <-- clearly a bert! 21:40 < Weloxux> oh my god, yes 21:40 < Grum> hmmm |8o) 21:41 < Weloxux> {:O) 21:41 < Weloxux> attempt at Ernie I guess 21:42 < Weloxux> what am I doing with my life 21:43 < Grum> asciiiiiing! 21:44 < Grum> ass-skiing? :/ 21:44 < Weloxux> sounds like tons of fun 21:50 < Weloxux> and potentially painful 21:51 < Bibl> https://www.youtube.com/watch?v=3uCFOkX6ykk&feature=youtu.be 21:51 < Bibl> inb4 youtube sponsorship 22:01 < Weloxux> damn, that is a strange bug 22:02 < Weloxux> christ, I haven't the faintest, to be honest 22:10 < Weloxux> aight, gonna hop off, good luck Bibl 22:10 < Weloxux> don't eat the yellow snow 22:10 < Bibl> ty sir 22:10 < Bibl> good advice 22:10 < Bibl> wont do it again 23:51 < Not-311d> [fNbt] fragmer pushed 1 commit to master [+0/-1/±0] http://git.io/_bxBNQ 23:51 < Not-311d> [fNbt] fragmer a7252f0 - Delete LibNbt.csproj.DotSettings Obsolete file --- Day changed mer. déc. 17 2014 07:40 < Grum> Bibl: did you notice that @ https://www.youtube.com/watch?v=3uCFOkX6ykk#t=63 the position is correct again? 07:40 < Grum> right before you quit, the position displayed in the console is the right one 08:15 < Bibl> i think thats because the server sent an absolute packet 08:15 < Bibl> absolute position packet* 08:20 < Bibl> half day at school today, that means 12 hours to work on this when i get back lmao 15:40 < Bibl> no rounding errors it seems 15:40 < Bibl> could it be that im not handling all the packets because they take too long to process? 15:40 < Bibl> im using netty 15:44 < Bibl> @TkTech 15:57 < Bibl> yep 15:57 < Bibl> http://hastebin.com/suluvajugi.avrasm 15:57 < Bibl> line 65 15:57 < Bibl> get like 8 updates 15:57 < Bibl> 11 actually 15:57 < Bibl> and it updates position once 15:59 < dx> have you considered linking to your source? 15:59 < dx> unless you hate open source 15:59 < dx> in that case you're on your own 15:59 < Bibl> i dont hate open source 15:59 < Bibl> i do hate people claiming my stuff as their own 15:59 < Bibl> i have a private bitbucket i can add you to 16:00 < Bibl> you got an account? 16:00 < dx> no 16:00 < dx> i was going to register one but the username "dequis" (which is the username i use in github) was stolen by the same guy who stole the username "dx" in github 16:01 < Bibl> lmao 16:02 < Bibl> you can make an account thats private 16:02 < Bibl> so name doesnt really matter 16:02 < dx> anyway "people claiming my stuff as their own" - that's why licenses exist 16:03 < dx> even a simple MIT license requires people to keep all copyright notices 16:33 < jast> dx: so does not including a license 16:33 < jast> because no license means you retain all rights and grant none 16:34 < jast> at least that's my understanding of copyright law. I'm not a legal professional. etc etc 16:37 < Weloxux> I usually put the words "Copyright Weloxux" when I want to grant no rights and say something among the lines of "Do whatever you want with this, don´t blame me for anything" when I grant all rights 16:37 < Weloxux> actual licenses are probably the best (read: legally valid) solution, but it's a pain to sort out which one suits best 16:38 < dx> WTFPL is a valid license for the second case (really) 16:39 < jast> I've created a quick overview of some of the ones I found particularly useful: http://j.mp/opensource-licenses 16:40 < barneygale> that's really handy, thanks jast 16:40 < Weloxux> nice, bookmarking 16:41 < dx> also http://choosealicense.com/ and https://tldrlegal.com/ 16:41 < jast> choosealicense.com doesn't list my favourite extremely permissive license (zlib) 16:42 < dx> oh neat 16:42 < dx> didn't know it was different from mit 16:42 < jast> hm, tldrlegal has nice summaries 16:43 < Weloxux> my favourite license is probably this one: http://tcrf.net/The_New_Tetris 16:44 < jast> there's a license in there? 16:44 < Weloxux> "GET OUT OF OUR CODE YOU FILTHY HACKERS 8-) BITCHES" 16:44 < Weloxux> acceptable enough right 16:45 < Weloxux> really gets the message through 16:45 < jast> that's redundant... I believe copyright law says about the same thing already, along with a few extra things 16:45 < jast> and maybe in slightly different words :) 16:45 < Weloxux> you think? 17:06 < morfin> is there a way to validate packets? 17:07 < morfin> or i will need to read them and analyze to check if they're incorrect? 17:53 < Bibl> got it fixed 17:54 < Bibl> packets were coming in so fast 17:54 < Bibl> that my eventbus was being used in the middle of a entitylookmove 17:54 < Weloxux> aaaah 17:54 < Bibl> and then half the entity lookmove events werent working 17:54 < Bibl> so i inlined the method 17:54 < Bibl> bit ugly but oh well 17:55 < Bibl> PacketPS17EntityLookMove pelm = (PacketPS17EntityLookMove) p; 17:55 < Bibl> Entity entity = client.getBotContext().getWorld().getEntityById(pelm.getEntityId()); 17:55 < Bibl> if (entity == null) 17:55 < Bibl> return; 17:55 < Bibl> entity.setLocation(entity.getX() + pelm.getMovementX(), entity.getY() + pelm.getMovementY(), entity.getZ() + pelm.getMovementZ()); 17:55 < Bibl> entity.setPitch(pelm.getPitch()); 17:55 < Bibl> entity.setYaw(pelm.getYaw()); 17:55 < Bibl> // too slow to do a look and move at the same time 17:55 < Bibl> // bus.dispatch(new EntityMoveRotateEvent(pelm.getId(), pelm.getMovementX(), pelm.getMovementY(), pelm.getMovementZ(), pelm.getYaw(), pelm.getPitch())); 17:56 < TkTech> Pastebin. 17:56 < Bibl> yolobin 18:43 < Grum> Bibl: you managed to solve it? 18:44 < Weloxux> he had an overflow of inputs, apparently 18:44 < Grum> awws :P 19:16 < Bibl> https://www.youtube.com/watch?v=A9ha5U5xhuU&feature=youtu.be 19:16 < Bibl> inb4 youtube partnership 20:48 < Aragas> Why care that somebody will take you code? If anybody had 'stolen'it, than you can say that you have some skillz and you are doing right work. I would be proud of myself. Maybe realizations can be different, but, at the and, all realization will make the same result. Better concentrate work on things that are not implemented 20:48 < Aragas> then* 20:49 < Aragas> end. Imma sorry, bad hand control for some time 20:50 < Weloxux> if you were going to make a game, and you'd want to sell it, it wouldn't be handy if everyone could download your source and compile it for themselves 20:50 < Weloxux> you'd have zero sales 20:51 < Weloxux> and if someone says: "look at muh awsum code!" about something that is your code, that would feel bad as well, right? 20:53 < Aragas> good point 20:54 < Aragas> don't think that they could contribute to this stolen work. Even if they could, it will be a different game 20:55 < Aragas> but yes, no money 20:56 < Weloxux> and no credits for your hard work 20:56 < Weloxux> and that's what licensing is for 20:57 < Aragas> that's internet, no one cares about copyrights, but you are right 20:59 < Aragas> for me - better if someone use my work, even if they'll steal it. that's why i'm doin' it at all, i think 21:04 < Bibl> im fine with people having my code 21:04 < Bibl> im probably not going to sell this 21:04 < Bibl> but it legit makes me tick when i see my code being used by others 21:05 < Bibl> its happened before to me 21:05 < Bibl> and ive never really used licenses, ill look into it 21:06 < Aragas> Is it even real to do something with people that steals code? Like, write github team or something? 21:07 < Bibl> what do you mean 21:07 < Bibl> i dont understand the question sorry 21:08 < Aragas> i saw that %usermane% has stolen my code, without licensing stuff like '@ by Aragas' or something like that. How to restore justice? 21:09 < Bibl> tell his parents 21:09 < Bibl> call the military 21:09 < Aragas> thats the spirit! 21:09 < Bibl> thanks boss 21:09 < Weloxux> tell his parents is probably relevant, seeing how immature stealing code is 21:10 < Bibl> you know what the minecraft survival games are? 21:10 < Bibl> mcsg.in or something 21:10 < Bibl> the servers used to fill up really quickly 21:11 < Bibl> and it was a problem for me and my friends because back then we used to sometimes play on those servers 21:11 < Bibl> so i made a problem to find a world with enough people and have the client login to that server 21:11 < Bibl> and 2 weeks later i found someone selling it 21:12 < Bibl> and he made like $400 or something stupid 21:12 < Aragas> that always happen, just try to avoid users from using it. You say it by yourself - get authors IP and call the military 21:13 < Weloxux> reported it to Mojang? I believe it is illegal to make money off Minecraft 21:13 < Aragas> that's, actually, could work really well 21:14 < Bibl> this was like a year and a half ago 21:14 < Bibl> maybe even before 21:15 < Weloxux> well, that's the con of making a Classic server 21:15 < Weloxux> nobody is interested in stealing it 21:15 < Weloxux> yay :I 21:15 < dx> 17:05 < Aragas> Is it even real to do something with people that steals code? Like, write github team or something? 21:15 < Aragas> and supporting it 21:15 < dx> Aragas: just send a DMCA notice 21:16 < dx> and anything hosting the infringing code must remove it 21:16 < Aragas> dx: Hm. Yea. Worked with bukkit 21:16 < dx> https://help.github.com/articles/dmca-takedown-policy/ 21:16 < Aragas> thanks 21:17 < dx> applies to more than just github, but they have a nice guide on it 21:17 < Bibl> https://www.youtube.com/watch?v=SSCzDykng4g heard this? 21:18 < Aragas> that was unexpected 21:18 < Weloxux> ye 21:19 < Bibl> hnnnnnggg shes so hot 21:20 < Bibl> also they're all siblings 21:20 < Bibl> the band 21:20 < Aragas> totally unexpected 21:20 < Bibl> totally cool 21:20 < Aragas> but yea, she's nice 21:20 < Bibl> SIR 21:20 < Bibl> SHE IS 17 21:21 < Aragas> nah, still can do it 21:21 < Weloxux> hnnnnnggg shes so hot 21:21 < Aragas> and you know, worth it 21:22 < Bibl> ur my god aragas 21:22 < Aragas> nobody say that we cant code in jail 21:23 < Bibl> listen to any german or swedish rap/ 21:23 < Bibl> ?* 21:23 < dx> ._. 21:23 < Aragas> if i remember, if the difference in age isn't more than 2 years, it is legal 21:23 < Aragas> at least in mother russia 21:23 < Weloxux> depends on your country 21:23 < Bibl> 14 and 14 is statuary rape 21:23 < Bibl> oh 21:24 < Weloxux> anyone listen to Psychedelic Rock? 21:24 < dx> guys 21:24 < dx> wat. 21:24 < Aragas> dx: :DDD 21:24 < Bibl> hijacking in progress, please stand by 21:24 < Bibl> not really Weloxux 21:24 < Weloxux> such a shame 21:25 < Weloxux> https://noiseremoval.bandcamp.com/track/the-second-muts 21:26 < Bibl> https://www.youtube.com/watch?v=-GKJjKW1oEA hehe 21:28 < Bibl> katy perry -dark horse has 730m views 21:28 < Bibl> ... --- Day changed jeu. déc. 18 2014 01:34 < Brycey92> does anyone know how to check online status and MOTD of a server from inside a forge mod (on both clients and servers) without the query protocol? I know clients can do it using network packets, but I don't have the source code of those classes. 03:36 < Brycey92> I'm still here, in case anyone knows the answer to my question 03:50 < Bibl_> i only know that you can do this with the status packets 03:50 < Bibl_> why cant you use them? 04:19 < Brycey92> because i have no idea how to 04:20 < Brycey92> and without the source code or a deobfuscated MC javadoc, i can't figure that out 04:59 < deltab> maybe https://github.com/FunnyItsElmo/PHP-Minecraft-Server-Status-Query or https://github.com/Dinnerbone/mcstatus 04:59 < deltab> (or apparently dozens of others) 04:59 < deltab> oh, inside a mod, sorry 05:00 < Brycey92> yeah, on top of that, i dont know python or PHP, so i wouldnt be able to port those 05:10 < deltab> https://github.com/search?l=Java&langOverride=&q=minecraft+server+status&repo=&start_value=1&type=Repositories 05:11 < Brycey92> now wait do these use the query protocol? 05:11 < Brycey92> because most servers have that disabled 05:11 < Brycey92> i think it's disabled by default 05:11 < Brycey92> don't quote me on any of this 05:11 < deltab> sorry, didn't check 05:11 < deltab> half asleep 05:12 < Brycey92> wow, it's 4am where you are? 05:13 < Brycey92> no wonder you're tired :o 05:13 < Brycey92> damn, github doesn't let you add -query to the search to remove results with 'query' 06:50 < Brycey92> ah, I found the answer (i think): https://github.com/ldilley/minestat 07:02 < Brycey92> except every character it gets from the server has a space after it 07:39 < Grum> Brycey92: then you are reading the data wrong. it should be \x00 after each normal ascii because it is sending 16bit chars 07:41 < morfin> i will have to deal with it later as well 07:42 < morfin> but from server to client 07:44 < Brycey92> ok, what should I change in the code to fix that? 08:11 < Brycey92> changing the input stream reader to UTF 16LE removed the spaces, but the last character turned from a 0 to a ? and the program can't parse it anymore --- Day changed ven. déc. 19 2014 06:51 < morfin> what's actual chunks size without entities? 06:54 < morfin> it should be fixed i guess 11:31 < WizardCM> md_5, Dinnerbone: you two are clearly having fun on twitter xD 11:31 <+md_5> and I nearly wiped my entire phone :s 11:32 < WizardCM> well done xD 11:51 < Dinnerbone> :( 11:52 < Bibl_> im a pescatarian 11:52 < Bibl_> i dont suck bones at dinner 22:00 < Bibl> hhhhhnnnnnnnngggggg --- Day changed sam. déc. 20 2014 00:04 < ItsLuke> lelelele 00:04 < ItsLuke> elele 00:04 < ItsLuke> :> 02:21 < Bibl> why would you name yourself itsluke 02:22 < Bibl> surely you could name yourself luke and i would still know that it's you thats called luke 02:32 < dx> Bibl: because the nick "luke" has been registered 10 years, 37 weeks, 3 days ago and is still in use 02:33 < Bibl> maybe itsluke is an imposter 02:33 < Bibl> this is getting serious 02:33 < dx> damn 02:33 < dx> i didn't consider that possibility 02:34 < dx> we should call the irc cops 02:34 < Bibl> dont take any chances 02:35 < Bibl> mfw gotta rewrite half of my ide --- Log closed sam. déc. 20 08:20:55 2014 --- Log opened sam. déc. 20 08:21:04 2014 08:21 -!- Irssi: #mcdevs: Total of 147 nicks [1 ops, 0 halfops, 9 voices, 137 normal] 08:24 -!- Irssi: Join to #mcdevs was synced in 219 secs 15:56 < Komp> Hey, I'm working with the Beta 1.8 Protocol (documentation at http://wiki.vg/index.php?title=Protocol&oldid=602) but I can't seem to get my UCS-2 (string16) decoding quite right. My method to read it is: http://i.kmp.pw/DhxFQj but when I read the C->S handshake packet (0x02), my username is read as "TheKomp@" instead of "TheKomputerKing". Any advice would be greatly appreciated :) 15:57 < barneygale_> Komp: the length prefix is length in *characters*, not bytes 15:58 < Komp> Ah... I see 15:58 < Komp> Mind showing how I could read it? 15:59 < dx> multiply by two? 15:59 < barneygale_> yah 15:59 < Komp> Right 15:59 < barneygale_> UCS-2 is 16 bits per character 15:59 < Komp> Thanks for the help everyone <3 15:59 < Komp> Usually I just stick to UTF-8, so I don't do this stuff often 15:59 < dx> that turned out to be UTF-16, not UCS-2, but ehhhh, let's just keep pretending it's UCS-2 16:00 < Komp> As far as I read, UCS-2 can just be used as UTF-16 16:01 < dx> yeah you can pretend they are the same and most of the time it will be okay 16:01 < Komp> Kewl, ty for the help 16:01 < dx> i think a few years passed since UCS-2 was first mentioned and someone pointed out it's not really UCS-2 16:01 < Komp> Woo, it works! http://i.kmp.pw/Q03GNz 16:01 < dx> \o/ 16:03 < barneygale_> what are you working on Komp? Allowing new clients to connect to beta 1.8 servers? 16:03 < Komp> Nope 16:03 < Komp> I'm making a minigame kinda thing for Beta 1.8 16:03 < Komp> But since there's no servers, I'm writing one myself 16:03 < Komp> Next problem to tackle is that Beta 1.8 uses the `login.minecraft.net` servers which have been taken down. I'll probably step towards something like that AuthMe Bukkit plugin. 16:03 < dx> hahah fun 16:04 < Komp> Last time I wrote a Minecraft server, it was for 1.8 (current) and I didn't get past the step of encryption, heh 16:05 < Komp> I'm terrible with encryption on bytes/streams 16:05 < Komp> So this project is perfect for me 16:05 < dx> why that version in particular anyway? 16:05 < Komp> The last beta version available in the current launcher 16:05 < Komp> Except 1.8.1 16:05 < dx> and.. why beta? 16:05 < Komp> Not sure really 16:05 < Komp> Just wanted to try it out 16:05 < Komp> Seemed like a fun thing to work on 16:06 < Weloxux> Minecraft Beta is obviously better than the newer versions 16:06 < dx> hah, okay 16:06 < deltab> is it the length in characters or in code units? 16:06 < deltab> if it's UTF-16 they can be different 16:07 < Komp> In the beta protocol, string16 is UCS-2 (UTF-16) prefixed by a short which is the length in characters 16:07 < deltab> if there are non-BMP characters 16:07 < Komp> I'm using UTF-16 and UCS-2 interchangeably 16:07 < Komp> As in the code, UTF-16 is working for me 16:07 < deltab> if it's UCS2 there are only BMP characters 16:07 < deltab> sure, for BMP they're the same 16:09 < dx> 12:00 < dx> yeah you can pretend they are the same and most of the time it will be okay 16:09 < dx> i said that to avoid nitpicking :P 16:10 < deltab> most of the time, agreed 16:12 < deltab> the rest of the time it can be a buffer overflow or underflow :P 16:15 < dx> anyway Komp has bigger problems than that right now 16:15 < dx> wanting to implement a beta 1.8 server from scratch is a problem in itself 16:15 < Komp> What part of it? 16:16 < dx> all of it as a whole 16:16 < Komp> Hmm, I suppose 16:16 < dx> it's a lot of work 16:16 < dx> good luck 16:16 < Komp> I'm not going to do world generation 16:16 < Komp> it'll just be flat worlds 16:16 < Komp> Since this is aimed for a kind of minigame thing 16:17 <+Amaranth> That's a weird choice of version 16:17 <+Amaranth> Usually it's classic for the simplicity, beta 1.7 for the worldgen and/or game mechanics, or the very latest version for all the new features 16:17 < Weloxux> yeah, that´s true 16:18 < Komp> Well, the fact I couldn't get classic to actually run was a complete nope 16:18 < Komp> I added all the security filters and stuff but it just stayed as a black screen 16:18 <+Amaranth> Classic was simple enough that there are several third party servers and at least a couple clients 16:19 <+Amaranth> Meanwhile no one to date has written a replacement client or server for anything newer 16:19 < Komp> My original plan was for a classic server 16:19 <+Amaranth> Not one that is fully functional anyway 16:48 < Bibl_> think the problem is 16:48 < Bibl_> ur using intellij 16:57 < Komp> What's wrong with IntelliJ? 16:58 < Komp> @Bibl_ 16:58 < Bibl_> errthing 16:58 < Komp> k --- Day changed dim. déc. 21 2014 21:26 < umby24> Komp, tried classicube? 21:39 < ItsLuke> Komp, Are you komp: as in Komp from Spigot? --- Day changed lun. déc. 22 2014 18:37 < morfin> is that nessesary to handle serverquery protocol to see server in client? 18:42 < bgale> morfin, if you're talking about wiki.vg/Query, no, it's not necessary 18:42 < bgale> you do need to implement the Server List Ping though. 18:44 < morfin> that seems to be in use by that sites displaying server status 18:44 < morfin> etc 18:46 < morfin> and client is using it as fallback(?) 18:46 < bgale> the client doesn't use GS4 query at all 18:46 < bgale> and there's no reason for a fallback; server list ping is always enabled 18:46 < bgale> if it doesn't work, the server is down. 18:47 < morfin> but if i did not response properly to ping it send that query 18:48 < bgale> what? 18:50 < bgale> Sites that display server status generally use the server list ping, because it's enabled by default and can't be turned off. There is *some* software around that uses GS4, but not a great deal. 18:51 < morfin> i guess that software use default ping? 18:51 < morfin> and default request 18:51 < bgale> http://wiki.vg/Server_List_Ping <-- it uses this 18:52 < bgale> are you writing a server or a client? 18:54 < morfin> "server" 18:56 < bgale> right, so handle the server list packets exactly how you would any other packets 19:03 < morfin> i expected that when i send response next packet would be ping 19:52 < morfin> guys does Minecraft support full duplex? :D 19:53 < morfin> can vanilla client read and write at same time 19:57 <+SpaceManiac> depends what you mean by "at same time" 19:58 < morfin> i meant situation when server is pushing data and client is reading it and sending another data to server(as example server sends chunk data and client sends moving to server) 19:59 <+SpaceManiac> yes, that happens 19:59 < morfin> then it will complicate everything 19:59 < morfin> because of async IO on server and client sides 20:04 < morfin> soo 20:05 < morfin> client is using interleaved reading or no? 20:05 <+SpaceManiac> I don't think it does anything special 20:08 < morfin> i think i need to consult sources because i don't know that detail ) 20:09 < shoghicp> morfin: client sends whenever it wants, same with server 20:09 < shoghicp> that causes some issues with setting the compression 20:09 < morfin> wait what? 20:10 < morfin> even when already reading data? 20:42 < morfin> ha 20:42 < morfin> Will commit the packet to the channel. If the current thread 'owns' the channel it will write and flush the packet, otherwise it will add a task for the channel eventloop thread to do that. 20:43 < morfin> so it'll wait until "channel" is writable which means they're interleaved 21:36 < DemiPixel> roblabla 23:42 < kennyvv> Hello 23:42 < kennyvv> i have this stupid problem :| 23:43 < kennyvv> writing a server, for protocol 47. (1.8) 23:43 < kennyvv> but i receive the MC ping packet, AFTER the client says Can't connect to server. --- Day changed mar. déc. 23 2014 00:16 < barneygale> code? 00:21 < kennyvv> haha, thnx. but i decided to rewrite the networking. :P 01:16 < kennyvv_> wb 01:40 < DemiPixel> roblabla 01:41 < roblabla> yup 01:41 < DemiPixel> So 01:41 < DemiPixel> Somehow, I managed to connect to a 1.8 server 01:41 < DemiPixel> Either than or it allowed both 1.8 and 1.7.6 01:41 < roblabla> Nice 01:41 < roblabla> probably a spigot protocol hack server 01:41 < DemiPixel> I ran into a buffer error, though, when dealing with slots 01:41 < roblabla> it's not really 1.8 01:42 < DemiPixel> Slot data worked fine except nbt data was still in buffer format 01:42 < DemiPixel> Probably just the spigot protocol hack thingy 01:42 < DemiPixel> Felt I'd mention it just in case 01:42 < roblabla> erm, what packet specifically ? 01:42 < DemiPixel> set slot 01:42 < roblabla> I dunno if we consistantly deal with nbt 01:42 < DemiPixel> Well I mean 01:42 < DemiPixel> Set slot sends the buffer data 01:43 < DemiPixel> The thing is it only called "split" on the buffer 01:43 < DemiPixel> And wasn't sure if a toString() was needed or something 01:43 < DemiPixel> I fooled around with it but never got anything specficially working 01:43 < roblabla> you're supposed to give it a JSON structure 01:44 < DemiPixel> Well NBT looked like json normally, and instead when I console.infoed it I got "" like that 01:44 < DemiPixel> Probably just the 1.7 to 1.8 thing 01:44 < roblabla> so when you receive an NBT, you get it in buffer format ? 01:44 < roblabla> that's odd 01:44 < DemiPixel> No 01:44 < DemiPixel> Slot data comes in buffer format 01:44 < DemiPixel> This means like, the item id, damage, etc 01:45 < roblabla> yeah got that 01:45 < DemiPixel> So yes, that includes the NBT, which was the only thing not correctly being decoded 01:45 < roblabla> sorry if I'm not making sense, I'm a bit tired :P 01:45 < DemiPixel> lol, you probably know way more than me 01:46 < roblabla> well the set_slot is supposed to give you a structure with id, itemCount, itemDamage and nbtData 01:46 < roblabla> the first three being ints, last one being a buffer 01:46 < roblabla> if it gives you anything else, then something weird is going on 01:47 < roblabla> do you have any code I could test ? 01:47 < DemiPixel> The last one was a buffer 01:47 < DemiPixel> So that was correct 01:47 < DemiPixel> But how do I decode that to json then? 01:47 < DemiPixel> json / string 01:47 < DemiPixel> And why don't we automatically convert it to that? 01:47 < roblabla> Well, that's the previous owner's decision to always deal with as little as possible to avoid being slow 01:48 < roblabla> but since we don't have to actively decode everything anymore... IDK 01:48 < roblabla> There are various NBT<=>JSON serializers on NPM tho 01:48 < DemiPixel> k, well clearly I was doing it wrong lol 01:48 < roblabla> https://www.npmjs.com/packages/nbt 01:48 < DemiPixel> Lastly, I was wondering if we could turn these Errors: http://wiki.vg/Authentication into actual errors 01:48 < DemiPixel> like for "ForbiddenOperationException" actually say "Invalid credentials" 01:49 < DemiPixel> simple try and catch, then if we don't recognize the error, just set it as a new error or whatever 01:49 < roblabla> I wish error handling in JS was better 01:50 < roblabla> Well, I could set the err.message to something human-readable 01:50 < roblabla> at least for well-known error 01:50 < roblabla> the problem is, ForbiddenOperationException can be many things 01:50 < DemiPixel> Right 01:50 < roblabla> could be invalid credential or invalid token 01:50 < DemiPixel> Better than just saying "forbiddenOperationException" though 01:50 < roblabla> hmm, let me look at the current way I handle those 01:50 < roblabla> I wrote that code ages ago :P 01:51 < DemiPixel> lol 01:51 < DemiPixel> "I wrote that code ages ago" *previously in conversation* "Well, that's the previous owner's decision..." 01:51 < roblabla> Well, andrewrk is the original author 01:52 < roblabla> But even when he was active, I wrote a bunch of node-minecraft-protocol's code 01:52 < roblabla> Most of the manual packet updates since 1.3-ish ? 01:52 < roblabla> + the encryption code when that came around 01:53 < DemiPixel> Rather than focussing on the past 01:53 < DemiPixel> Let's focus on what we're GOING to be doing 01:54 < roblabla> Well 01:54 < roblabla> mojang is nice 01:54 < roblabla> they give us a neet human-readable errormessage 01:55 < DemiPixel> For what? 01:55 < roblabla> for all the login stuff 01:56 < roblabla> So here's something you could do 01:56 < DemiPixel> ahh okay 01:56 < DemiPixel> Gonna be honest, don't understand half this stuff 01:56 < roblabla> client.on('error', function(err) { if (err.errorMessage) { console.log(err.errorMessage); process.exit(1); } else { throw err; }); 01:56 < roblabla> or something like that 01:57 < DemiPixel> Like, I get some of the authentication, how packets kinda work, etc 01:57 < roblabla> this checks if we have a human-readable message in err.errorMessage, in which case we print it and exit "properly" 01:57 < roblabla> otherwise, we just re-throw the error to print the usual stacktrace 01:57 < DemiPixel> Okay maybe now would be a good time to fork? :3 01:57 < roblabla> fork what ? 01:58 < roblabla> I have push access to the original repo, so no need to fork. 01:58 < roblabla> This is something that belongs to user code 01:58 < DemiPixel> Wait, where are you recommending me to put that? 01:58 < roblabla> Somewhere in your code 01:58 < roblabla> Near where you create your client :P 01:58 < DemiPixel> Oh,you're saying for personal use 01:58 < DemiPixel> I mean, I'm not getting those errors anymore 01:59 < DemiPixel> Just when I WAS, it was a pain to figure it out 01:59 < roblabla> Were you using your own client ? Or one of the examples ? 01:59 < roblabla> I could add it somewhere in the examples 01:59 < DemiPixel> My own, lol, none of the examples are that good TBH 01:59 < DemiPixel> None of the examples include stuff like movement 02:00 < roblabla> I made a movement example on the wiki 02:00 < DemiPixel> yea, I saw 02:00 < DemiPixel> After I looked through a lot of the issues xD 02:00 < roblabla> I want to get rid of the examples folder or fork it to another repo :P 02:00 < roblabla> then people can contribute to it more easily 02:00 < DemiPixel> Is andrew on at all anymore? 02:00 < roblabla> no 02:01 < DemiPixel> Fork might be the only other option then 02:01 < roblabla> I can push to the repo 02:01 < roblabla> i can accept PRs, close issues, commit code, etc... 02:01 < roblabla> No need to fork. 02:01 < roblabla> Forking would just make the project less visible, and we don't need that. 02:02 < DemiPixel> Alright, well 02:03 < DemiPixel> I'd love to work on the protocol stuff but I don't know where you are 02:03 < roblabla> well, you can work on it in parallel 02:03 < roblabla> in lib/protocols.js 02:03 < roblabla> there's a huge list of packets 02:03 < DemiPixel> mhm 02:03 < DemiPixel> But you might have already changed some 02:03 < roblabla> what needs to be done is compare it meticulously to the list on wiki.vg/Protocols, and make sure they match and none are missing 02:03 < DemiPixel> Have you already branched? 02:03 < roblabla> nope 02:03 < roblabla> I'm just writing the compression logic 02:03 < DemiPixel> k, well 02:04 < DemiPixel> That's easy and just takes time 02:04 < DemiPixel> So I can do that :D 02:04 < roblabla> yeah, I'd love it if you could :3 02:04 < roblabla> thx 02:04 < DemiPixel> For example, the main one is movement 02:04 < DemiPixel> No more headY yay 02:04 < roblabla> so much wins :P 02:04 < DemiPixel> instead of stance can we just call it y now... 02:05 < roblabla> btw, don't worry about making breaking changes in the name 02:05 < roblabla> well, for the fields that is 02:05 < roblabla> packet names, I'd like it if they could stay as they are 02:05 < roblabla> but for the fields, if they changed, then put whatever makes the most sense 02:05 < DemiPixel> alright 02:05 < DemiPixel> Um 02:06 < DemiPixel> So, I'm having a little bit of a git fart 02:06 < DemiPixel> I was just wondering, like 02:06 < DemiPixel> push is like going from your comp to the server 02:06 < DemiPixel> And pull is from the server to you 02:06 < roblabla> yup 02:06 < DemiPixel> Right? 02:06 < DemiPixel> So 02:06 < DemiPixel> Why do you need pull requests o_O 02:06 < DemiPixel> Wouldn't they be push requests? 02:06 < roblabla> lol 02:07 < roblabla> Because you ask the owner to Pull your code 02:07 < DemiPixel> Seriously, what am I missing... 02:07 < DemiPixel> oh 02:07 < DemiPixel> Okay that's stupid 02:07 < roblabla> I mean, both would make sense really 02:07 < DemiPixel> imma call it PR 02:07 < DemiPixel> And then just imagine it's a push request 02:07 < roblabla> everyone calls them PR :p 02:08 < DemiPixel> Time to do some comparing 02:08 < DemiPixel> ... Once I pull 02:09 < roblabla> gosh, this is going to be a lot harder than I thought... 02:10 < DemiPixel> You just have to believe....... 02:11 < roblabla> You know what's funny ? each time I add a feature or update the protocol, the amount of arguments passed to parsePacket and createPacket is incremented 02:11 < roblabla> used to be only one 02:11 < roblabla> now there are 5 02:12 < roblabla> this could really use some cleaning up. 02:12 < DemiPixel> lol 02:13 < DemiPixel> Wait, so 02:13 < DemiPixel> I fork the project, make some commits on a branch 02:13 < DemiPixel> Then make a pull request selecting the branch? 02:13 < DemiPixel> I rarely fork projects, usually just have projects of my own 02:14 < roblabla> yeah 02:14 < DemiPixel> Alright 02:15 < roblabla> and then I hit the big green "merge" button after checking it works 02:15 < roblabla> :P 02:16 < roblabla> btw, DemiPixel, you can check your changes work by disabling compression on the server you test against 02:16 < DemiPixel> Well 02:16 < roblabla> in server.properties of minecraft server, there's a network-compression-threshold entry 02:17 < roblabla> set it to -1 to disable compression ^^ 02:17 < DemiPixel> oh okay 02:17 < DemiPixel> Well that'll make life easier 02:17 < DemiPixel> Because it SAID it connected to my 1.8 server successfully 02:17 < DemiPixel> but never logged in 02:19 < DemiPixel> So by default, running the test thing should go horribly wrong? 02:21 < roblabla> the npm test ? yeah 02:21 < roblabla> You need to do a small change for the tests to be done without compression 02:21 < roblabla> https://github.com/andrewrk/node-minecraft-protocol/blob/master/test/test.js#L20 02:22 < roblabla> add 'network-compression-threshold': -1 in there 02:22 < DemiPixel> holy crud you can reference lines with links 02:22 < DemiPixel> That's amazing 02:22 < roblabla> yup 02:22 < DemiPixel> Wait when running the test 02:22 < roblabla> clicking on the line number creates a link like that 02:22 < DemiPixel> The path in terminal (on a mac) needs to be to my java executable? 02:23 < roblabla> erm 02:23 < roblabla> you need java in your path, and you need to setup a bunch of other env variables 02:23 < roblabla> give me a minute 02:23 < DemiPixel> I've already forked 02:23 < DemiPixel> And got it all on my comp 02:23 < DemiPixel> But I want to make sure my "test" thing starts out working 02:24 < DemiPixel> MC_SERVER_JAR=path/to/minecraft_server.jar MC_USERNAME=email@example.com MC_PASSWORD=password npm test 02:24 < roblabla> MC_USERNAME='whatever' MC_PASSWORD='whatever's password' MC_SERVER_JAR='/path/to/minecraft_server.jar' npm test 02:24 < roblabla> yeah 02:24 < roblabla> and java -version should work 02:24 < DemiPixel> It does 02:25 < DemiPixel> Is that it? 02:25 < roblabla> then you should be set up :P 02:25 < DemiPixel> kk 02:25 < DemiPixel> Let's see if it works 02:25 < roblabla> OH 02:25 < roblabla> and the eula.txt thing I never got around fixing 02:25 < roblabla> or did I ? 02:25 < roblabla> I did. 02:29 < DemiPixel> Error: ENOENT, open '/Users/Me/Documents/Git/node-minecraft-protocol/test/package.json' 02:30 < roblabla> you need to be inside node-minecraft-protocol's directory 02:30 < roblabla> cd .. 02:30 < DemiPixel> There's no pack.json in test... 02:30 < DemiPixel> I did that 02:30 < DemiPixel> it gave me a different error 02:30 < roblabla> which is ? 02:30 < DemiPixel> "mocha command not found" 02:31 < roblabla> did you do npm install ? 02:31 < roblabla> oh, you're on a mac 02:31 < roblabla> erm, give me a moment 02:31 < DemiPixel> lol I have npm 02:31 < DemiPixel> npm help works 02:31 < roblabla> I meant "npm install" 02:31 < roblabla> the command 02:31 < roblabla> it installs all the dependencies 02:32 < roblabla> including mocha, which is used to run the tests 02:32 < DemiPixel> Oh 02:32 < DemiPixel> k, I'll do that one sec 02:32 < DemiPixel> oooh I know why 02:32 < DemiPixel> Because I had already done that for the other version 02:32 < DemiPixel> And for this one I just used git clone from the software "sourcetree" 02:32 < DemiPixel> which makes it really easy to do git stuff 02:32 < DemiPixel> k I'll get npm install 02:33 < DemiPixel> There we go 02:33 < DemiPixel> begginging test 02:34 < DemiPixel> Everything succeeded except pinging the server 02:34 < DemiPixel> And apparently some "after each" hook 02:34 < roblabla> can you send the first error my way ? 02:34 < roblabla> (pastebin it please) 02:35 < DemiPixel> what's wrong with hastebin 02:35 < DemiPixel> twice as fast 02:35 < DemiPixel> <3 02:36 < DemiPixel> http://hastebin.com/husebuvice.mel 02:36 < roblabla> don't really mind what pastie-thingy you use :P 02:36 < roblabla> ok so the thing timed out 02:36 < roblabla> urg 02:37 < DemiPixel> everything under "client" like the "pings the server" and such are in red 02:37 < DemiPixel> Why did everything work though? 02:37 < roblabla> it didn't 02:37 < roblabla> ✖ 2 of 111 tests failed: 02:37 < DemiPixel> everything excepted pining worked.... 02:37 < roblabla> npm ERR! Test failed. See above for more details. 02:38 < roblabla> no 02:38 < DemiPixel> play.clientBound, all of those have checkmarks 02:38 < roblabla> it just didn't run the other tests 02:38 < DemiPixel> Or are those all false because it couldn't ping it 02:38 < DemiPixel> So it threw no errors 02:38 < DemiPixel> gotcha 02:38 < roblabla> the first tests are very naive 02:38 < DemiPixel> lol 02:38 < roblabla> they're pretty much just here to make sure we're internally consistant 02:39 < roblabla> Then we have about 10 tests to "randomly" test if we actually work on a real server 02:39 < DemiPixel> Ah, no duplicates, no internal errors 02:39 < roblabla> I say randomly because those tests are... quite fuzzy 02:39 < roblabla> things like "did not crash for 10 seconds" (I'm not kidding) 02:39 < DemiPixel> it("does not crash for " + SURVIVE_TIME + "ms" 02:39 < roblabla> yeah 02:39 < roblabla> this test is stupid. 02:40 < DemiPixel> SURVIVE_TIME = 10000 02:40 < roblabla> Oh also 02:40 < roblabla> welp, nvm 02:40 < DemiPixel> So how do we fix the pining 02:40 < DemiPixel> *pinging 02:40 < roblabla> ANyway, did you test against the current tests against 1.8 ? 02:40 < DemiPixel> Or is that a packet issue 02:41 < roblabla> or did you test against 1.7.10 ? 02:41 < DemiPixel> Wait, I am testing to a 1.8 server 02:41 < DemiPixel> 1.8 02:41 < roblabla> without updating 02:41 < roblabla> ? 02:41 < roblabla> like, without updating the packet defs ? 02:41 < roblabla> cuz if that's what you did, it may (or may not) be why 02:42 < DemiPixel> okay 02:42 < DemiPixel> I'll try updating the pinging defs 02:42 < DemiPixel> See if that fixes it 02:42 < DemiPixel> My goal is just to keep testing stuff until it breaks 02:42 < DemiPixel> Then fix that def 02:44 < DemiPixel> Weird, looks like everything up to pinging is fine in terms of the defs 02:45 < DemiPixel> Oh maybe I need to change the protocol version... 02:46 < roblabla> that strategy won't work ^^ 02:46 < roblabla> we don't check every packet against the server 02:46 < roblabla> (that'd require a server plugin, which I wish I would take the time to write...) 02:46 < DemiPixel> oh lol 02:46 < DemiPixel> So how come pining isn't working 02:47 < DemiPixel> *pininging 02:47 < DemiPixel> god damnit, screw typgn 02:47 < DemiPixel> >.< 02:47 < roblabla> I dunno why pingingingininging doesn't work :3 02:47 < roblabla> lemme take a lookie at the tests 02:48 < DemiPixel> Is it possible that anything such as authentication or pinging changed? 02:48 < DemiPixel> In terms of how it's sent? 02:48 < roblabla> I don't think so 02:48 < roblabla> I'm looking at that 02:49 < roblabla> I mean, it did change in 1.7 02:50 < roblabla> oh 02:50 < DemiPixel> :D 02:50 < roblabla> looks like pinging has been broken for... like, a while ? 02:50 < DemiPixel> LOL 02:50 < roblabla> I dunno 02:51 < roblabla> Lemme just make a quick test 02:51 < roblabla> nothing better than empirical tests 02:54 < DemiPixel> OH 02:54 < DemiPixel> MMMHMM 02:54 < DemiPixel> Ping Response 02:54 < DemiPixel> "Json Response" Field Type: String 02:55 < DemiPixel> server_info: {id: 0x00, fields: [ { name: "response", type: "ustring" } 02:55 < DemiPixel> Would removing the u help? :3 02:56 < DemiPixel> 'ustring': [readString, writeString, sizeOfUString], // TODO : remove ustring 02:56 < DemiPixel> What's the point of it 02:56 < DemiPixel> the only thing that's difference is calculating the size 02:56 < roblabla> oks o pinging does work 02:56 < roblabla> yeah 02:56 < roblabla> ustring stands for unlimited string 02:56 < roblabla> it's an old hack 02:57 < roblabla> AKA me getting annoyed at mojang 02:57 < roblabla> and deciding to say "fuck it" 02:57 < DemiPixel> Anyway, was that the problem? 02:57 < roblabla> Pretty much, strings can have different cap depending on... erm... I guess mojang's humor 02:57 < roblabla> no 02:57 < DemiPixel> Or what is wrong with pining ATM? 02:57 < roblabla> I dunno, I can say pinging work 02:58 < DemiPixel> Is it my end then? 02:58 < roblabla> the following script : require('./index.js').ping({ host: 'pvp.desteria.com' }, console.log.bind(console)); works 02:58 < roblabla> Either that or the tests sucks 02:58 < roblabla> I'm going to try testing the test now 02:58 < roblabla> :P 02:59 < DemiPixel> Well, I mean, I've run this bot before 02:59 < DemiPixel> Maybe the test is just outdated 02:59 < roblabla> well, I usually run the test suite before releasing a version 02:59 < roblabla> And I'm pretty damn sure they should all pass 03:00 < roblabla> at least on a 1.7.10 server 03:00 < DemiPixel> "Fixed test for 1.7.10 compatability" 03:00 < DemiPixel> well it's not working on 1.8 lol 03:00 < DemiPixel> Maybe I'll download a 1.7.10 server 03:00 < DemiPixel> See if it works there 03:00 < roblabla> yeah, do that 03:00 < roblabla> I'll do too 03:00 < roblabla> MFW 1.8.1 came out and I missed it 03:02 < DemiPixel> They can't have changed that mu- "Added new protocol state" 03:02 < DemiPixel> FUUUUUUUUUUUUUUU 03:02 < DemiPixel> (jk) 03:03 < roblabla> xD 03:03 < roblabla> that was me at 1.8 release really 03:03 < roblabla> "meh, should be done quickly, they can't make the proto that much weirder" 03:03 < roblabla> then I saw the "added compression" thing 03:03 < roblabla> I cried. 03:04 < DemiPixel> https://mcversions.net/ 03:04 < DemiPixel> hehe 03:04 < roblabla> yup, been using that 03:04 < roblabla> playing the old alpha releases is fun 03:04 < DemiPixel> k, downloaded 1.7.10 03:05 < DemiPixel> k, testing with 1.7.10 03:05 < DemiPixel> k pinging works in 1.7.10 03:06 < DemiPixel> Does not crash for 10,000ms lo 03:06 < DemiPixel> News flash: it didn't 03:06 < roblabla> it crashed ?_? 03:07 < roblabla> first time I see someone which manages to make that test fail 03:07 < DemiPixel> news flash: it didn't crash 03:07 < roblabla> oh 03:07 < DemiPixel> lol 03:07 < roblabla> I'm sad now 03:07 < DemiPixel> sarcasm 03:07 < roblabla> for once this test could've been useful 03:07 < DemiPixel> XD 03:07 < roblabla> maybe 03:07 < roblabla> probably 03:07 < DemiPixel> but the pinging is horrible 03:07 < DemiPixel> 13,969ms? 03:07 < DemiPixel> online mode: 10,444ms? 03:08 < DemiPixel> And we got 4 errors 03:08 < DemiPixel> time to hastebine 03:09 < DemiPixel> http://hastebin.com/isuyugadij.mel 03:09 < DemiPixel> They're all mc-server errors 03:09 < DemiPixel> idk if that means anything 03:10 < DemiPixel> "mc-server clients" okay, I guess that means the clients 03:12 < roblabla> AssertionError: {"version":{"name":"1.7.6","protocol":5},"players":{"max":120,"online":0,"sample":[]},"description":{"text":"test1234"}} deepEqual {"version":{"name":"1.7.10","protocol":5},"players":{"max":120,"online":0,"sample":[]},"description":{"text":"test1234"}} 03:12 < roblabla> you are testing against 1.7.6 03:12 < roblabla> no ? 03:12 < roblabla> it works on my end 03:12 < DemiPixel> At the bottom of protocol: minecraftVersion: '1.7.6', 03:12 < DemiPixel> but I'm running a 1.7.10 server 03:12 < DemiPixel> didn't realize it would be a huge issue 03:13 < roblabla> ._. 03:13 < roblabla> Did I... Seriously never up this value ? 03:13 < DemiPixel> Oh it's actually 1.7.10 03:13 < DemiPixel> derp 03:13 < roblabla> it's at 1.7.10 here 03:13 < DemiPixel> Oooh maybe i never updated it 03:13 < DemiPixel> because I downloaded the other a while ago 03:13 < DemiPixel> Then changed 1.7.10 to 1.8 just now 03:14 < DemiPixel> Then put it back to what I remember from the other 03:14 < DemiPixel> Which was 1.7.6 03:14 < roblabla> ya know, git reset/git checkout is your friend 03:14 < DemiPixel> I npm installed before 03:14 < DemiPixel> so it was never connected with git 03:14 < roblabla> oh 03:14 < roblabla> People using the npm module. News to me :P 03:15 < DemiPixel> Yay success 03:15 < DemiPixel> Right, now what 03:16 < DemiPixel> Figure out what's wrong with 1.8 pinging? 03:18 < roblabla> not yet 03:20 < roblabla> at my school, every function we write needs to be under 25 lines, each line under 80 character in length 03:20 < roblabla> if they saw the kind of code node-minecraft-protocol contains, I think they'd die 03:20 < DemiPixel> meh 03:20 < DemiPixel> I'm not really into having 2000 functions 03:20 < DemiPixel> Sure you can compact code 03:20 < DemiPixel> But I have plenty of long functions if they're advanced 03:25 < DemiPixel> Well this is going well 03:26 < DemiPixel> Wait. could we add that client.on('error') thing to help? 03:26 < roblabla> wouldn't help 03:27 < roblabla> and having small functions makes the code easier to digest and understand 03:27 < roblabla> tho 25 might be a bit extreme, I usually try to limit myself to 40 lines 03:27 < DemiPixel> I still personally think 1.8 functionality is better than compact no-functionality 03:28 < roblabla> I agree 03:28 < roblabla> but I'm crying over my own code right now 03:28 < roblabla> I'm going to be breaking stuff with this 1.8 update 03:28 < DemiPixel> Such as? 03:28 < roblabla> bugs 03:28 < DemiPixel> What you really need isn't more functions 03:29 < DemiPixel> I mean that might help, but 03:29 < roblabla> What I really need is more time 03:29 < DemiPixel> You need better comments other than "// I don't know wtf mojang smokes" 03:29 < roblabla> ney, comments never help 03:29 < roblabla> more functions makes code more modular 03:29 < DemiPixel> never is a strong word... 03:29 < roblabla> need to debug this one little thing ? just call it with a different set of argument 03:30 < roblabla> my comments are just todos, most of the time 03:30 < roblabla> reminders that the next thing is a hack and needs to be fixed 03:30 < DemiPixel> Meh, some people use comments to explain their code 03:30 < DemiPixel> What is happening or why it's done 03:30 < roblabla> any time you see a comment such as this one, it's just me saying to myself "hey, if you ever figure out the real purpose, then you might want to make this prettier" 03:31 < roblabla> Except I don't need to explain my code 03:31 < DemiPixel> lol 03:31 < DemiPixel> It just humored me when I was looking at that part 03:31 < roblabla> Here's the thing : reading my code and understanding it isn't the problem 03:31 < roblabla> it's navigating it 03:31 < DemiPixel> Well one thing that helps sometimes is multiple files 03:31 < DemiPixel> So you're not taking in 1000 lines at once 03:31 < DemiPixel> For example have all the defs in a seperate file 03:32 < roblabla> yeah, but when I came into that project, it was already in the 1000s of line state 03:32 < DemiPixel> That would cut out 600-700 lines 03:32 < roblabla> And I've been meaning to split it for a while, but never found the will to do it 03:32 < roblabla> And it doesn't help the navigation problem either 03:32 < roblabla> protocols.js isn't used that much 03:32 < roblabla> index.js is the big file that gets most changes 03:33 < DemiPixel> Is that where the ping issue is? 03:33 < roblabla> ping issue is weird 03:33 < roblabla> I'll look into it later 03:33 < DemiPixel> wtf index.js is only 380 lines 03:33 < roblabla> just disable that test for now 03:33 < roblabla> yes, but it's what gets the most changes 03:33 < roblabla> and it's just one huge monolythic function 03:33 < roblabla> that changes for every version 03:33 < DemiPixel> Yea, but 300 lines can't be THAT hard to navigate 03:33 < roblabla> it is 03:34 < roblabla> It's a real callback-fest in it 03:34 < DemiPixel> Okay, so just remove the "done();" in the ping test? 03:35 < DemiPixel> Sorry, *comment out 03:35 < roblabla> no, comment out the whole it block 03:35 < roblabla> so that it won't run 03:36 < DemiPixel> k 03:37 < DemiPixel> Yea, connecting sucessfully in online mode doesn't work 03:38 < roblabla> "doesn't work" is too vague :P 03:38 < DemiPixel> Timed out 03:38 < DemiPixel> 40,000ms exceeded 03:38 < DemiPixel> Same thing as ping 03:38 < DemiPixel> Error: timeout of 40000ms exceeded at null. (/Users/Me/Documents/Git/node-minecraft-protocol/node_modules/mocha/lib/runnable.js:167:14) at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)