00:45 < tehme> but interesting 00:46 < Drainedsoul> bool first=false;for (auto i : items) { if (first) first=false; else std::cout << ", "; std::cout << i; } 00:47 < tehme> wut 00:47 < tehme> mb first = true ? 00:48 < Drainedsoul> yeah 00:48 < Drainedsoul> my bad 00:56 < tehme> well, i did it 00:56 < tehme> now i can parse wiki source, fix types and recognize arrays and fields that represent their length 00:57 < tehme> now i must do a code generator that can use all this 03:26 < conur> hey all 03:27 < conur> Im back again with another issue that I just cant solve... does anyone have any idea how you write the UCS-2 strings in java? Ive tried like a hundred different things including dig into craftbukkit's 1.6.2 code on github and Im just lost. 2 hours has gotten me nowhere so far 03:28 <+sadimusi> DataOutputStream is your friend 03:28 <+sadimusi> http://docs.oracle.com/javase/7/docs/api/java/io/DataOutputStream.html#writeChars(java.lang.String) 03:30 < conur> Im using NIO so, bytebuffers. Can i mix the two? 03:31 <+sadimusi> there are probably a few other classes implementing DataOutpu 03:31 <+sadimusi> +t 03:31 <+sadimusi> those don't look very useful though 03:32 < Drainedsoul> wouldn't using that method write UTF-16 characters, not UCS-2 characters? 03:33 < conur> Im just stumped. It seems like i should be able to just write the short for the size then write all the bytes inside the string, but for some reason that just refuses to work properly. 03:33 <+sadimusi> it's what minecraft uses... 03:33 < ffmdr> utf-16 == ucs-2 03:33 <+sadimusi> ffmdr: hell no 03:33 < Drainedsoul> yeah lol 03:33 < Drainedsoul> that's the furthest thing from the truth I've read all day 03:33 < conur> hes right 03:33 < conur> to an extent 03:33 < conur> it stops being the same at some point iirc 03:34 <+sadimusi> well, for all practical purposes it's true :P 03:34 < Drainedsoul> UCS-2 can represent code points that UTF-16 can't, and vice versa. So it's not really true. 03:34 < ffmdr> uh 03:35 <+sadimusi> conur: http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/io/DataOutputStream.java#DataOutputStream.writeChars%28java.lang.String%29 03:35 < conur> thank you, hopefully that will clear it up 03:35 < conur> here's what i get right now when pinging lol http://gyazo.com/6c762a4c816b951674d565ac1f337ca8.png 03:36 <+sadimusi> apparently java just uses ucs2 internally 03:36 < Drainedsoul> it used to, it doesn't anymore. 03:36 <+sadimusi> then minecraft doesn't use ucs-2 either 03:36 <+ammar2> conehead: don't copy the code from the repo, wrap a ByteArrayOutputStream with a DataOutputStream and then use ByteBuffer.wrap(arraystream.toArray()) 03:36 <+ammar2> err 03:36 <+ammar2> conur: ^ 03:37 <+sadimusi> ammar2: that doesn't sound much better 03:37 <+ammar2> sadimusi: JAVA ENTERPRISE!!1! 03:37 <+ammar2> wrap everything 03:38 < Drainedsoul> http://docs.oracle.com/javase/6/docs/api/java/lang/String.html => "A String represents a string in the UTF-16 format [...]" 03:38 < conur> by the way, should the size that I send to the client be half the # of bytes contained in the string, since it's characters? 03:38 < conur> or, chars to be specific 03:38 <+ammar2> yup 03:38 < conur> ok just wanted to make sure that wasnt the part i was mucking up 03:41 < conur> this code doesnt work: http://gyazo.com/ecf0098cae123ec250fa181afe92716f.png pretend message is exactly this: §1 74 1.6.2 Hello 0 6 03:42 < Drainedsoul> what are the raw bytes it's sending? 03:42 < conur> one second 03:43 < conur> excuse the spam: -2, -1, 0, -89, 0, 49, 0, 0, 0, 55, 0, 52, 0, 0, 0, 49, 0, 46, 0, 54, 0, 46, 0, 50, 0, 0, 0, 72, 0, 101, 0, 108, 0, 108, 0, 111, 0, 0, 0, 48, 0, 0, 0, 54 03:46 < Drainedsoul> shouldn't the first byte be 0xFF or -1? 03:47 < Drainedsoul> and wouldn't -1, 0 be 0xFF, 0 which would be 255 as a short? 03:47 < Drainedsoul> or am I totally out to lunch 03:47 <+sadimusi> I assume the -2 comes from the client 03:47 < Drainedsoul> oh this isn't just the bytes being sent 03:48 <+sadimusi> but your length can't be right 03:48 <+sadimusi> it looks like it's missing completely 03:48 < Drainedsoul> yeah because 49 = "1" I'm p. sure 03:48 <+sadimusi> and -89 is probably § 03:49 < conur> oh i wasnt including that part 03:49 < conur> sorry 03:49 < conur> i just included the actual message itself 03:50 <+sadimusi> so the -2 -1 is the length? 03:50 < Drainedsoul> no 03:50 < Drainedsoul> NSAUHS 03:50 < conur> no 03:50 < Drainedsoul> that's the fucking 03:50 < Drainedsoul> BOM 03:50 < conur> sec 03:50 <+sadimusi> :D 03:50 < Drainedsoul> use 03:50 < conur> i will add the part that sends the size 03:50 < Drainedsoul> UTF-16BE as your encoding 03:50 < Drainedsoul> and it won't write the BOM 03:50 < conur> how do i do that? 03:50 <+ammar2> conur: err guy, why are you calling flip on your buffer? 03:51 < Drainedsoul> message.getBytes("UTF-16BE") 03:51 < conur> tbh i assumed it was default BE 03:51 < Drainedsoul> make sure when you get the length you do the same thing 03:51 < Drainedsoul> it is 03:51 < conur> is it default LE? 03:51 < Drainedsoul> but it isn't 03:51 < conur> WAT 03:51 < Drainedsoul> big endian is the default, but if you don't specify an endianness explicitly it writes the BOM 03:51 < Drainedsoul> the ZWNBSP 03:51 < conur> OH 03:51 < conur> okay 03:53 < conur> hahaha what the hell? this is certainly different.. 03:53 < conur> http://gyazo.com/ff1a133cbc87726dcb6acbf4a72357aa.png 03:54 < Drainedsoul> you're 03:54 < Drainedsoul> when you get the length, you're not specifying UTF-16BE 03:54 < Drainedsoul> so they're different lengths 03:54 < Drainedsoul> ultimately you should just get the bytes of the string and save it between those two calls so you don't encode the string twice 03:55 < conur> http://gyazo.com/9c8a27ca3efc4cfc202235b0768e6163.png i dont understand where else im supposed to be specifying charset 03:56 < Drainedsoul> up at the top, you get the buffer, get its length, and output that as a short, but you get the buffer with the BOM in it because you don't specify UTF-16BE 03:56 < Drainedsoul> second line of that SS 03:57 < conur> so MESSAGE the variable ALSO needs to be specified as UTF-16BE? 03:58 < Drainedsoul> you're saying out.put((byte)0xFF).putShort((short)(message.getBytes().length/2)); 03:58 < Drainedsoul> but you need to say 03:58 < Drainedsoul> out.put((byte)0xFF).putShort((short)(message.getBytes("UTF-16BE").length/2)); 03:58 < conur> OH i didnt even see that 03:58 < conur> sigh 03:58 < conur> i should have these on separate lines 03:58 < conur> it makes this way less hard to debug.. 03:58 < Drainedsoul> you should just fetch the bytes of the string once 03:58 < conur> solid idea 04:00 < conur> OH MY GOD IT WORKS 04:00 < conur> JESUS 04:00 < conur> I cannot believe I spent 3 hours on this. 04:00 <+sadimusi> shouldn't message.length work just as well? 04:00 < conur> Then again it's been like a year since Ive done any programming so I guess my problem solving skills have sort of drained.. 04:00 < conur> thank you drainedsoul (y) 04:00 < Drainedsoul> it will, but not in all cases if he eventually switches over to actual UCS-2 04:01 < Drainedsoul> conur: netime 04:27 < conur> Ive gotta say, after not programming for over a year and instead learning to make music, the way I approach project management is totally different and I love it. Im way more productive now 04:27 < conur> Anyone else here ever dabbled in FL Studio/Ableton/etc.? 04:29 < dx> huh interesting 04:30 < dx> conur: i tried to get into it but DAWs seemed to be about 'do random stuff until it looks good'. but i'm interested in how it changed the way you work 04:34 < conur> well 04:35 < conur> now i approach the creative process / getting stuff done a little differently 04:35 < conur> i used to just dive in without thinking and then focus on each little detail way too much, stupid stuff like what to name a method. I also had a tedious habit of documenting each little thing as i went along 04:36 < conur> now I take a little bit of time to plan ahead, then try to get the general blanket idea of what im doing figured out so i can put everything together and make it work just well enough 04:36 < conur> then ill get into the little details, and then ill zoom back out and work on the next portion of the project and repeat the process 04:37 < conur> im also choosing to not stay up until 6am on a problem and instead leave when i get too stressed out and give myself some time to think on it :P 04:43 < dx> heh "zoom out" 04:45 < conur> haha 04:45 < conur> so what turned you off of DAWs? 04:45 < dx> meanwhile when i mess with audio i tend to focus on details too much, but i don't have that problem when programming 04:45 < dx> i don't know really, i guess they weren't what i was looking for 04:46 < dx> the process of making music seemed too much like putting a bunch of arbitrary sounds in arbitrary places and getting arbitrary results 04:47 < dx> and i don't like 'magic numbers' 04:48 < conur> its all pretty in-your-head and not really super visual isnt it 04:48 < dx> hm? 04:48 < conur> i feel you. its hard to keep track of it all and try to visualize that little "box" of space you have to put things in 04:48 < conur> but thats all mixing and mixing gets super stressful super fast 04:49 < conur> when youre just writing the music itself you can just ignore all that pretty easily and that part of it is the most fun 04:49 < conur> just grab a piano synth and some drum samples and mess around until something sounds good. 04:50 < conur> i just started to get better at sound design with oscillators on synths like Sylenth1 and thats a ton of fun to play around with too 04:50 < dx> oh damn you just reminded me that i should keep that audionews.org account alive 04:50 < dx> (by mentioning "drum samples" :D, there are large sample libraries and other stuff in that site) 04:51 < dx> oh nevermind there was no need to. 04:55 < conur> if i can make a suggestion 04:55 < conur> get as many sample packs as possible 04:55 < conur> just rip Vengeance packs. I have a ton of them. it makes everything way easier 04:55 < dx> samples are good! 04:56 < conur> im starting to learn to make my own, nothing like real instruments since i have no acoustic instruments save a piano, but just playing with sounds and stuff. 05:14 < Not-001> [Charge] none pushed 3 commits to master [+18/-0/±1] http://git.io/M2-3YA 05:14 < Not-001> [Charge] Wallbraker ee6ed58 - lib: Add loader 05:14 < Not-001> [Charge] Wallbraker b9dbfe0 - lib: Add SDL bindings 05:14 < Not-001> [Charge] Wallbraker bcce8dc - charge: Setup a mini skeleton core 07:56 < Not-001> [fCraft] fragmer * r2167 19 files : Refactoring pass: Made fCraft.Position struct immutable. 07:56 < Not-001> [fCraft] fragmer * r2168 4 files : Refactoring pass: Moved BlockingQueue class out of fCraft core into MapRenderer project (since that's the only use). 08:51 < Not-001> [fCraft] fragmer * r2169 4 files : Updated JetBrains.Annotations.cs to ReSharper 8.0 implementations + minor cleanup. 12:04 < Not-002> [fCraft] fragmer * r2170 2 files : Sloppy fix for AddWorldPopup lockup. Gotta rewrite synchronization some time. Maybe after moving to .NET 4.0 12:23 < Not-002> [fCraft] fragmer * r2171 2 files : Fixed a very rare ChatTimer error, when trying to print negative time left. 12:40 < Not-002> [fCraft] fragmer * r2172 2 files : Improved logging of console-command errors in ServerGUI. Adjusted block-binding code in Player.cs to potentially work with custom block types. 16:37 < Not-002> [Charge] Wallbraker pushed 1 commit to master [+0/-1/±3] http://git.io/VUwV7Q 16:38 < Not-002> [Charge] Wallbraker 594cfff - charge: Load SDL dynamically by default 17:58 < ffmdr> anyone got some quick server list ping code in java for 1.6? 19:05 < Not-002> [Charge] Wallbraker pushed 1 commit to master [+0/-0/±1] http://git.io/9c7fHQ 19:05 < Not-002> [Charge] Wallbraker 6ebc22f - core: Fix library names to be enums 19:12 < ellisvlad> Hi everyone :D 19:13 < ellisvlad> Anyone at i49? 19:13 < ellisvlad> Dinnerbone... mind coming to H2 G20? :D? 19:24 < Calinou> what 20:52 < Not-002> [Charge] Wallbraker pushed 2 commits to master [+5/-0/±1] http://git.io/jYnO7g 20:52 < Not-002> [Charge] Wallbraker 6ca8f48 - lib: Add GLES bindings 20:52 < Not-002> [Charge] Wallbraker e6cb9e6 - core: Load GLES on start 22:07 < Not-002> [Charge] Wallbraker pushed 1 commit to master [+0/-0/±1] http://git.io/VFK3Rw 22:07 < Not-002> [Charge] Wallbraker fa106c3 - core: Fix OpenGL on Emscripten --- Day changed lun. août 26 2013 00:01 < Not-002> [Charge] Wallbraker pushed 2 commits to master [+0/-0/±2] http://git.io/ohwOvw 00:01 < Not-002> [Charge] Wallbraker 36ddda3 - core: Swap buffers on native as well 00:01 < Not-002> [Charge] Wallbraker 1edae08 - charge: Draw a small triangle with OpenGL 01:21 < wolfmitchell> Anyone know any good C++ MC protocol libs for 1.5.2? The wiki says the latest mc--c supports 1.3.2, not anything above... 01:30 < AnotherOne|2> you can use my generated libs, but they are unfinished 01:30 < AnotherOne|2> messages* 01:30 < AnotherOne|2> https://github.com/tehme/mcprotocol 01:33 < Drainedsoul> just write your own 01:33 < Drainedsoul> you're a few template metaprograms away! 01:39 < AnotherOne|2> can you show yours? 01:40 < Drainedsoul> https://github.com/RobertLeahy/MCPP/blob/c8bc0723ea6ab03d9188c43e85acaac5c1fdd99c/include/packet.hpp 01:44 < tehme> is this to practice templating skills? 01:45 < Drainedsoul> no, why would you implement it w/o using templates wth 01:46 < tehme> because i want var names 01:46 < Drainedsoul> well I hope you enjoy typing 01:46 < tehme> heh 01:47 < tehme> i practice in code generation and lua:) 01:54 < tehme> oh yeah 01:54 < tehme> TEMPLATES EVERYWHERE 01:54 < tehme> template specialization rocks 01:55 < Drainedsoul> yeah I like it. Get the compiler to do all your work for you. 01:55 < tehme> i didn't know about ot when i generated previous version of messages 01:55 < tehme> it made me some asspain on serialize function 01:56 < tehme> now i can Serialize 01:56 < tehme> how do you solve a problem when you get part of packet? 01:57 < Drainedsoul> the packets are incrementally built, and the partially built packets are stored per-client 01:57 <+sadimusi> I just raise a PartialPacketException which basically rewinds the stream and it starts parsing again when more data is available 01:57 < Drainedsoul> ... 01:57 < Drainedsoul> lol 01:58 <+sadimusi> well, I didn't actually write that part 01:58 < tehme> i did the same 01:58 <+sadimusi> but it looked like an ok solution to me 01:58 < tehme> but this is pretty expensive 01:58 < tehme> is processing speed ok? 01:58 < Drainedsoul> https://github.com/RobertLeahy/MCPP/blob/c8bc0723ea6ab03d9188c43e85acaac5c1fdd99c/src/server.cpp#L57 02:28 < wolfmitchell> tehme, does that have any hook-like stuff? eg. to call a function for me when a client connects, when a player breaks a block, etc? 02:36 < tehme> nope 02:39 < wolfmitchell> ah, looks like I'll just implement it myself 02:39 < wolfmitchell> tehme, are there any docs for the library? 02:40 < tehme> only comments 02:40 < wolfmitchell> hm, ok 02:41 < tehme> in russian 02:41 < wolfmitchell> ._. 02:41 < tehme> heh 02:41 < tehme> if you want to use it, just ask me 02:41 < wolfmitchell> well, I'm probably going to :P 02:41 < wolfmitchell> I'm planning on writing my own MC server 02:42 < tehme> lib is client-oriented, but may fit 02:43 < wolfmitchell> ah 02:43 < wolfmitchell> meh, I'll just write my own... 02:43 < tehme> i'll generate new 1.5.2 packets for you after finishing my generator, if you want 02:44 < wolfmitchell> hm. ok :D 02:44 < wolfmitchell> do you think you can make it so it can use hooks and shit? 02:45 < wolfmitchell> tehme, ^ 02:45 < tehme> mayebe 02:45 < tehme> maybe* 02:45 < wolfmitchell> that would make this a whole lot easier, lol 02:46 < wolfmitchell> also, do you use boost for it? 02:46 < wolfmitchell> ._. 02:46 < tehme> i didn't even imagine i would recognize arrays and generate code for them automatcally 02:46 < tehme> for generation? 02:46 < tehme> nope 02:46 < wolfmitchell> I mean, for the actual sockets and stuff 02:46 < wolfmitchell> looks like you did 02:46 < tehme> sdl net 02:47 < wolfmitchell> ah 02:47 < tehme> there may be some boost 02:47 < tehme> i don't remember now 02:47 < wolfmitchell> wait, then why do I get errors about boost when doing g++ -Wall -O2 -fpic * messages/* -o mcprotocol.o 02:47 < wolfmitchell> also do you have any headers generated for it? 02:47 < tehme> ah 02:47 < tehme> there is some boost 02:47 < tehme> boost endian 02:47 < wolfmitchell> ah 02:48 < tehme> it was near packets, iirc 02:48 < tehme> if it is not, just google it 02:48 < tehme> it is not in boost actually 02:48 < wolfmitchell> o-o 02:50 < wolfmitchell> also, tbh, this is my first (actually second, but the first was tiny) project in C++ lol 02:54 < tehme> heh 02:54 < tehme> good luck then:) 02:55 < wolfmitchell> tehme, also, what license is your library under? 02:55 < tehme> "do what the fuck you want license" 02:57 < tehme> iirc, mit licnse is the same 03:01 < wolfmitchell> hm, ok 03:01 < wolfmitchell> I'll include your project with mine for the sake of helping people with problems, but I'll make sure to give credit 03:03 < tehme> good luck with it, i hope you will not hate me:) 03:04 < wolfmitchell> :P 03:04 < tehme> good night 03:04 < tehme> im going to sleep 12:19 < Not-003> [fCraft] fragmer * r2173 6 files : Renamed ReturnSelfIfNoMatches search option to ReturnSelfIfOnlyMatch, to better reflect its purpose. 13:17 < Not-002> [fCraft] fragmer * r2174 8 files : Added GUI binding for HeartbeatUrl setting to ConfigGUI. Slightly sped up ConfigGUI startup. 19:21 < tehme> wtf 19:21 < tehme> 1.6.2 server treats my name as hieroglyphs 19:22 < tehme> Tester -> 吀攀猀琀攀爀 19:22 < tehme> but it recognizes localhost ok, because client connects normally and gets 0xFD 19:23 < tehme> is it some server bug? 19:23 <+sadimusi> the host is never actually used 19:23 <+sadimusi> so your encoding's probably wrong somehow 19:23 < tehme> hm 19:23 < tehme> mb 19:24 < tehme> i'll check 19:24 < Drainedsoul> those aren't hieroglyphs 19:24 < Drainedsoul> looks like CJK 19:24 < Drainedsoul> are you sure about your endianness? 19:25 < dav1d> ^ my guess as well 19:25 < tehme> do i have to change endianness for strings? 19:25 < Drainedsoul> well you have to use UCS-2BE 19:25 < Drainedsoul> not UCS-2LE 19:25 < tehme> iirc, in my 152 version i did change it 19:26 < Drainedsoul> well you can change it manually or you can get the encoder to do it for you 19:27 <+sadimusi> somebody who knows this whole encoding stuff a bit better than me should try to figure out if java really uses ucs-2 when you call the charAt() method on a string and not just utf-16 19:28 < Drainedsoul> I'll try and figure it out 19:28 < Drainedsoul> I've written a Unicode library and implementations of UTF-8, UCS-2, UTF-16, and UTF-32, so I hope I qualify :| 19:28 <+sadimusi> sounds like it should be enough :) 19:28 < Drainedsoul> just give me a few minutes 19:28 <+sadimusi> there's some info in the docs http://docs.oracle.com/javase/7/docs/api/java/lang/Character.html 19:29 < Drainedsoul> well a character in Java is a code unit I'm p. sure 19:29 < Drainedsoul> but I don't know how charAt works, so I'll write a simple test 19:33 < Drainedsoul> it gets the code unit 19:34 < Drainedsoul> so if you make a string that just contains MUSICAL SYMBOL G CLEF (U+1D11E) 19:34 < Drainedsoul> charAt(0) == 0xD834, charAt(1) == 0xDD1E 19:34 < Drainedsoul> which is a high/low surrogate pair 19:37 <+sadimusi> and what does that mean in terms of encoding? (I really have no idea about unicode) 19:37 <+sadimusi> all DataOutput does is combining these values, so in this case you would get D834DD1E 19:37 < Drainedsoul> internally Java stores strings as UTF-16, which means that characters outside the Basic Multilingual Plane are two code units 19:38 < Drainedsoul> D834 DD1E is illegal UCS-2 19:38 < Drainedsoul> because UCS-2 would interpret it as D834 (illegal Unicode) followed by DD1E (illegal Unicode) 19:38 <+sadimusi> so it is utf-16? 19:38 < Drainedsoul> yes 19:38 <+sadimusi> who came up with this whole ucs-2 thing then? 19:39 < Drainedsoul> for Minecraft or in general? 19:39 <+sadimusi> I should probably write some unit tests before jumping to conclusions 19:39 <+sadimusi> yes 19:39 < Drainedsoul> UCS-2 used cover all of Unicode because planes other than the BMP were added 19:39 < Drainedsoul> UTF-16 is an extension -- a hack 19:39 < Drainedsoul> it's awful. It's got all the worst qualities of UTF-8 and UTF-32 without any of their advantages 19:39 < Drainedsoul> *before planes other than the BMP 19:40 < Drainedsoul> Unicode used to be a string 16-bit character set until it was extended 19:40 < Drainedsoul> *strict 19:50 <+sadimusi> alright, sending a g clef with an actual dataoutputstream really results in d8 34 dd 1e 19:51 < Drainedsoul> which is UTF-16BE 19:51 <+sadimusi> so minecraft is not using ucs-2 at all 19:51 < Drainedsoul> UCS-2BE wouldn't be able to represent that code point and would have to either throw, drop the code point, or replace it with something 19:51 <+sadimusi> I'll try sending it to an actual minecraft server 19:52 < Drainedsoul> try sending it in the middle of a string. 19:52 < Drainedsoul> that result of that will be a better diagnosis 20:00 <+sadimusi> the client doesn't show it, in the console it's replaced by ? but the server shows http://d.pr/i/9wAM 20:01 <+sadimusi> if I copy this thing from the server console and paste it here it turns into the g clef 20:01 <+sadimusi> (I sent -𝄞-) 20:02 <+sadimusi> on the client side it might be gson messing with it 20:02 <+sadimusi> and on the server side the gui just shows it wrong, in the console it's displayed correctly 20:06 < tehme> what is gson? 20:07 <+ammar2> google's json library for java 20:07 <+ammar2> its kinda like an ORM for json if you use it "properly" 20:07 < Drainedsoul> so yeah the server can parse UTF-16 too 20:07 < Drainedsoul> if the server was parsing as UCS-2, you'd see two weird characters, not just one 20:08 < Drainedsoul> when you sent that packet, was the string length set to 4 or 3? 20:09 <+sadimusi> 4 20:09 < Drainedsoul> well that's good. Should I update the wiki? 20:10 <+sadimusi> yes, that would be nice 20:10 < Drainedsoul> turns out the strings are UTF-16BE strings prefixed with a short which gives their length in code units 20:10 < Drainedsoul> which is handy, if it gave their length in code points that'd be a nightmare of conditional parsing 20:10 < Drainedsoul> the likes of which you have never seen before -_- 20:11 < tehme> i tried to send string without resersing byteorder, the same shit 20:11 < tehme> looks like there is a bug somewhere 20:11 <+sadimusi> tehme: run it through a proxy 20:36 < tehme> well, bytes sent to server are: 00 06 54 00 65 00 73 00 74 00 65 00 72 00 20:36 < tehme> this is "Tester" 20:37 < tehme> am i missing \0 ? 20:37 <+sadimusi> looks like the wrong endianness to me 20:37 < Drainedsoul> that looks LE to me 20:37 < Drainedsoul> 54 00 <== that's little endian 20:37 < Drainedsoul> 00 06 <== that's big endian 20:38 < tehme> oh shi.. 20:38 < tehme> i fucked up my invertor 20:38 < Drainedsoul> you should just tell your encoder to give you UTF-16BE and forget about it 20:40 < tehme> icant:) 20:40 < Drainedsoul> why not 20:41 < tehme> how should i? 20:42 < tehme> can i set wstring to this? 20:42 < Drainedsoul> that would really depend on the encoder you're using 20:42 < tehme> std::reverse:D 20:42 < Drainedsoul> what happens when you compile on a big endian machine 20:43 < tehme> this is temporary 20:43 < tehme> quick and dirty hack 20:43 < tehme> i will use boost endian later 20:43 < Drainedsoul> famous last words 20:43 < tehme> heh 20:44 < tehme> fixed 20:44 < tehme> i reverted that twice 20:45 < tehme> now it's ok 20:45 <+sadimusi> o.O 20:45 < tehme> wut 20:49 < tehme> how should i specialize array version of serialization function? 20:49 < tehme> now i just add one int argument, like in post-incrementation 20:50 < Drainedsoul> what? 20:50 < Drainedsoul> you can specialize templates on arrays with template class { }; 20:53 < Drainedsoul> and then you can do 20:53 < Drainedsoul> int arr[15]; 20:53 < Drainedsoul> my_class obj; 21:16 < Drainedsoul> so where'd the myth of MC using UCS-2 come from? 21:17 < Drainedsoul> http://wiki.vg/Data_Types this has been updated 21:19 < dx> wait what 21:20 < dx> so chars outside the BMP are supported? 21:21 < Drainedsoul> all of them apparently, all the way up to 0x10FFFF 21:21 < Drainedsoul> sadimusi sent G clef earlier 21:21 < dx> so there's no reason at all to not support utf-8? :D 21:21 < dx> because parsing utf-16 by reading pairs of bytes is just wrong 21:23 < Drainedsoul> plus UTF-16 is incredibly space/bandwidth inefficient 21:24 < dx> (as a UTF-16 code unit is 2 bytes, multiply the length by two to get the length in bytes). 21:24 < dx> ^quoting wiki, sorry 21:25 < Drainedsoul> what's wrong with that? @_@ 21:25 < dx> not sure if that part is correct 21:25 < Drainedsoul> what's wrong with it? 21:25 < dx> stuff outside the BMP isn't 2 bytes 21:25 < Drainedsoul> no, but it's two two byte code units, which make one code point 21:25 < dx> oooh code unit 21:25 < dx> nevermind then 21:26 < dx> this stuff is confusing 21:27 < Drainedsoul> yeah I spent a Christmas break writing an implementation in C++ to understand it 21:28 < dx> you should clarify that in the wiki a bit more then 21:28 < Drainedsoul> sure 21:28 < dx> and of course mention that we used to think it's UCS-2 but it's not 21:29 < dx> Drainedsoul: the 'code unit' wiki link redirects to "character encoding" :/ 21:46 < Drainedsoul> http://wiki.vg/Data_Types 21:51 <+sadimusi> dx: even though it's utf-16, the client can't display most of it 21:52 <+sadimusi> dx: and gson even stripped the g clef out of a chat message and replaced it with a question mark 21:53 < dx> sadimusi: not surprising, but the parsing is what's relevant here 21:53 < dx> Drainedsoul: so verbose! perfect! 21:54 <+sadimusi> yes, of cours 21:54 <+sadimusi> *course 21:54 <+sadimusi> it probably couldn't display every UCS-2 code point either 21:55 < dx> i don't remember if i tried ಠ_ಠ 21:55 < Drainedsoul> well earlier when tehme had his endianness wrong, it looked like the client was displaying CJK? 21:55 < dx> but that character in particular needs a decent setup of font fallbacks to render properly 21:56 < dx> Drainedsoul: those are supported because the client translations include them 21:56 < Drainedsoul> ah okay, I didn't realize there were client translations for asian languages 21:57 < dx> there's stuff like arabic too, which i think one of the mojangstas posted a screenshot about improving the rendering (which is pretty complex) 21:57 < Drainedsoul> well a lot of arabic languages are right-to-left 21:58 < dx> yeah, but they also join the characters in unusual ways 21:59 <+sadimusi> it looks like the whole BMP is supported 21:59 < Drainedsoul> if you want weird joining behaviour, you should take a look at CJK unification 21:59 < Drainedsoul> jesus 22:01 <+sadimusi> I can even enter a g clef in the chat box and it gets sent correctly 22:01 < Drainedsoul> nice 22:01 <+sadimusi> the client just doesn't display it at all 22:02 < dx> sadimusi: are you planning to spam the bugtracker with this kind of issues? :D 22:02 <+sadimusi> :D no 22:02 <+sadimusi> somebody should write a bot to file a bug for every missing code point :) 22:03 < dx> actually, unit testing for rendering of every unicode code point would be awesome. (basically what you said, except the part where it submits bugs) 22:04 < Drainedsoul> ~1.05 million of them 22:04 < Drainedsoul> it's amazing how big the planes of Unicode that are outside the BMP are : | 22:04 < dx> fun 22:05 < dx> (of course i don't think anyone would care enough to write a test case like the one i suggested) 22:07 < Drainedsoul> well, a lot of the code points are unassigned 22:08 <+sadimusi> I should file a bug report for my terminal's font (monaco), emoji symbols don't have the same width as the other chars: http://d.pr/i/sO2t 22:08 < Drainedsoul> what happened to the quote after that last emoji? 22:08 < dav1d> Drainedsoul: covered by the smiley 22:08 <+sadimusi> exactly 22:09 < Drainedsoul> wow 22:09 < Drainedsoul> so it's not monospace but it thinks it is 22:09 < Drainedsoul> that's even worse than it just not being monospace haha 22:19 < dx> sadimusi: err what, fonts normally don't have colors 22:19 < dx> fonts are just.. shapes 22:19 <+sadimusi> maybe the system's font rendering adds the emojis somehow 22:20 < dav1d> lol apple 22:20 < dx> and either way monaco is a font developed by apple, not something you can report bugs for 22:22 <+sadimusi> wait, that's not monaco 22:22 <+sadimusi> it's menlo 22:22 <+sadimusi> which is also from apple :/ 22:22 < dx> right, monaco has a glyph for "a" that looks like "o" 22:23 < dx> i've used monaco for a long time but my eyesight got worse and now it's hard to tell the difference :( 22:23 < dx> using dejavu sans mono right now 22:24 <+sadimusi> "Menlo is based upon […] the public domain font Deja Vu" 22:24 < dx> oh wow. 22:30 * clonejo got evangelised to Terminus. 22:35 < dx> tried bitmap fonts a few times, but it's annoying how the glyphs change a lot at each size they provide 22:35 < dav1d> clonejo: ! 22:48 <+clonejo> dav1d: ? 22:48 < dav1d> clonejo: got my query? 22:48 <+clonejo> yup 22:48 < dav1d> wanna answer it?^^ 22:49 < Not-003> [node-minecraft-protocol] superjoe30 pushed 3 commits to master [+0/-0/±3] http://git.io/YcltoQ 22:49 < Not-003> [node-minecraft-protocol] dividuum 170566d - New way to handle conditional fields in packets Some packets have conditional fields. The previous way to handle those was to provide a single condition for each packet type which determined if additional fields are appended to the packet. Unfortunately this is not enough for some packets: They have complex conditions that cannot be expressed this way. This diff changes the way conditional fields a 22:49 < Not-003> [node-minecraft-protocol] dividuum de220e1 - set unavailable fields to null 22:50 < Not-003> [node-minecraft-protocol] superjoe30 3002927 - Merge pull request #62 from dividuum/master New way to handle conditional fields in packets 23:15 < tehme> oh fuck 23:15 < tehme> c++ is almighty 23:50 < Drainedsoul> yes it is 23:50 < Drainedsoul> but why specifically --- Day changed mar. août 27 2013 00:36 < Not-003> [node-minecraft-protocol] superjoe30 pushed 1 commit to master [+0/-0/±2] http://git.io/ZwvFcQ 00:36 < Not-003> [node-minecraft-protocol] superjoe30 8b7abe2 - Release 0.11.5 00:36 < Not-003> [node-minecraft-protocol] superjoe30 tagged 8b7abe2 as 0.11.5 http://git.io/MZmZSg 00:38 < ellisvlad> How is everyone doing this evening? 01:16 < Drainedsoul> pretty good, discovered that MC actually uses UTF-16, so that's good 01:33 < tehme> is std::wstring utf-16? 02:06 < Drainedsoul> I'm pretty sure that's platform dependent 02:06 < Drainedsoul> I'm also pretty sure that C++ std::string specializations are encoding unaware 02:07 < Drainedsoul> yeah std::wstring just uses wchar_t, so its characters are whatever width wchar_t is on your platform 02:08 < Drainedsoul> if you're concerned about encodings, you're going to need to use something beyond std::string, std::string is just a fancy std::vector 02:10 < tehme> what do you recommend? 02:12 < Drainedsoul> ICU? 02:12 < Drainedsoul> I wrote my own so I can't suggest one from first-hand experience 02:45 < Not-001> [fCraft] fragmer * r2175 6 files : Improved ConfigGUI startup time by ~20% 03:14 < Not-002> [fCraft] fragmer * r2176 2 files : Sped up PlayerDB loading and saving by ~9% 05:40 < Not-002> [fCraft] fragmer * r2177 2 files : Further improvements to server startup time (~4% faster) 08:08 < Not-002> [fCraft] fragmer * r2178 2 files : Fixed a serialization bug in LastFailedLoginIP 09:34 < Not-002> [fCraft] fragmer * r2179 2 files : /hide and /unhide now indicate whether it was silent or not. 09:55 < Not-002> [fCraft] fragmer * r2180 3 files : 0.642 final -- updated readme/changelog/updater. 09:56 < Not-002> [fCraft] fragmer * r2181 2 files : 0.642 tag 10:54 < Not-002> [fCraft] fragmer * r2182 2 files : Branching off 0.90x 13:28 < tehme> sup 13:55 < tehme> hey Drainedsoul 13:56 < tehme> how do you serialize messages? 17:06 < Drainedsoul> tehme: what do you mean "messages"? 17:13 < tehme> well, packets 17:14 < Drainedsoul> in what way? 17:14 < Drainedsoul> do you mean making them into bytes, or actually sending them over the wire? 17:19 < jast> probably what serializing usually means 17:21 < Drainedsoul> it's done here https://github.com/RobertLeahy/MCPP/blob/master/include/packet.hpp / https://github.com/RobertLeahy/MCPP/blob/master/src/packet.cpp / https://github.com/RobertLeahy/MCPP/blob/master/src/packet_factory.cpp 17:21 < Drainedsoul> I just thought I already linked this code, so I wanted to be sure @_@ 17:47 < tehme> hurray 17:47 < tehme> i made functions for serialization and deserialization 17:47 < tehme> they can even throw exceptions! 17:52 < Drainedsoul> they couldn't throw before? @_@ 18:03 < tehme> they did not exist before 18:44 < tehme> is 0x2C new in 1.6.2? 18:45 < tehme> http://wiki.vg/Protocol#0x2C 18:46 < tehme> i want to fix thispacket's description a bit 18:46 < tehme> is ListElement constant size? 18:48 < Yoshi2> hm, the description for 0x2C is slightly messy indeed 18:50 < Yoshi2> tehme: if I had to guess, the size of ListElement in bytes is ListLength multiplied by (8 + 8 + 8 + 1) 18:51 < tehme> what if i introduce few more types? 18:51 < Yoshi2> that is, if each element in ListElement contains two longs, one double and one byte 18:51 < Yoshi2> how do you want to introduce more types? 18:53 < tehme> describe in wiki 20:30 < tehme> is there any other way to get message type by code than big switch? 20:44 < Drainedsoul> I don't see how there would be 20:44 < Drainedsoul> I mean you could use a lookup table but that's probably what the switch statement compiles to anyway 20:45 < Yoshi2> I do think that some sort of lookup table is prettier than a big block of switch statements 20:47 < Drainedsoul> I don't see how 20:51 < Yoshi2> it's either have a big bunch of code for parsing the packets here, or somewhere else 20:51 < Yoshi2> and I prefer having it somewhere else, away from the main code 20:52 < Drainedsoul> or you could just have a switch statement that invokes the code that parses each packet 20:53 < Drainedsoul> or, as I do, the switch statement is in a factory which returns an object which can parse the packet 21:20 < tehme> Handshake(74, L"Tester", L"localhost", 25565).serialize(bbuf); 21:20 < tehme> fock yeah look what i can:D 21:28 < tehme> what reason does client send on disconnect? 21:30 < Drainedsoul> what do you mean? 21:30 < Drainedsoul> "Quitting"? 21:32 < tehme> http://wiki.vg/Protocol#0xFF 21:33 < Thinkofdeath> tehme: I think it sends "disconnect.quitting" 21:34 < Drainedsoul> I'm pretty sure the literal string it sends is "Quitting" 21:34 < Drainedsoul> but that should be immaterial, your server shouldn't depend on that, it should only log it 21:37 < tehme> it gives me protocol error and kicks me if there is anything else 21:37 < tehme> disconnect.quitting was right answer 21:40 < tehme> this is strange 21:41 < tehme> i just concatenate 0x02, 0xCD and 0xFF into buffer and send as one packet 21:41 < tehme> sometimes it is ok, sometimes protocol error 21:41 < tehme> but there was always protocol error before "disconnect.quitting" 21:42 < Drainedsoul> here's your answer 21:42 < Drainedsoul> http://i.imgur.com/RV2ZLaj.png 21:42 < Drainedsoul> what exactly the client sends when it disconnects 21:43 < tehme> what the 21:43 < tehme> fuck 21:44 < Drainedsoul> ? 21:44 < tehme> is it some proxy? 21:44 < Drainedsoul> no, my server has that built in as a debugging utility 21:44 < tehme> good 21:45 < tehme> well, let's try with some delay 21:47 < tehme> yes 21:47 < tehme> it is "Quitting" 21:48 < tehme> but "disconnect.quitting" works too 21:49 < tehme> even "fuck" works, so server reaaly does not care 21:50 < tehme> really 21:50 < Drainedsoul> yeah the server shouldn't care, the reason isn't mandated to be anything in particular by the protocol 22:52 < tehme> yo 22:52 < tehme> fuk intornet --- Day changed mer. août 28 2013 00:53 < tehme> yoyoyo 00:53 < tehme> anyone here? 01:07 < tehme> http://wiki.vg/User_talk:Tehme 01:08 < tehme> i want to replace trash type in 0x2C with this 01:10 < tehme> should i? 01:10 <+sadimusi> no 01:10 < tehme> why? 01:11 <+sadimusi> because of the field types 01:11 < tehme> so they are not static 01:11 < SinZ> we don't call them int64, they are longs 01:11 < Drainedsoul> 0x2C already has problems 01:11 < Drainedsoul> it's not two longs it's 1 128-bit integer 01:12 < SinZ> its sent as two longs, as Java doesn't support a 128bit number 01:12 <+sadimusi> but Drainedsoul's still right 01:13 <+sadimusi> we shouldn't care too much about how minecraft does it internally 01:31 < tehme> anyway type name and table below is better than that shitty description 01:35 < tehme> http://wiki.vg/User_talk:Tehme like this 01:35 <+sadimusi> just make the uuid one field 01:36 < tehme> what type to use? 01:36 <+sadimusi> 128bit int 01:36 < tehme> heh 01:37 < tehme> ok 01:37 <+sadimusi> adding another type to the data type section would only be confusing 01:37 <+sadimusi> or wouldn't it? 01:37 < tehme> i will not 01:37 < tehme> i will place this table under message table 01:37 <+sadimusi> I meant the 128bit int 01:38 < tehme> oh 01:38 <+sadimusi> it's probably best to call it that and still add it to the data types page 01:38 < tehme> well, i'll ask tomorrow before fixing 01:38 <+sadimusi> there you could also add the info that the vanilla implementation uses two longs 01:38 < tehme> good night :) 01:38 <+sadimusi> gn8 01:44 < Drainedsoul> should I add that to data types? 01:44 <+sadimusi> sure 01:44 < Drainedsoul> okay will do 01:48 <+sadimusi> thanks 01:57 < Drainedsoul> since we're doing the whole weird Java naming scheme for integer types, what should I call it? 03:24 <+clonejo> maybe something refering to long, eg. long2 or longX2 06:29 < Drainedsoul> or we could use a name that has some meaning independent of Java 06:38 < dx> just "128 bit int", i'd say 06:39 < dx> also i think that's (almost) exactly what sadimusi was suggesting (but i added a space) 06:48 < TkTech> Hnng, the feeling of getting that 3 second SQLite query down to 30ms. 06:50 < TkTech> Drainedsoul / dx: For what it's worth, +1 on more explicit names for types. 06:50 < TkTech> Still a fan of [u]int[8|16|32|64]_t. 07:14 < Drainedsoul> I updated the data types page with the 128 bit integer. Need to update 0x2C too (that whole packet's documentation is just a trainwreck) 09:56 < luntik13> hi 09:57 < luntik13> any non-cube-based minecraft clones out there? 09:57 < dx> welcome back 09:58 < Calinou> minceraft 09:58 < luntik13> something with gradient terrain (vertex based / interpolated ) ? 09:58 < dx> there was one but i forgot the name 09:59 < luntik13> please try to remember 10:00 < dx> oh found it http://www.youtube.com/watch?v=w9-lJzFZ72I 10:01 < dx> last time i checked it was vaporware but their website has a paypal link so i dunno 10:01 < luntik13> thx 10:02 < dx> also http://www.kickstarter.com/projects/7daystodie/7-days-to-die-zombie-survival-game 10:03 < dx> but that one is more like dayz with voxels 10:04 < luntik13> im asking for something with gradient terrain AND that allows you to dig and build stuff 10:05 < dx> well this one does some smoothing of the border of the blocks, dunno what the right 3d term for that is, but not all stuff looks like a block 10:05 < luntik13> but its still block-based 10:05 < dx> kinda 10:06 < dx> some stuff doesn't look like a voxel at all 10:06 < luntik13> it stores world as blocks, doesn't it 10:06 < dx> don't ask me, i didn't reverse engineer a game that was barely released 10 days ago for kickstarter backers 10:07 < luntik13> im asking about clones that doesn't represent world in blocks at all 10:07 <+AndrewPH> luntik13: something something uberdark or underdark or something 10:07 <+AndrewPH> oh ya that 10:07 < dx> AndrewPH: heh, i linked that one 10:07 < dx> that name is übersilly 10:07 <+AndrewPH> dx: yeah i don't think it's vaporware, they've released a lot of updates to prepurchasersI think 10:07 < dx> AndrewPH: neat. 12:42 < tehme> yo sup 12:53 < Not-002> [FemtoCraft] fragmer * r108 4 files : Started on CPE support; added CustomBlocks to Blocks enum. 12:53 < Not-002> [FemtoCraft] fragmer * r109 3 files : Tweaked LvlMapConverter to be able to save/load custom block types. FemtoCraft now saves 0xFE/0xCF as VisitPermission/BuildPermission fields in LVL files, to serve as magic numbers. 12:59 < tehme> fuck 12:59 < tehme> now i see 0x2C needs 2 new structures 12:59 < Not-001> [FemtoCraft] fragmer * r110 10 files : Implemented Classic Protocol Extension handshake, and CustomBlocks extension. 13:06 < Not-002> [FemtoCraft] fragmer * r111 3 files : Added network tracing and more documentation of CPE stuff 13:06 < Not-002> [FemtoCraft] fragmer * r112 3 files : Disabled tracing code (for now), and fixed fallback for non-custom-block-enabled clients. 13:38 < tehme> yo people 13:38 < tehme> http://wiki.vg/User_talk:Tehme 13:39 < tehme> this is my version of 0x2C 13:39 < tehme> is it ok enough to replace original? 14:24 <+sadimusi> tehme: why the camel case? 14:24 <+sadimusi> and you should use the new 128-bit int 14:31 < tehme> sadimusi: why not camel case? 14:31 <+sadimusi> just make it two words 14:31 <+sadimusi> the wiki is read by humans, not machines 14:32 <+sadimusi> (at least most of the time) 14:32 < tehme> heh 14:35 < tehme> http://wiki.vg/User_talk:Tehme like this? 14:35 <+sadimusi> looks good 14:35 <+sadimusi> maybe change ListLength to List Length 14:35 <+sadimusi> and uuid to UUID 14:36 <+sadimusi> the fields should all start with a capital letter in the property data structure 14:36 < tehme> don't you want to write some naming guidelines? 14:37 <+sadimusi> :D 14:37 <+sadimusi> the other packets are pretty consistent 14:37 <+sadimusi> appart from the occasional EID or EntityID 14:37 < iBotPeaches> 0x2c i think is the only weird one 14:38 <+sadimusi> it's also the only one with string16 14:39 < tehme> nope 14:39 < tehme> i saw few more 14:39 <+sadimusi> I just searched on the page and found only one match 14:42 < tehme> http://wiki.vg/Protocol#Entity_Properties_.280x2C.29 14:42 < tehme> done 14:45 <+sadimusi> looks very good, except for the inconsistent spacing above the individual structures 14:47 < tehme> fix it, i dont know how 14:47 < mitch|mobile> Tehme: are you gonna put hooks and stuff into yer library? 14:47 < tehme> mitch|mobile: definitely not now 14:48 < mitch|mobile> mmk 14:49 < tehme> sadimusi: and really, think about writing guidelines, this will make our lives easier 14:49 < mitch|mobile> Tehme: also, I'll create a makefile for you 14:50 < tehme> mitch|mobile: structure is different now, everything is in a single file 14:50 < mitch|mobile> o-O ok 14:50 < mitch|mobile> How many lines? :P 14:51 < mitch|mobile> Also do you have headers for it generated? ._. 14:52 < tehme> it is in header:D 14:52 < mitch|mobile> Ah :D 14:52 < tehme> mb i will split later 14:53 < mitch|mobile> So I don't even need to create a makefile 14:55 < tehme> yep 14:56 < tehme> i will upload scripts for parsing and code generation to github later, if you need them 14:56 < mitch|mobile> Nah 14:57 < tehme> or i'll split trivial and special packets to different files 14:57 < tehme> yeah! 14:57 < tehme> imma fukken genius! 14:57 < tehme> crap 14:57 < mitch|mobile> What? Lol 14:58 < tehme> russians say: good idea comes late 14:58 < tehme> i had this late idea 14:59 < mitch|mobile> What is the idea? 14:59 < tehme> to write special packets into other file 15:00 < tehme> so i may update trivial ones without linefucking 15:00 < mitch|mobile> Oh. Thought you meant something else 15:00 < tehme> see you later:) 15:00 < mitch|mobile> Cya 16:05 < tehme> ping 16:09 < tehme> yo i have one more idea to change wiki 16:10 < tehme> what if mark packets as trivial and special? 16:10 <+sadimusi> nope 16:10 < tehme> why? 16:10 <+sadimusi> there's absolutely no benefit for readers 16:10 <+sadimusi> and don't try to make the wiki fit your parser 16:11 < tehme> i already did:) 16:11 <+sadimusi> I don't have anything against consistency, so I didn't have a problem with your previous changes 16:11 < tehme> i think there is "yes benefit" 16:12 <+sadimusi> and where would you draw the line? 16:12 < tehme> readers can do a quick-look and know if there are difficulties to implement this packet 16:13 <+sadimusi> you can do that right now with just a quick look at the fields table 16:14 < Drainedsoul> and whether there are "difficulties" would depend strongly on your chosen implementation 16:15 < tehme> well ok 16:24 < tehme> i think we need one more fix 16:24 < tehme> rename property data to modifier info 16:24 <+sadimusi> sounds good 16:26 < tehme> da refactorin'! 16:43 < tehme> yo what about standardizing entity id/eid? 17:14 <+sadimusi> tehme: Entity ID looks best to me 17:22 < Not-002> [BraLa] Dav1dde pushed 1 commit to master [+0/-0/±1] http://git.io/NZajPQ 17:22 < Not-002> [BraLa] Dav1dde 5df913f - fix opengl loader 18:03 < tehme> fixed 18:13 < tehme> yo sadimusi, so what about guidelines? 20:14 < tehme> yoyoyo 20:14 < tehme> who is wikiboss? 20:14 < tehme> some spammers love you, change question about snow white 20:14 < tehme> http://wiki.vg/User:KirbyO37ezqmr 20:19 < tehme> http://wiki.vg/User:GilbertCasillas i will not delete this one:D 21:29 < tehme> heeeey anyone 21:29 < tehme> who is wiki admin or moerator? 21:29 < tehme> ban bots 21:29 < dexter0> TkT_ech is the admin 21:36 < tehme> looks like he is not here 21:39 < dexter0> he uses a bouncer. If you ping him, he'll see it eventually. 21:41 < tehme> TkTech, look at wiki and ban fucking spammers 21:41 < tehme> like this? 21:43 < dexter0> without the cursing preferably. 21:49 < Yoshi2> yep, your request will look a bit more professional without the cursing 22:03 < tehme> too late:) 22:46 <+sadimusi> tehme: aren't there enough examples to make guidelines obsolete? nobody is going to read them anyway --- Day changed jeu. août 29 2013 00:22 < TkTech> I love the "Nuke" button. 00:36 < tehme> wow 03:48 < superjoe> fwhiffahder, hi 03:49 < fwhiffahder> hi 03:49 < superjoe> can I see the stack trace? 03:49 < fwhiffahder> the output, or is it logged somewhere? 03:50 < superjoe> the output 03:50 < fwhiffahder> https://gist.github.com/6373455 03:53 < fwhiffahder> it seems to be placing the block 03:53 < fwhiffahder> but crashes immediately 03:54 < superjoe> fwhiffahder, can you log bot.heldItem.type just before calling placeBlock? 03:55 < fwhiffahder> 287 03:55 < superjoe> hmm that seems like a valid UInt8 value to me 03:57 < superjoe> fwhiffahder, can you open up blocks.js from the trace and, just before the line that crashes, print blockTypeBuffer.length, type, and loc.blockIndex ? 03:59 < fwhiffahder> just 'type' 03:59 < fwhiffahder> and 'loc.blockIndex'? 04:00 < fwhiffahder> or blockTypeBuffer.type 04:00 < superjoe> no I mean print the values of those variables 04:00 < fwhiffahder> yes 04:00 < fwhiffahder> k 04:02 < superjoe> oh, also try putting Math.floor() around type as well as around loc.blockIndex 04:02 < fwhiffahder> 4096 04:02 < fwhiffahder> 2 04:02 < fwhiffahder> undefined 04:02 < fwhiffahder> 4096 04:02 < fwhiffahder> 287 04:02 < superjoe> what's undefined? 04:03 < fwhiffahder> type, i guess 04:03 < superjoe> it's difficult to debug if you're only guessing... 04:04 < fwhiffahder> 2 'type' 04:04 < fwhiffahder> undefined 'loc.BlockIndex' 04:04 < fwhiffahder> 4096 'blockTypeBuffer.length' 04:04 < fwhiffahder> 287 'type' 04:04 < fwhiffahder> undefined 'loc.BlockIndex' 04:04 < superjoe> ok that's a problem. 04:04 < superjoe> oh but it shouldn't be BlockIndex - it's case sensitive 04:05 < fwhiffahder> ah 04:05 < fwhiffahder> oops 04:05 < fwhiffahder> 096 'blockTypeBuffer.length' 04:05 < fwhiffahder> 3 'type' 04:05 < fwhiffahder> 3800 'loc.blockIndex' 04:05 < fwhiffahder> 4096 'blockTypeBuffer.length' 04:05 < fwhiffahder> 3 'type' 04:05 < fwhiffahder> 497 'loc.blockIndex' 04:05 < fwhiffahder> 4096 'blockTypeBuffer.length' 04:05 < fwhiffahder> 2 'type' 04:05 < fwhiffahder> 3802 'loc.blockIndex' 04:05 < fwhiffahder> 4096 'blockTypeBuffer.length' 04:05 < fwhiffahder> 3 'type' 04:05 < fwhiffahder> 4004 'loc.blockIndex' 04:05 < fwhiffahder> 4096 'blockTypeBuffer.length' 04:05 < fwhiffahder> 287 'type' 04:05 < superjoe> hey don't spam the channel 04:05 < fwhiffahder> 2102 'loc.blockIndex' 04:06 < superjoe> if it's too long use a paste 04:06 < fwhiffahder> ok, sorry 04:06 < superjoe> also I am only interested in the last thing that was printed - the one just before it crashed 04:07 < fwhiffahder> loc.blockIndex? 04:07 < superjoe> I want to know all 3 of the values, but only the last time that the 3 values are printed 04:08 < superjoe> think about it 09:31 < Not-009> [FemtoCraft] fragmer * r113 7 files : Added femto.fcraft.net sources (why not) 09:35 < Not-009> [FemtoCraft] fragmer * r114 3 files : Removed some more leftover debug/tracing code, and updated assembly versions. 09:41 < luntik13> hi 09:43 < luntik13> will naming my game "minecraft2", "minecraft+" or "minecraftHQ" violate any copyrights? 09:43 < shoghicp> https://minecraft.net/brand 09:44 < shoghicp> "Examples of naming: "The Shaft – a Minecraft podcast" (we're cool with that). "Minecraft - the ultimate help app" (we're NOT cool with that)" 09:44 < shoghicp> "sufficiently differentiate the use of the Minecraft Name from any other branding" 09:44 < luntik13> it will be HQ remake of minecraft (no cubes, smooth terrain/textures, better models/physics, etc) 09:44 < shoghicp> but it is not official ;) 09:45 < shoghicp> That name will cause problems 09:45 < luntik13> okay :| 09:45 <+AndrewPH> luntik13: your project must not begin with 'minecraft' 09:46 < luntik13> how about " minecraft"? 09:46 <+AndrewPH> that sounds perfect, go for it. 09:47 < shoghicp> brands@mojang.com 09:51 < luntik13> is it allowed to officially describe my project as hq remake of minecraft (on website etc)? 09:52 < shoghicp> wait. Is that a modification of Minecraft or a project done from scratch 09:53 < luntik13> scratch - no java shit, pure C + opengl, protocol will be different, too 09:54 <+AndrewPH> why not php? 09:54 < luntik13> lol 09:55 < shoghicp> luntik13: I like to do crazy things ith PHP 09:55 < luntik13> i know 09:55 < shoghicp> different protocol... 09:56 < shoghicp> then, it is not minecraft anymore. That is a basic thing of minecraft 09:56 < luntik13> but php isn't optimized well for graphic-intensive games 09:56 <+AndrewPH> the hellish protocol and cube-landscape are what define minecraft 09:56 < shoghicp> yeah :( 09:57 < luntik13> shoghicp: well, the general theme and gameplay will resemble those of minecraft 09:58 < luntik13> and maybe i will the sun squared 09:58 < luntik13> will it be enough? 09:59 < Yoshi2> I still don't think naming it minecraft would be a good idea 10:00 < shoghicp> But don't call it anything that triggers " {1,}minecraft.*" 10:00 < shoghicp> (case-insensitive) 10:00 < luntik13> i will choose safe name 10:00 < Yoshi2> but any other variation of craft is just fine, look at all the other minecraft clones out there which end with -craft 10:01 < Yoshi2> any variation of mine should be fair game too 10:01 < luntik13> however i intend to position it as hq remake of minecraft 10:01 < luntik13> is it allowed? 10:02 < shoghicp> mine 10:02 < Yoshi2> A Minecraft-inspired HQ remake 10:02 < shoghicp> HQ-remake inspired on Minecraft 10:03 < luntik13> that's basically the same as "remake of minecraft", isn't it 10:04 < Calinou> yes, you are allowed to make a minecraft-style game 10:04 < Calinou> this isn't relevant to this channel, though 10:05 < jast> that's not a name btw, it's a description 10:05 < luntik13> and allowed to call it a remake of minecraft? 10:05 < shoghicp> luntik13: If you don't use Minecraft's protocol, you lose points 10:06 <+AndrewPH> perhaps you should just email mojang and ask :) 10:06 < shoghicp> I posted the email before ;) 10:06 < luntik13> minecraft protocol has MAJOR problems 10:07 < luntik13> the most important one - it deals with cubes, so i can't use it for my game 10:08 <+AndrewPH> so wait, you're saying it's not really anything like minecraft except it shares a genre? 10:09 < shoghicp> sandbox voxel game? 10:10 < luntik13> it will be similar in gameplay (dig/build/craft/...) but everything will be vertex-based+interpolated, there will be no cubes 10:14 < luntik13> world will be stored with vertexes and interpolation hints 11:44 < piracetam> lol, are ALL possible *craft names already taken? 11:49 < jast> surecraft 11:52 <+Prf_Jakob> notsurecraft 11:53 < piracetam> http://www.surecraft.com/ 11:53 < piracetam> :( 11:53 < Calinou> *craft is stupid 11:53 < piracetam> maybe 11:53 < Calinou> have some imagination, thank you 11:54 < piracetam> ok sure 11:54 < SinZ> minestuff 11:54 < piracetam> http://minestuff.com.au/ 11:54 < piracetam> :( 11:55 < shoghicp> It was hard 8 months ago xD 11:55 < shoghicp> I choose PocketMine 11:56 < shoghicp> MorbidCraft 11:56 < shoghicp> xD xD 11:57 < piracetam> lol, even "Uncubus" gives a shitload of results 11:57 < piracetam> will have to use random md5 hash probably 11:58 < shoghicp> piracetam: what is your project about? 11:58 < piracetam> shoghicp: i'm luntik13 11:58 < shoghicp> oh 11:59 < piracetam> so how hard will it be to fight all these people - http://www.google.ru/#newwindow=1&q=uncubus after project is up and ready? 12:01 < shoghicp> I took over a generic name 12:01 < shoghicp> but, against a Wikipedia page... 12:03 < shoghicp> Pirecetam's Craft 12:03 < piracetam> piracecraft lol 12:13 < Calinou> lol 12:15 < jast> there are probably more unused names for *crap, you could try a few of those 12:26 < piracetam> you tried those? 12:44 < Not-009> [FemtoCraft] fragmer * r115 2 files : Spiderweb and Fire blocks no longer cast shadows (for purposes of plant physics). 14:31 < AnotherOne|2> is it ok for 0xFD to have 41000+ public key length? 14:34 <+sadimusi> as long as bc can handle it it should be ok 14:34 <+sadimusi> so probably yes 14:36 < jast> fwiw it takes a _very_ long time to generate a 16384-bit RSA key 14:39 <+AndrewPH> jast: only about 2 minutes and 20 seconds 14:39 <+AndrewPH> (ideal circumstances) 14:40 < jast> ideal circumstances are not exactly the norm :) 14:40 <+AndrewPH> very true :p 15:05 < piracetam> what is the purpose of encrypting minecraft traffic? 15:05 < piracetam> to place additional overhead on clients and (especially) servers? 15:05 < dav1d> one cannot steal sessions 15:06 < piracetam> why not encrypt only session part then 15:06 < piracetam> um, or what did you mean by session 15:06 < piracetam> i thought about minecraft.net auth 15:06 < piracetam> you mean a mitm attack? 15:07 < piracetam> any benchmarks on minecraft's ssl overhead, btw? 15:08 < dav1d> in older versions you could hijack sessions easily with either a proxy or only the session key 15:08 < dav1d> proxy beeing easier 15:08 < dav1d> hey admin wanna join my server 15:08 < dav1d> when he connects the proxy manipulates the data so you auth on the admins server 15:09 < piracetam> right 15:09 < piracetam> what about overhead? how much difference does encryption make? 15:09 < dav1d> no idea 15:10 < dav1d> md_5 should know more 15:45 <+sadimusi> piracetam: that heavily depends on the implementation and hardware used 15:46 < piracetam> sadimusi: a common desktop PC 15:46 <+sadimusi> that doesn't really narrow it down 15:48 <+sadimusi> if you can use aes-ni there is very little overhead 15:48 <+sadimusi> an entirely java based implementation on the other hand would slow things down significantly 15:56 < piracetam> java always slows things down, doesn't it 16:03 < Yoshi2> a good hardware implementation of AES will always be faster than a software implementation 16:29 < AnotherOne|2> yo i have a question 16:29 < AnotherOne|2> http://wiki.vg/Protocol#Map_Chunk_Bulk_.280x38.29 16:30 < AnotherOne|2> does metadata follow every block or is it an array? 16:30 <+sadimusi> it's an array 16:34 < AnotherOne|2> good 16:35 < tehme> fixing special packets is fun 17:17 < tehme> fucking metadata 18:20 < tehme> even with autogeneration implementing protocol is fucking ton of work 18:21 <+sadimusi> then you don't use a cool enough protocol markup :P 18:22 < tehme> yep 18:22 <+sadimusi> https://gist.github.com/sadimusi/6025899 < this took me maybe half an hour to write 18:23 <+sadimusi> (the parser and the small improvements took way more time of course) 18:23 < Yoshi2> I once tried using burger for auto-updating the protocol parser on my old client, but there were too many special cases for it to work effectively 18:24 < tehme> heh 18:24 <+sadimusi> there are so few changes that an automated system doesn't really make sense imho 18:24 < tehme> i only need to implement special structures and classes 18:24 < tehme> but anyway it is boring 18:24 < shoghicp> The other case is that everything changes in an unexpected way ;) 18:25 <+sadimusi> https://twitter.com/_grum/status/373028865695682560 < can't wait to rewrite burger -.- 18:25 < shoghicp> xD 18:25 < shoghicp> I just implemented the -c argument into PocketBurger 18:26 < tehme> omfg 18:26 < tehme> he is working! 18:26 < Yoshi2> oh, maybe utf-8 support is finally coming :D 18:26 < shoghicp> we have utf-8 on MCPE ;) 18:26 < tehme> i thought they only eaten cakes and did nothing in mojang 18:26 < shoghicp> instead of utf-16 18:28 < Drainedsoul> why would anyone use UTF-16 I just don't understand the logic... 18:28 <+sadimusi> because it's the default 18:29 <+sadimusi> but you could ask why java uses it in the first place 18:29 < Drainedsoul> is that a rhetorical question or do you actually want to know why Java uses it 18:29 < Drainedsoul> ? 18:29 < Drainedsoul> ; ) 18:29 < tehme> enlighten us 18:29 < Yoshi2> I genuinely want to know why Java uses it 18:30 < Drainedsoul> when Java was first created Unicode had not been extended past the BMP yet, so it was a 16-bit -- 65536 code point -- character set 18:30 < Drainedsoul> so representing it as a single 16-bit code unit made sense 18:30 < Drainedsoul> when it was extended to the other 15 planes, UTF-16 was conceived as a way to allow it to continue to be represented as 16-bits, and Java (and .NET) continued using 16-bits -- and therefore UTF-16 18:31 < Grum> utf16 is most definately not 16bits 18:31 < Drainedsoul> 16-bit code units, variable-length encoding 18:31 < Drainedsoul> 1 or 2 code units per code point 18:33 < tehme> sup grum 18:33 < Grum> the sky 18:33 < tehme> do you eat cakes in mojang? 18:33 <+sadimusi> Grum: minecraft seems to be having troubles displaying anything outside of the BMP 18:34 < Grum> sadimusi: java has you mean? 18:34 <+sadimusi> no 18:34 < Grum> tehme: not really, more fika than cake 18:34 < tehme> heh 18:35 <+sadimusi> Grum: I can send a MUSICAL SYMBOL G CLEF (𝄞) in the chat without problems and it even gets displayed in the server console 18:35 <+sadimusi> Grum: but the client doesn't display it 18:36 < Grum> sadimusi: so? :/ 18:36 <+sadimusi> Grum: so I can't send emoji's 😝 18:36 < Grum> OHNOES fuck that 18:36 <+sadimusi> :D 18:36 <+sadimusi> I'm sure there are better uses for it 18:36 < Grum> not likely ever going to care for that 18:37 <+sadimusi> I would have been surprised if you did 18:37 <+sadimusi> I don't really care either, just noticed it recently 18:38 < Grum> tbh nothing really needs it iirc? 18:38 < Drainedsoul> there's some CJK outside the BMP iirc 18:40 < Grum> tbh, make a language with less characters already? seriously? :D 19:11 < dav1d> Drainedsoul: because utf-16 supports most, and for everything else, which doesn't work "we don't care" 19:11 < dav1d> context 19:11 < dav1d> [18:28] why would anyone use UTF-16 I just don't understand the logic... 19:12 < dav1d> (UCS-2 that is) 19:51 < Drainedsoul> well Minecraft uses UTF-16 so UCS-2 isn't really relevant 20:57 < shoghicp> sadimusi: ping 21:02 < dav1d> Drainedsoul: often UTF-16 is misused as UCS-2 21:07 < shoghicp> ^ forget my ping 21:11 < Drainedsoul> which doesn't mean that not handling things outside the BMP, or handling them incorrectly, is excusable 21:21 < tehme> i have a question 21:21 < tehme> http://pastebin.com/wq8eTmTb 21:21 < tehme> did i get object data deserialization right? 21:22 < tehme> m_code and val1..val3 are int32 21:22 < tehme> http://wiki.vg/Object_Data 21:23 < tehme> FUUUUUUUUUUUUUUUUUUUUU 21:23 < tehme> solved 22:25 < tehme> yo people 22:25 < tehme> is chat message translated as a string, e.g. with size before string? 22:46 < nyuszika7h> how could I make a honeypot server which kicks people with a specific message on joining? 22:46 < nyuszika7h> looking for a simple and lightweight solution if possible 22:51 < barneygale> nyuszika7h: old code: https://gist.github.com/barneygale/5051791 22:52 < barneygale> will need to be slightly updated for newer protocol versions 22:59 < nyuszika7h> thanks 23:09 < tehme> oh lol python 23:09 < tehme> does it work fast enough? 23:14 < Morrolan> I dare you to write a server in any language which is not fast enough to immediately kick people when they join. :P 23:14 < mitch|mobile> Make one in Lua :D 23:15 < mitch|mobile> I might make a lua module for that using tehme's MC lib