17:43 < morfin> oh ok 17:44 < gurun> just so you understand the ms's in this. 17:44 < morfin> i will profile if i do that anyway) 17:44 < gurun> imagine 700 players moving around in a circle, forcing chunk-loads every so often (every second or so). 17:44 < morfin> but about map formats 17:44 < gurun> then you get a bit of an issue with locks. 17:44 < gurun> but it's extreme 17:45 < gurun> and reading from disc is not an issue. 17:45 < morfin> what's your strategy? 17:45 < gurun> i already implemented my strategy. Be smart about when and how you load chunks. 17:45 < morfin> you keep chunk some time after last player can't see it? 17:45 < gurun> make sure you load them before they are need if required. 17:45 < morfin> prediction can be harder to implement 17:45 < gurun> i keep ALL chunks in memory after load. I never unload them right now. 17:46 < morfin> :O 17:46 < morfin> that's madness 17:46 < gurun> RAM isn't excatly an issue.. 17:46 < morfin> tell that to vanilla 17:46 < gurun> well, i have 16gb RAM, but the server seldomly pass 200mb.. 17:47 < gurun> it's a difference with 32 bit and 64. 17:47 < morfin> your non-vanilla server right? 17:47 < gurun> it's not the servers fault like that. 17:47 < morfin> original server have bad design 17:47 < morfin> and seems to be leaking maybe 17:48 < morfin> because it consume more and more memory then boom 17:49 < morfin> btw do you know how paged memory works? 17:50 < gurun> yes 17:50 < gurun> it works like this; turn it off 17:50 < morfin> pfff 17:50 < gurun> it you turn it off it will instantly crash your processes when they run out. 17:50 < morfin> OS OS knows what to do better than you and me 17:50 < gurun> instead of slowing down the entiry server trying to page like crazy 17:51 < morfin> lol 17:51 < gurun> so you are one of these "microsoft people thouhgt long and hard and know best" 17:51 < gurun> :-) 17:51 < morfin> no 17:51 < gurun> well, they do .. about regular users. 17:51 < gurun> but for servers .. well .. hm .. 17:52 < gurun> just buy more RAM 17:52 < morfin> ok shitty example i had 17:52 < morfin> closer to cache 17:53 < gurun> well, leaking memory and .. not deliberatly cleaning up .. is two different things really. 17:53 < gurun> if you do a server for enterprise use online .. my bet is that you want it ALL in memory. 17:55 < gurun> it's like .. on Azure.. i find it difficult to find a model where i get lots of cores, and no RAM. If i go to 8/16 cores .. RAM tends to come at 64Gb 17:55 < gurun> which is insane for a server that doesn't need more than a couple of hundreds. 17:56 < gurun> when the server starts, i pre-load and cache aprox 256 chunks in radius around the spawn point. 17:59 < morfin> let's imagine your RAM is "fast" cache but HDD/SSD/tape/floppy drive/device connected using COM port etc is slow memory - why not load pages are really often being used but unload very rarely/not used 17:59 < morfin> only problem i can't predict when loading required if user teleport 18:00 < morfin> of course i can start loading when user type tp command 18:00 < morfin> btw do you say that NBT is best format ever? 18:01 < morfin> of course it's structured but it have issues like storing chunks and entities in same place 18:01 < morfin> so block size have variable length and if block does not fit i should move it to the end of file 18:06 < morfin> gurun, how many players you had on your server? 18:28 < gurun> hmm, lets see. Maxium ever . i think 3. 18:30 < morfin> ) 18:30 < morfin> that server is your own development right? 18:31 < morfin> btw RAM is not a problem but wasting lots of RAM because of leaks/not proper cleaning up is bad 18:34 < gurun> in java a leak can only be defined as something not getting disposed of when the intention it was. 18:34 < gurun> java doesn't leak memory like C does.. 18:34 < gurun> so .. well, maybe it increase memory by design :-) 18:35 < gurun> yes, the server is my own implementation. 18:35 < gurun> .. and an endless list of things to develop.. 18:36 < morfin> lol Java can leak memory 18:36 < morfin> and any other language with GC can 18:37 < gurun> not java, but perhaps a really bad implementation of the JDK can. 18:37 < morfin> no bad code 18:37 < morfin> did you ever think about circular references? 18:38 < gurun> yes. and luckily so did they. GC is a bit more advanced than just simple reference counters like C++ autopointers. 18:39 < morfin> but still 18:39 < morfin> sometimes everything is not so obvious 18:39 < morfin> and GC can't sort that out 18:39 < gurun> object a referencing object b that reference object a will be disposed of like any other object. 18:40 < gurun> sorry, morfin i think you need to do your homework on that. 18:40 < gurun> any object will get disposed if it is cut of fromthe execution path. 18:40 < gurun> ..or whatever you would call it. 18:41 < gurun> i actually had to implement my own reference counting to disable GC .. since it detects that my object pooled referencces are cut off. 18:41 < gurun> and for a pool, that is usually a realy bad thing :-P 18:43 < gurun> so from experience now .. i would say that issues around GC does not come from NOT disposing objects, they come from disposing them a bit too soon. You see that when you profile, because you get a lot of JIT_new calls in the "VM". 18:43 < gurun> regardless of it being java or .NET 18:43 < gurun> i bet you could take the vanilla server, and with very simple means increase the proformance a couple of hundred times by just doing that part right. 18:44 < morfin> how you can dispose too soon? 18:45 < gurun> because you cut them off from the execution path in a way that GC can't detect their usage anymore. All it sees is that "these objects are just held here for no posible use at all". 18:46 < gurun> but you have calls in JVM's to mark objects as not collectible. 18:46 < morfin> btw smart pointers are simple 18:46 < gurun> sorry .. .NET 18:46 < morfin> yes they can't resolve A->B and B->A 18:46 < morfin> but you can use weak_ptr 18:47 < gurun> well, i can also just use unsafe code and create a shitload of mess for the GC to not deal with. I guess that's why they call it "unsafe" :-) 18:47 < morfin> anyway 18:48 < morfin> i am learning C++ 18:48 < gurun> it's like in a SQL server.. you have to mark extensio codes (UDF) that they use external resources (external to SQL server) so that SQL server doesn't trash your stuff. 18:48 < gurun> the downside is that of course you also need to manage these resources. 18:48 < morfin> and trying to implement own stuff 18:48 < gurun> same in .NET .. you IDisposable 18:49 < gurun> so .. file IO is not a problem. Memory management is a very small problem .. locking is a problem, caused by wanting to use the processor at maxium (which require threading). 18:50 < morfin> he-he 18:50 < gurun> in the end, 30% of the time is spent in socket.send anyway. 18:50 < gurun> so new hardware and drivers is the only thing that helps in increasing performance. 18:50 < morfin> IO bound anyway 18:51 < gurun> yes, but not file IO :-) 18:51 < morfin> btw i was tcpdumping my unsafe traffic from offline mode server 18:52 < morfin> and saw shitloads of traffic to update entity states etc 18:52 < morfin> like cow turned it's head - let's send update 18:52 < gurun> yes 18:52 < gurun> it probably does that at a rate of 50 times a second (every 20 ms). 18:52 < morfin> ticks 18:53 < gurun> as opposite to the world clock that is 50ms and 20 times a second. 18:53 < gurun> when a player moves, i get a shitload of updates. 18:53 < morfin> :) 18:53 < gurun> but they get handled within 10ms boundrary anyway .. more or less. 18:53 < morfin> of course i saw only huge stream of data between me and my server but mostly traffic was related to entities(because there was cows/chickens/pigs/sheeps farms) 18:54 < gurun> yeah. as expected i guess. 18:54 < gurun> i don't exactly know all the details, but a lot of the logic in Minecraft seems to be realated to who sees who in relation to mobs. 18:54 < morfin> btw original server CAN be rewritten on Java and be way better 18:54 < morfin> 2 girls did that 18:55 < gurun> hmm.. like i said .. just change some stuff and have it a 100 times faster. 18:55 < morfin> they used async IO(way before Mojang did that) optimized stuff etc 18:56 < gurun> i took my server from dealing with tops 60 players to 350 with a single rewrite .. 18:57 < gurun> i do async IO with a synced context. Becasue in .NET on windows, if you use the async calls it uses IO completion ports. But it is faster to do it sync, one call at a time. 18:57 < morfin> i am not sure i follow proper way but i am trying to implement async network IO 18:57 < gurun> because my network card can't deal with more. 18:57 < gurun> i tried a milion different ways with IO .. and it makes very little difference. BUT, since it is not thread safe anyway, you need to have a mutex and locking in place anyway. 18:58 < morfin> with boost::asio, which use guess what on Windows)) 18:58 < gurun> .. hence, easier to just do it one at a time. 18:58 < gurun> BUT 18:59 < morfin> he-he 18:59 < gurun> with a TCP server (PE is UDP) i would for sure choose a different strategy. 18:59 < gurun> in Java it translates to NIO i think. 18:59 < morfin> TCP is totally different 18:59 < morfin> as i said it's just nonending stream of shit in both directions 18:59 < gurun> well TCP turns threadsafe by the very nature of the connection. 19:00 < morfin> hm 19:00 < gurun> and performance of PE would probably be better if not for UDP. 19:00 < morfin> i did not know PE use UDP ;\ 19:01 < gurun> because it's not fire and forget anyway .. they have transport security implemented on an application level. Typical abuse. 19:02 < morfin> i guess SRCDS as example does not have issues with approximation when losing some packets 19:02 < morfin> *but it send snapshots to end-user 19:03 < morfin> and it uses UDP 19:06 < shoghicp> well, it uses UDP but creates a "reliable" stream 19:06 < gurun> too bad RUDP never ... hit it. 19:06 < shoghicp> so movement packets need to get in order and recovered if lost 19:06 < shoghicp> so it's still bad there 19:07 < shoghicp> I might have to play with RakNet to see if I can do something there 19:07 < morfin> hmm i thought it just approximate between packet A and packet D 19:07 < gurun> but RakNet is not what i would consider "bad". But it can of course be used wrongly, like demanding reliability when not entirel needed, right. 19:07 < morfin> if lost B and C 19:08 < shoghicp> gurun: yep. still, I can segfault any client/server sending some crafted packets 19:08 < gurun> but shoghicp, it has very little impact on performance really. 19:08 < shoghicp> or just hit it with a random stream of packets and see it die 19:08 < morfin> shoghicp you're about Minecraft? 19:09 < shoghicp> morfin: RakNet + Minecraft PE 19:09 < gurun> i just have one big problem about my implementation. I can't get multi-ack in a single package to work. I have no idea what i'm doing wrong. 19:09 < morfin> wtf is RakNet? 19:09 < shoghicp> https://github.com/OculusVR/RakNet 19:09 < shoghicp> Minecraft: PE uses that 19:10 < gurun> it's like a communications platform targeted at .. games. 19:10 < gurun> multiplaform. 19:10 < shoghicp> and unity, if I am right 19:10 < morfin> you think better to implement own thing? 19:11 < morfin> still can be crashed with brocken packets/stream? 19:12 < gurun> i don't think he said it was bad :-) 19:12 < shoghicp> and MCPE hasn't updated the Raknet version :( 19:12 < shoghicp> I have to do that some day 19:12 < gurun> well .. priorities first, right. 19:13 < gurun> get LevelDB committed back to origin, and have it work on windows :-P 19:13 < shoghicp> I would prefer a different system, but I'll do that in the long-term 19:13 < shoghicp> argh LevelDB 19:13 < shoghicp> too much issues with it 19:13 < shoghicp> it loses 20m of what you were doing in the world if you crash 19:13 < gurun> i thought that was very stable? 19:13 < shoghicp> it is, until you set a really big buffer 19:13 < gurun> 20 MIN? 19:13 < shoghicp> and that's what was decided on MCPE 19:13 < shoghicp> yep 19:14 < gurun> shit.. ok, yeah that sounds bad. 19:14 < shoghicp> build something, KILL mcpe 19:14 < shoghicp> nothing saved, even if it was there 10 minutes idling 19:14 < gurun> damn. that's not good of course. 19:14 < shoghicp> I haven't looked at that yet, but seems that there is no way to force a write without major lag 19:15 < morfin> btw having prediction to preload chunks is a good idea 19:15 < gurun> because .. well, not the clients are very stable if you ask me .. but shit do happens when you shift in and out of the client. 19:15 < gurun> ..like on iOS. 19:15 < shoghicp> gurun: it was reported first there :) 19:15 < shoghicp> but I can reproduce it consistently on all platforms now 19:16 < gurun> i guess. Yeah, i've seen crashes on iOS, but couldn't imagine it had these issues when it happens. 19:16 < gurun> but is that really LevelDB .. it sounds more like the way it's being used or something? 19:16 < morfin> lolwat 19:16 < morfin> RakNet uses managed C++? 19:17 < gurun> RakNet CAN use managed C++ you mean. 19:17 < shoghicp> gurun: it's LevelDB and a giant 10MB cache for chunks 19:17 < shoghicp> when it defaults to a few k 19:17 < gurun> haha, ok. 19:18 < gurun> well, actually. In that specific case.. i can't see a problem writing something entirely from scratch. Both you and me done something like that, and it's not difficult. 19:18 < gurun> but C++ doesn't help doing code like that. 19:18 < gurun> PHP and C# does. 19:19 < shoghicp> they said they did tests using TCP and it was bad 19:19 < morfin> i already don't like some of their code 19:19 < shoghicp> but I guess they did that using TCP RakNet 19:19 < gurun> yeah, i've never actually seen the TCP code, but noticed it is there. 19:20 < shoghicp> I want to remove that from the code, but that is long-term as it's really integrated into the project 19:20 < morfin> using C allocators? let's avoid C++ new/delete 19:20 < morfin> and exceptions 19:20 < gurun> but if you go TCP .. well, all of a sudden .. i don't feel RakNet deserve a place in the code anymore. 19:20 < morfin> and RAII 19:21 < gurun> i think that the code for communication is rather well thought out now. With experience and all. 19:21 < morfin> interesting hmm does C# implementations uses IOCompletionPorts 19:21 < gurun> and since mojang is sitting on a client and server that is more or less always in sync, doing radical stuff isn't difficult. 19:21 < gurun> well ... would hurt like hell in the beginning.. but well .. i'll take one for the team in that case :-P 19:22 < shoghicp> gurun: "always in sync" hahaha 19:22 < gurun> hihi 19:22 < gurun> "why does PM reject my client?" 19:22 < shoghicp> I've modified the protocol a lot :) 19:22 < gurun> hehe 19:22 < shoghicp> just so you laugh a bit 19:22 < shoghicp> go to your server 19:22 < shoghicp> plant or have a sapling there 19:23 < shoghicp> and apply bonemeal 19:23 < shoghicp> there! a tree :) 19:23 < gurun> haha 19:23 < shoghicp> it's client-side 19:23 < shoghicp> the server did not send anything ;D 19:23 < gurun> lol 19:23 < morfin> lol 19:23 < morfin> same things with crafting 19:23 < gurun> don't it even send some sort of use item on that? 19:23 < shoghicp> test it, it's only one bug of all of them 19:24 < morfin> client predict recipes 19:24 < shoghicp> morfin: at least they send the change of inventory 19:24 < shoghicp> I mean that the tree grows on both sides 19:24 < shoghicp> server receives useItem 19:24 < gurun> morfin: and they can be changed by will of server. 19:24 < shoghicp> grows tree 19:24 < shoghicp> but the client grows the tree too! 19:24 < morfin> but if your server do not want to craft furnace but client want you're out of sync 19:24 < shoghicp> (fixed that in our code already) 19:24 < morfin> and will have to force that behaviour 19:25 < shoghicp> morfin: I have a new protocol for inventory transactions and crafting ready 19:25 < shoghicp> but I guess you are talking about PC 19:25 < gurun> shoghicp: you also know that .. if you just trust the client, it takes like 5 min to have a working solution :-) 19:25 < shoghicp> not PE 19:25 < gurun> no, we where discussing .. IO :-P 19:26 < shoghicp> gurun: I'm removing all the trust in the client :) 19:26 < shoghicp> in the current version, you can teleport other players around 19:26 < gurun> well, yeah. I'm also not using that unless i don't have a choice.. like the remove blocks stuff.. 19:26 < shoghicp> or make an entity attack other 19:26 < gurun> HEY .. one thing. 19:26 < shoghicp> like chickens killing players 19:26 < morfin> looooool 19:26 < gurun> i actually changed my implementation the other day. 19:27 < gurun> so in start package, i actaully send a real entity ID to the player. 19:27 < shoghicp> or creating random explosions 19:27 < morfin> *chickens raping Steve 19:27 < gurun> and so far (still waiting for it to crash) it seems to work just fine with that. 19:27 < shoghicp> gurun: that's ok 19:27 < gurun> i'm never sending 0 now. 19:27 < shoghicp> on pm I sent 0 for plugins that modify the protocol 19:27 < gurun> because THAT simplifed the hell out of my code. Still refactoring that as a consequence. 19:27 < shoghicp> I had to change that for 0.11 ;D 19:28 < morfin> i did not look at PE but i think that's totally different 19:28 < shoghicp> morfin: or dropping blocks from other players 19:28 < gurun> i wish .. that inventories .. would have a larger number-space though. 19:28 < shoghicp> nah, PE is like the old PC protocol 19:28 < gurun> inventories, because of furnace, not chests. 19:28 < morfin> ) 19:29 < gurun> because shoghicp, performance and simplicity in code (also a kind of performance) comes from dealing with the entity id's in a correct way. 19:29 < gurun> correct from a performance perspectie. 19:30 < gurun> i would be happy having a few extra bytes and a long int, just to have the performance boost it gives from the server. 19:30 < shoghicp> yeah, but those things can't be done so easy with plugins 19:30 < gurun> or even GUIDs 19:30 < shoghicp> MCPE just forwards packets (and only if they are valid, now) 19:30 < shoghicp> no need to encode them again 19:30 < shoghicp> on PM, plugins can do anything :D 19:30 < gurun> well it doesn't matter really. 19:30 < shoghicp> so no luck there with packet forwarding 19:31 < gurun> because .. my code can also do anything of course. Regardless of it being plugins. 19:31 < gurun> but endless broadcast + send to player is making the code stink. 19:31 < gurun> i don't do packet forwarding from the client other than in very rare occations. 19:31 < gurun> this is a matter of only encoding a message once. 19:31 < gurun> like i do. 19:32 < gurun> because all cliens share entity ID. 19:32 < shoghicp> yep, I do that when possible 19:32 < gurun> that is the key to the whole performance thing. 19:32 < shoghicp> but still 19:32 < shoghicp> players use individual packets 19:32 < gurun> no shoghicp. I know your code. You have nothing of the kind. 19:32 < shoghicp> I do :) 19:32 < gurun> nope :-) 19:32 < shoghicp> Server->broadcastPacket() 19:32 < shoghicp> encodes only once 19:32 < shoghicp> for all the list sent 19:33 < morfin> obviously 19:33 < gurun> yes, but all packets with entity id .. you keep that per player. 19:33 < shoghicp> not anymore :D 19:33 < shoghicp> at least on my seecret branch 19:33 < gurun> well .. secret doesn't help, does it :-) 19:33 < gurun> i have a secret branch where i implemented a bitcoin generator :-) LOL. 19:34 < shoghicp> I can't push that publicly :P 19:48 < morfin> hmm 20:38 < ackpacket> Why would I end up with a slew of region files only 8KiB? That would make them empty no? 23:25 <+SpaceManiac> ackpacket: there's 8kb of header matter 23:25 <+SpaceManiac> I guess there's not code to handle deletion of the files if there's no chunks? not sure how these would be producded 23:26 < ackpacket> SpaceManiac: the end 23:26 < ackpacket> SpaceManiac: complete air 23:27 <+SpaceManiac> hmm, does it not save complete air chunks? I guess that makes sense 23:27 < ackpacket> That's not the weirdest part 23:27 < ackpacket> They go as far out as r.2400.*.mca 23:28 < ackpacket> and some of them are generated while having no adjacent regions generated --- Day changed jeu. févr. 19 2015 01:31 < gurun> damn, wish i could write RFC 01:31 < gurun> .. to Mojang :-P 01:33 < gurun> RFC #1: Enable OAuth scenarios 01:34 < gurun> RFC #2: Introduce client bound RedirectToServerPacket. 01:36 < gurun> RFC #3: Send custom texture to client to enable ads. 01:36 < gurun> .. so we can eat. 01:56 < toqueteos> +1 for #2 and #3 01:57 < toqueteos> feel free to take boostrap and make minecraft-rfcs.com 16:25 < Xor_Boole> will nbt-differentiated item models ever be a thing? 16:26 < Xor_Boole> e.g. a sword with sharpness can be made to look physically sharp 16:29 < morfin> oO how 16:30 < morfin> you'll need render those in client somehow as well 16:33 < redstonehelper> client knows nbt differences 16:39 <+Amaranth> That's kind of expensive for rendering 17:21 < Xor_Boole> Amaranth > expensive for rendering 17:21 < Xor_Boole> you can get arbitrary complexity on models already (I've yet to hit the upper bound if there is one) 21:03 < gurun> As any good lazy developer, i'm out to steal code with pride from all of ya. But seriously, this list: 21:03 < gurun> http://wiki.vg/Server_List 21:03 < gurun> is so full of bullshit. 21:06 < dx> lol dragonet first. it's a fork of glowstone, and says in the readme "Is this fully working now? Yes, mostly!" 21:06 < gurun> lol, yes. 21:07 < gurun> i'm hunting for code related to two things 21:07 < gurun> mobs and water phsyics. 21:07 < gurun> a lot claim to have stuff like that.. 21:07 < gurun> what do i find. Entity base classes. 21:07 < gurun> water block. 21:07 < dx> oh hey 21:07 < dx> they changed the license 21:07 < dx> SpaceManiac: prepare the DMCA missiles 21:07 < gurun> was that before or after they deleted the link to the protocol spec i generate? 21:08 < gurun> from the wiki. 21:08 < dx> huh? 21:08 < gurun> i will compile my own list, and put it up on our wiki instead. With the real features. I've been through the code of almost all listed open source projects now. Except the only one that probably does all the stuff it claims.. the C++ one. 21:09 < gurun> i obviously don't see the point in having that information misleading. Just to drive traffic or what? 21:09 < gurun> (sorry, it really pisses me off) 21:10 < dx> tbh the columns of that server list are rather useless too 21:11 < dx> "world formats", "multiworld", who cares? physics could mean anything. etc. 21:15 < gurun> concurrency model?! eh 21:16 < gurun> yes i have threads.. one :-P 21:16 < gurun> i have lots of threads, but the underlying virtual machine can only use one. 21:17 < gurun> nah, sorry. have to be nice :-) --- Day changed ven. févr. 20 2015 05:24 < morfin> guys are not requests for server info being handled with higher priority? 06:04 <+Amaranth> morfin: What? 08:07 < morfin> as example i send 0x00 with next state 1 just to request server info is not that being handled with higher priority? 08:08 < morfin> because otherwise i would wait for response long time 08:27 < morfin> i am not sure how would i close connection if something went wrong(as example user sent size of "packet" 1000 but there is not enough data to read) 16:03 < dav1d> http://vp.dav1d.de/img/bVj8I :o 16:21 < morfin> hmm 19:56 < dav1d> is the players key optional? http://wiki.vg/Server_List_Ping 19:56 < dav1d> because I don't seem to get one from the server 20:03 < morfin> server does not send max players and current num of players? 20:04 < dav1d> exactly 20:04 < dav1d> {u'version': {u'protocol': 47, u'name': u'1.8.1'}, u'description': u'A Minecraft Server'} 20:04 < dav1d> everything vanilla 20:05 < dav1d> after a few minutes, the server started sending it out though 20:21 < morfin> strange 20:22 < morfin> lol 22:12 < Sanqui> hey, does anybody know when the files in world/stats get updated? on logout perhaps? 22:16 < Sanqui> oh, let me answer my own question: every 5 minutes. the problem here is the server's in a different timezone :p --- Day changed sam. févr. 21 2015 13:31 < Not-5258> [node-minecraft-protocol] roblabla pushed 2 commits to master [+2/-0/±2] http://git.io/ABsl 13:32 < Not-5258> [node-minecraft-protocol] deathcap da65576 - Add browserify support 13:32 < Not-5258> [node-minecraft-protocol] roblabla 39fe1b5 - Merge pull request #71 from deathcap/feature-browserify Expose only protocol.js when used with browserify. 15:53 < Sanqui> hey, does anybody know where I could download minecraft block/item icons? 19:22 < Gjum> Sanqui: what will you use them for? maybe minecraftwiki.net? 19:25 < Sanqui> a page with stats 19:25 < Sanqui> minecraftwiki.net is not useful at all 19:25 < Sanqui> the files are inconsistently named and i'd have to batch download them 19:40 < dav1d> coming along :) http://vp.dav1d.de/img/nPT 19:54 < dexter0> dav1d: I've looked at your last two screenshots? What is it? 19:55 < dav1d> dexter0: frontend to my server wrapper script 19:55 < dexter0> ah 19:55 < dexter0> It looks good 19:55 < dav1d> dexter0: scheduling (kinda) and backups are already implemented, just the frontend is missing 19:55 < dav1d> thanks 19:56 < dav1d> ah und an ftb automatic updater, but I think I will not add it 20:01 < dx> heh "und" 20:01 < dav1d> lol 20:01 < dav1d> I didnt even notice 20:27 < gurun> i think you need to do something about performance .. load 300 on 0 players.. really, that sucks! 20:27 < gurun> :-P 20:28 < gurun> looks really good tho 20:29 < dx> sounds like %, not load 20:30 < gurun> well .. load is just load.. 20:30 < gurun> maybe it is 300 load units out of 60.000 .. 20:30 < dx> ok, you didn't mean the same units as load average. 20:30 < dx> nvmlol 20:30 < gurun> hihi 20:43 < balumonster> hi 20:43 < balumonster> does anyone know what "userid" field represents in "launcher_profiles.json" file? 20:47 < Gjum> seems to be provided in http://wiki.vg/Mojang_API#Response 20:47 < Gjum> but no idea why, anyone? 20:48 < Gjum> mh no, that's the UUID... 23:44 < Gjum> What is the client supposed to do when the Server does not accept a click action? The server does not accept/deny any succeeding click packets... --- Day changed dim. févr. 22 2015 11:31 < gurun> Gee, someone in your office should by tomcc some flowers or something..or a GC. 11:32 < gurun> ..or just give the guy a hug, and a GC. 11:35 < gurun> I just love the way any Twitter from a any MC developer turns into "when is next release coming out" --- Log closed dim. févr. 22 16:25:11 2015 --- Log opened dim. févr. 22 16:25:56 2015 16:25 -!- Irssi: #mcdevs: Total of 152 nicks [1 ops, 0 halfops, 11 voices, 140 normal] 16:29 -!- Irssi: Join to #mcdevs was synced in 238 secs 17:48 < Wuppie> argh 17:48 < Wuppie> implementing health 17:48 < Wuppie> and food 17:48 < Wuppie> for some reason 17:48 < Wuppie> the food goes down 17:48 < Wuppie> then 17:48 < Wuppie> BAM 17:48 < Wuppie> up again 17:49 < Wuppie> like it regenerates 17:49 < Wuppie> :| 17:49 < Wuppie> Client side only tho 19:20 < Not-5258> [node-minecraft-protocol] roblabla pushed 2 commits to master [+0/-0/±2] http://git.io/A2gJ 19:20 < Not-5258> [node-minecraft-protocol] wtfaremyinitials 3871485 - Add .DS_Store to .gitignore Make us Mac user's lives easier 19:20 < Not-5258> [node-minecraft-protocol] roblabla 1a4a743 - Merge pull request #116 from wtfaremyinitials/ignore-dsstore Add .DS_Store to .gitignore. 19:22 < Not-5258> [node-minecraft-protocol] roblabla pushed 2 commits to master [+2/-0/±0] http://git.io/A2gy 19:22 < Not-5258> [node-minecraft-protocol] wtfaremyinitials 2fe306d - Create .editorconfig file 19:22 < Not-5258> [node-minecraft-protocol] roblabla 80566e0 - Merge pull request #118 from wtfaremyinitials/editorconfig Add an editorconfig file. 19:57 < gurun> can we *please* not have commits pushed to IRC :-( 19:58 < Not-5258> [node-minecraft-protocol] dcbartlett pushed 2 commits to master [+0/-0/±2] http://git.io/A2D2 19:58 < Not-5258> [node-minecraft-protocol] gitter-badger 26d16a0 - Added Gitter badge 19:58 < Not-5258> [node-minecraft-protocol] dcbartlett 1963c72 - Merge pull request #119 from gitter-badger/gitter-badge-3 Add a Gitter chat badge to README.md 19:59 < Not-5258> [node-minecraft-protocol] dcbartlett pushed 1 commit to master [+0/-0/±1] http://git.io/A2Dh 19:59 < Not-5258> [node-minecraft-protocol] dcbartlett ce0e351 - Update README.md 20:03 < roblabla_> sorry for the the commit spam ^^' 22:19 < nickelpro> weird 22:19 < nickelpro> 1.8.3 is crashing on my system with: OpenGL: ~~ERROR~~ RuntimeException: No OpenGL context found in the current thread. 22:33 < gurun> nickelpro: sorry, i borrowed it. Want the context back? 22:34 < nickelpro> gurun: No keep it, I'll get my spare 23:20 < pokeball99> hello,anyone here chating or are you all bots XD 23:24 < gurun> just bots 23:26 < pokeball99> XD nice bots then 23:41 < pokeball99> is it always this quite? 23:49 < toqueteos> pokeball99: i'm the undesired suscription bot, what hunting magazine do you want to get suscribed to? 23:50 < pokeball99> ? 23:51 < pokeball99> oh i saw your name in the recent changegs 23:51 < pokeball99> http://wiki.vg/User:Toqueteos 23:51 < toqueteos> hahahaha that's stalking 23:52 < pokeball99> no i just stalk that wiki :) --- Day changed lun. févr. 23 2015 00:00 < pokeball99> toqueteos,isn't go made by google? 00:00 < toqueteos> no 00:00 < toqueteos> it's endorsed but it's made by people 00:00 < toqueteos> why? 00:01 < gurun> lol .. it smells a bit like stalking, i agree :-P 00:02 < pokeball99> oh i was just wondering...im new to coding,being 14 and all tend to be hard to dabble in it with normal life 00:03 < pokeball99> this is the site i've been "learning" from:https://github.com/moneypot 00:04 < toqueteos> go for python then 00:04 < toqueteos> or even php so you learn to hate it 00:05 < pokeball99> im more into java,javascript,and A.I stuff then php and other stuff 00:11 < toqueteos> java, javascript and ai stuff 00:11 < toqueteos> 14 years? 00:11 < toqueteos> how much years programming? 00:11 < pokeball99> no im 14 00:11 < toqueteos> java and javascript are like water and oil 00:11 < pokeball99> 14 years of age 00:11 < pokeball99> ik 00:12 < pokeball99> i mess with java because of minecraft,js because its used in a lot of bot builders 00:29 < gurun> pokeball99: 14y. You have plenty of time to mess then :-) 00:30 < pokeball99> true 00:31 < pokeball99> i wish there were more non-hacking client and more legit clients like optifine 00:32 < pokeball99> not that i don't mind the hack clients,i play on 2b2t.org 00:34 < gurun> hmm, i don't think there is something like a "legit" client unless it's from Mojang. 00:34 < gurun> but i think i know what you mean. 00:34 < pokeball99> true 00:34 < pokeball99> but the term for that is official 00:35 < gurun> :-) 00:36 < pokeball99> ? 00:44 < toqueteos> spout client was pretty legit back then 00:44 < toqueteos> in that sense.. 00:46 < pokeball99> spout? 00:47 < toqueteos> do you know spigot? 00:47 < toqueteos> imagine bukkit + mods for client without forge, that's spout 00:48 < toqueteos> not exactly like that but.. pretty much 00:48 < pokeball99> nice 00:48 < pokeball99> what happen to it,abandoned? 01:12 < toqueteos> i'm not sure.. but seems like abandoned https://github.com/SpoutDev/Spout 01:47 < gurun> Lesson learned. Flowing physics is by far the most difficult to implement in Minecraft. EOM. 11:20 < nico|work> darngeek: still working on the fishing? 11:21 < darngeek> the mechanics work, but you know.. i wantz it purteh 11:28 < nico|work> :-) Any idea how that stuff will be communicated to the server? 12:04 < darngeek> with excessive screaming :P 12:05 < darngeek> but im working on some packets for events on the level, which is quite similar to PC, but not entirely, i think shoghicp knows the in depth details 12:06 < darngeek> basically the server will tell you whats happening to your fishing hook, and the client will display that for the user 13:14 < morfin> hmm 13:15 < morfin> if i will store blocks data at the beginning of file compressed data size would have variable size anyway(depending on block types,metadata etc) 13:16 < morfin> seems like there no better way to store map 13:17 < morfin> because compressed "chunk" size always variable 13:34 < nico|work> morfin, depending on what you want, well, you could have a FAT and compress parts separately and see how that works. 14:55 < morfin> i can't remember where do i see autherntication process for non-offlinemode servers 14:56 < morfin> that's still true: http://wiki.vg/Authentication? 15:58 < toqueteos> you don't do auth, you just go login start, login success 15:58 < toqueteos> that is online-mode=false on 1.8 15:58 < toqueteos> (i've only checked on 1.8) 16:23 < EnderHacker> anyone has #minecraft ops in here? --- Day changed mar. févr. 24 2015 00:04 < Wuppie> why isn't my Set Slot packet setting any slots? :| 11:40 < gurun|work> So 11:40 < gurun|work> i already established for myself that -x/16 is really not the same as -x >> 4 11:41 < gurun|work> now i learn that -x >> n is implementation depenedent.. both on the language in question AND the implementation on that language. 11:41 < gurun|work> damn, they couldn't agree in the "committe" 11:43 <+Amaranth> Any time I do anything beyond add/subtract/multiply/divide with signed integers I try to remember to include test cases to catch all the places I fucked it up with negative numbers 11:43 <+Amaranth> Because I always do 11:43 < gurun|work> it feels like my perception of the world was just shattered. Don't know what to do with myself ! 11:44 < gurun|work> it's just like when i realized that there is that thing called "encoding" of text :-( 11:44 < gurun|work> the world was never the same after, and it wasn't a better place. 11:44 < gurun|work> guess tomcc is in that place right now with MCPE :-P 11:58 < darngeek> :) 11:58 < darngeek> the beauty of character encodings 12:19 < gurun|work> This should be an alternative for NBT and LevelDB storage, right - http://redis.io/ 12:19 < gurun|work> especially if you do a cloudservice. 12:24 < shoghicp> gurun|work: hmm, might work 12:42 < gurun|work> the biggest differences seems to be that LevelDB is faster, but if transactions, redis is both safer and faster. 12:43 < gurun|work> basically i read it as redis actually supports real transactions (out of process scenarios), but LevelDB doesn't really do that (hence the speed) 12:43 < gurun|work> microsoft choose redis for azure. 13:41 < toqueteos> gurun|work: isn't redis suposed to be a cache not a datastore? 13:42 < toqueteos> i remember reading something like that some time ago in their docs, but their frontpage states they are a cache and a store.. weird 13:45 < toqueteos> now* states 13:56 < toqueteos> gurun|work: what's your github handle? i'm gonna steal your redis idea and want to cite you as muse 13:58 < gurun|work> haha 13:59 < gurun|work> shoghicp: NiclasOlofsson, very obscured... 13:59 < gurun|work> the key is probably "persistant" cache. 13:59 < shoghicp> you pinged the wrong guy :P 14:00 < toqueteos> not kidding: https://github.com/PistonDevelopers/hematite_server/issues/19 14:00 < gurun|work> difference between cache and db is usually the lack of query languages in this case. 14:00 < gurun|work> shoghicp:yep 14:19 < Wuppie> toqueteos, lol xD 14:20 < Wuppie> Redis looks like a nice alternative actually 14:25 < Wuppie> toqueteos, does Hematite have Multiplayer support? If not, will it get support for it? 14:26 < Wuppie> i don't think it has support right? 17:59 < morfin> hey Paprikachu 17:59 < Paprikachu> sup 18:00 < morfin> i remember why i used virtuals etc - i "forget" packet type when put into queue 18:01 < Paprikachu> i don't parse packets until i actually need them 18:01 < morfin> i am not going to do that too 18:02 < morfin> btw did you implement authentication with site? 18:02 < Paprikachu> i just have a buffer class for packets that i pass around 18:02 < Paprikachu> and nope, not yet 18:02 < morfin> i saw you generate JSON using sprintf(:D) 18:02 < Paprikachu> got a problem with that 18:03 < morfin> but parsing it a bit more problematic 18:03 < morfin> why? 18:03 < Paprikachu> cause i didnt have a json library included when i wrote that piece 18:03 < Paprikachu> and i didnt care enough to change it 18:03 < Paprikachu> probably more efficient anyways 18:04 < morfin> lol sprintf is cheap 18:04 < Paprikachu> it's not sprintf 18:04 < morfin> you just put fields into predefined places) 18:04 < Paprikachu> boost.format 18:04 < morfin> ow 18:04 < Paprikachu> sprintf sucks 18:04 < morfin> anyway much cheaper than using something like property_tree 18:04 < Paprikachu> property_tree is stupid and useless 18:04 < morfin> lol 18:04 < Paprikachu> it stores everything as strings and doesn't remember the type 18:05 < morfin> and you have to get yes 18:05 < Paprikachu> that's stupid 18:05 < Paprikachu> conversions are a bad idea 18:05 < Paprikachu> if the thing is a number don't pretend it's not 18:06 < morfin> Minecraft protocol is so strange 18:06 < morfin> to get whole packet length i should serialize data and then calculate length and write as varint :( 18:06 < Paprikachu> or be smart about it 18:07 < morfin> as some guy said "you can't predict packet size" 18:07 < Paprikachu> except you can 18:07 < morfin> i think it was shoghicp 18:07 < shoghicp> haha 18:07 < morfin> but how you would deal with shit like hmm 18:08 < shoghicp> well, you can, except a few ones 18:08 < shoghicp> (easily) 18:08 < Paprikachu> calculate the length in advance 18:08 < morfin> chunk data 18:08 < Paprikachu> you don't need to serialize it for that 18:08 < shoghicp> chunk data is easier now 18:08 < shoghicp> as it is not compressed :) 18:08 < Paprikachu> ^ 18:08 < morfin> why? 18:08 < shoghicp> it gets compressed at packet level 18:08 < morfin> lol 18:09 < morfin> so many things changed 18:09 < Paprikachu> besides 18:09 < Paprikachu> even if you had to compress it 18:09 < Paprikachu> you could ask zlib for the max size and allocate a buffer of that size 18:09 < Paprikachu> it's a non-issue 18:10 < Paprikachu> and encryption is transparent to the rest of the packet handling, you shove N bytes in, you get back N bytes 18:10 < morfin> anyway 18:13 < morfin> oooh i forgot 18:13 < morfin> so if i encrypt then i first compress then encrypt? 18:25 < shoghicp> yep! 18:25 < shoghicp> otherwise it wouldn't work that well ;D 18:25 < shoghicp> and if it works, the encryption is broken 18:27 < morfin> i know that bungeecord itself encrypt packets 18:28 < morfin> and check authentication for user 18:32 < morfin> hmm i am not sure how MInecraft main loop works 18:33 < morfin> as example i have "ticks" so when i reach tick i fire event and block updates/mobs lookup/fire spreading happens 20:13 < toqueteos> Wuppie: sorry for the HUGE delay, yes, hematite will get multiplayer support 20:13 < Wuppie> toqueteos, awesome :D i will defenitely give it a try when it is in :) 20:14 < toqueteos> we found a kinky bug on early Feb which stopped hematite development, so I focused on getting hematite_server going, one of my forks already supports login in (1.8), moving around and such 20:15 < toqueteos> hopefully this weekend we will get the io reform done and keep working, then we could merge some of the netcode into client, it's hard but slowly moving forward 20:16 < toqueteos> there's #hematite channel on mozilla's irc 20:16 < toqueteos> 8 people usually there, hopefully some more in near future 20:17 < toqueteos> *end of shameless promo* 20:18 < Xor_Boole> #rusthypetrain 20:18 < Xor_Boole> ruuuuuust! 20:36 <+Amaranth> The more I learn about the alternatives the more I like Rust :) 20:50 < toqueteos> oh hai guys --- Day changed mer. févr. 25 2015 00:09 < Wuppie> i don't really understand yaw calculation just yet 00:10 < Wuppie> l = x-x0 00:10 < Wuppie> w = z-z0 00:10 < Wuppie> ? 00:11 < Wuppie> how exactly do i get those values? 00:18 < Aerosonic> Hey guys! 00:18 < Aerosonic> I have an issue where minecraft doesn't save the world order properly. There's a specific way that I need worlds sorted for my software so that it would go through them sequentially (because focus signals are used to do stack switching). 00:19 < Aerosonic> If I do sudo sync && shutdown -h now, then disconnect power, it'll save all the worlds in the right spots upon powerup. But if I do a hard reset, it will mix up the world order every time. 00:19 < Aerosonic> I'm using minecraft-pi, by the way. 00:20 < Wuppie> Aerosonic, oh wow. i completely forgot about minecraft-pi lol 00:20 < Aerosonic> I've used strace and dtrace to figure out how the world order is decided, but to no avail. I've even tried replacing the binary itself to see if the data is stored there. 00:20 < Wuppie> sadly. i can't halp you :( 00:22 < Aerosonic> Well, I'm sure there's some other masochist in here that tried to develop a storymode for minecraft-pi. 00:24 < Aerosonic> Wuppie: How is the world order decided on the normal minecraft? Maybe they're similar. 00:24 < Aerosonic> Pity it's closed source, otherwise I wouldn't be using focus signals. 00:24 < Wuppie> Aerosonic, how exacl 00:24 < Wuppie> how exactly do you mean WorldOrder? 00:25 < Aerosonic> Well, you know how you have a specific way the worlds are arranged in the menu? Latest world first, second latest second, etc. 00:25 < Wuppie> also, you know that most of us are not the Minecraft developers right? :D 00:25 < Wuppie> oh yeah 00:25 < Aerosonic> Ehh. I asked in #minecraft, they directed me here. 00:25 < Aerosonic> I'm not a developer either, but I'm desperately trying to be. 00:25 < Wuppie> yeah, geeky people in here :D 00:25 < Aerosonic> Maybe we should start a petition to open source minecraft-pi. 00:25 < Wuppie> haha lol. The problem is 00:26 < Wuppie> Minecraft-Pi is based on Minecraft-PE 00:26 < Aerosonic> Yeah. Which is closed source. 00:26 < Wuppie> exactly 10:41 < gurun> needs some advice on implementation of "physics" or .. adjent block updates. 10:42 < gurun> when i do a "Set Block" to update a block at a specific location, should i always check the adjecent blocks (6 or 8?) and give them a chance to update? 10:42 < gurun> triggering fire, water, lava, etc handling on these updates. 10:44 < gurun> (yes i know not too many have actually implemented it this far, but well .. anyone?) 12:34 <+Amaranth> gurun: Are you the client or server? 12:35 <+Amaranth> I _think_ this is all handled on the server so if "physics" causes a change in a neighbor block you'd get multiple block change packets (or a multi block change packet) 12:56 < gurun> Amaranth: i'm the server 12:56 <+Amaranth> So you'd do the "physics" on a block change unless it's a kind of change that should ignore physics 12:58 < gurun> yeah, and that is the question .. should i do it or not, because knowing when to NOT do it is a bit difficult (haven't come up with any solution to that). 12:58 < gurun> but if i, during the same tick, start changing blocks it turns rather nasty rather quickly. So it feels like .. i need some sort of dirty state for these things on the blocks. 13:05 <+Amaranth> afaik (almost) every block change outside of world generation applies "physics" 13:05 <+Amaranth> I'm trying to think of cases that don't but can't remember any 13:06 < gurun> ..think fluids. 13:07 <+Amaranth> Eh, I figured out how those worked once and apparently my brain decided to rebel and throw that away 13:07 < gurun> lol 13:08 < gurun> well .. it's maybe not so much a matter of how it should work. I think you are right that it should basically apply it all the time, and my thinking of performance is playing ahead of time. 13:08 < gurun> so i should maybe focus on getting it working the proper way first, and then think about the performance of it. Probably just gettin ahead of myself. 13:09 <+Amaranth> iirc blocks have different logic for player interaction, block ticking, and physics/scheduled ticks 13:10 <+Amaranth> So if you're worried about some kind of an infinite loop I think that's how things get resolved 13:10 < gurun> yes i am worried about that.. or if not infinitve at least a serious ripple effect. 13:11 <+Amaranth> You could also just use a queue to avoid stack overflows and such but it'd still have a chance for infinite recursion 13:12 < gurun> that's more along the lines of the dirty flag i was thinking about 13:13 < gurun> but i also have a gut feeling, that the ripple effect that i'm scared of, actually is an essential part of making physics work in MC too. 13:13 < gurun> like with sand/falling sand. 13:13 < gurun> without the ripple efffect, that wouldn't really work. 13:14 < gurun> but then, that state is so definitive when it changes (it moves location). I think fluid is a bit more scary. Feels like it could enter a state of self-oscillation. 13:14 <+Amaranth> Fluids should reach a steady state and stop causing updates 13:14 < gurun> the thing is, i don't seem to have a problem with it .. but i might just have missed some combination of bad updates int the tests. 13:16 < gurun> fluids mostly do it on tick, and ignores the applied physics don't they. 13:19 < bgale> time to get the prover out 13:19 < bgale> ;D 16:21 < morfin> how many ticks types Minecraft use? 16:21 < morfin> only 2: general and redstone? 16:30 < shoghicp> random ticks too 16:30 < shoghicp> and scheduled 16:30 < shoghicp> general: neighbor updates 16:46 < morfin> hm? 16:46 < morfin> random ticks? wtf 16:52 < morfin> hmm 16:52 < morfin> On every game tick, 3 block positions are chosen at random from each section in an area 15 chunks on a side and centered on the player. Any blocks at those positions are given a "random block tick".[1] Most blocks ignore this tick, but some use it to do something: 16:53 < morfin> that's very strange 16:55 < morfin> i am not sure why that logics is being used 17:04 < morfin> is not that correct way to use timer and each time it fire event do some regular stuff i should do(mobs lookup etc), select random 3 blocks so i can update them somehow? 17:23 < rom1504> you forgot about tic tic tic 17:25 < bgale> morfin, is that related to growth? 17:25 < morfin> growth? 17:25 < bgale> trees, crops, etc 17:25 < morfin> btw not sure why there nothing about random ticks and tree saplings 17:26 < morfin> trees have fixed grow time? 17:28 < morfin> i would use fixed timer anyway, and decide what should i do when time reached end of timer 17:41 < morfin> player entities use ids from same pool as another entities? 19:41 < morfin> hmm 19:42 < morfin> i guess there was no massive changes for packets 19:43 < morfin> my program was terminated in usual way somehow :D 20:28 < morfin> did they change everything in proto? 20:42 < toqueteos> morfin: new mc release? 20:52 < xehbit> I hate Java :( 20:53 < xehbit> The gui part 20:53 < xehbit> Java dont like tilling wm's :'( 20:53 < morfin> yes 20:53 < morfin> new release 20:54 < toqueteos> noooo, not right now :( 20:56 < toqueteos> seems like bugfix update 23:08 < Wuppie> anyone knows why i always get 0 for Held Item Change packet? --- Day changed jeu. févr. 26 2015 17:44 < Wuppie> hi 17:44 < Wuppie> got a quick question 17:44 < Wuppie> after a player dies 17:45 < Wuppie> and i receive the Client Status packet 17:45 < Wuppie> what do i have to send to respawn the player? 18:52 < Deanveloper> Hey guys! Does anyone know how to make a LivingEntity persistent via packets? I didn't see any Metadata indexes that point to it 18:56 < morfin> btw how server does not remove horses(not wild) etc? 18:57 < Deanveloper> Through the PersistenceRequired NBT tag 18:57 < Deanveloper> Well, that's for client side. There's a variable that the server keeps that can be manipulated with the removeWhenFarAway Bukkit method 19:03 < SopaXorzTaker> Wuppie, wireshark 19:03 < SopaXorzTaker> and set compression threshold 0 online mode off 19:03 < Wuppie> SopaXorzTaker, why would i Wireshark? lol 19:03 < SopaXorzTaker> lol 19:03 < Wuppie> i just need to know what packet i have to send to actually respawn a player 19:03 < SopaXorzTaker> because no-one knows what packets does it send 19:04 < Wuppie> offcourse someone knows what packet has to be send 0.o 19:04 < Wuppie> All servers do it just fine? 19:04 < SopaXorzTaker> send the client a string like "PISSOFF" xD 19:04 < Wuppie> wtf 19:04 < Wuppie> why? 19:04 < SopaXorzTaker> it may match the packet xD 19:04 < Wuppie> i don't think you understood my question 19:05 < SopaXorzTaker> You need to send a packet that tells the client to respawn. 19:05 < Wuppie> Well, after a player dies 19:05 < Wuppie> and he clicks respawn 19:05 < Wuppie> i receive a packet 19:05 < Wuppie> i handle that 19:05 < SopaXorzTaker> williamtdr, http://wiki.vg/Protocol#Respawn? 19:05 < Wuppie> then i need to send the client a packet to let to make him respawn 19:06 < Wuppie> They say using the Respawn packet is not good 19:06 < Wuppie> as i am not allowed to do it to the say dimention 19:06 < SopaXorzTaker> Wuppie, this looks like what you need: http://wiki.vg/Protocol#Client_Status 19:07 < Wuppie> nonono 19:07 < SopaXorzTaker> Why? 19:07 < Wuppie> thats the packet a client sends me 19:07 < Deanveloper> That's a serverbound packet 19:07 < SopaXorzTaker> yes 19:07 < Wuppie> i need to send it to the client 19:07 < SopaXorzTaker> and you want to send it a response? 19:07 < SopaXorzTaker> first link 19:07 < Wuppie> i already read it 19:07 < SopaXorzTaker> http://wiki.vg/Protocol#Respawn 19:07 < Wuppie> But, they say using the Respawn packet is not good as sending it to the dimension a player is in is bad 19:07 < Wuppie> and may cause glitching 19:08 < SopaXorzTaker> Umm 19:08 < SopaXorzTaker> maybe send him Respawn(nether) 19:08 < Wuppie> wait 19:08 < SopaXorzTaker> then Respawn(overworld) 19:08 < Wuppie> i missread shit 19:08 < Wuppie> :| 19:08 < Wuppie> it alsos said: fixed after death... 19:08 < Wuppie> FUCK 19:09 < Wuppie> i am an idiot 19:09 < Wuppie> lol 19:09 < Wuppie> thanks anyways xD 19:44 < Guest72725> You Mojang guys have to ban tomcc from Twitter. He tweets ++i and people respond "does that mean that 0.11 is out soon. LOL 19:46 <+AndrewPH> sounds like a bannable offense to me 19:47 < gurun> I think the kids think he is talking about new game modes.. 19:47 < shoghicp> hahaha 19:48 < darngeek> this is gonna be fun 19:48 < gurun> LOL 19:49 < shoghicp> ^ 19:49 < tommo_> they should ban twitter from following me instead 19:49 < tommo_> also 0.11++ confirmed 19:49 < gurun> HAHA 19:50 < shoghicp> I prefer ++0.11 19:50 < tommo_> me too but then people don't get the joke 19:50 < darngeek> why not make it for(___; range(0.11)) ? 19:50 < gurun> Every programming tweet so far has actually been about ocelots if judge from the responses. 19:50 < tommo_> because that would be 11 versions 19:51 < tommo_> yes, I try very hard to cause twitter drama but 97% of my followers are 8 year olds 19:51 < darngeek> ocefew 19:51 < gurun> Hmm, that would be the parents of your followers perhaps... 19:52 < gurun> (I don't want to get into a discussion about what that make ME) 19:52 < gurun> Maybe Mojang want to hire my son for support!?! 19:53 < gurun> He is soon 7. He knows the customers all to well. 19:53 < darngeek> to respond to the happy customers in reguard to herobrine stealing their items? :) 19:55 < darngeek> my optifine cape stopped working :( 19:56 < redstonehelper> did you change your name? 19:58 < morfin> i am thinking how many hooks have bukkit 20:00 < shoghicp> darngeek: instructions unclear, I am now a cape 20:00 < darngeek> :D nice 20:01 * darngeek equips 20:01 < shoghicp> D: --- Day changed ven. févr. 27 2015 15:24 < woder> hey, for the player's bounding box, when it says the player is at x,y,z where is that on the box? my tests seem to suggest the middle but I'd like to confirm. 15:37 < MrARM> [-0.3, 0, -0.3, 0.3, 1.62, 0.3] afaik 15:38 < MrARM> at least what I used for my client 15:38 < MrARM> and it feels like vanilla 15:42 < woder> right, thats what I thought, thanks 17:14 < gurun> water, after flow is .. complete. Should all blocks have been converted to stationary water by then? 17:50 < toqueteos> gurun you mean the thing mc does? 17:50 < toqueteos> "still-ification" of water on a same height pool 17:50 < gurun> hmm, like a waterfall. When i put water at the top, and it completed the flow. Should all blocks be set to still/stationary water or not. Yes, like MC does it. 17:51 < gurun> i don't know if that is what MC does. 17:51 < toqueteos> oh.. you mean cheating so you have water blocks with animations so it looks like water is moving but it's not 17:52 < toqueteos> yeah, unless you want to spend all your frame time on updating water blocks you should set them to still/stationary 17:52 < toqueteos> then just check for block updates 17:52 < toqueteos> "just" 17:57 < gurun> i don't think the animation has to do with that .. but not sure anymore. 17:58 < toqueteos> i may have missunderstood you 18:25 < gurun> damn, didn't anyone beside pocket mine implement fluids? Anyone?! 18:45 < roblabla> hey guys, in http://wiki.vg/Debugging, it looks like the parameters of the packets are spuposed to be written to the client console, but when I try to enable the debug, only the packet id is written, not the parameters 18:45 < dexter0> gurun: SirCmpwn's truecraft now has (b1.7.3) fluids 18:45 < roblabla> is it still possible to get the params to show up or did mojang remove that ? 18:46 < gurun> dexter0: truecraft. ok, i'll check that out. thanks. 19:13 < woder> does anyone know why the instant my client goes in the air it gets kicked because flying isn't allowed? it doesn't even give me the chance to fall. 19:24 < roblabla> woder: you’re probably going up “too fast” ? 19:24 < woder> up or down? 19:24 < roblabla> Well up too fast or down not fast enough :P 19:25 < woder> huh 19:25 < woder> because I'm air dropping him and he accelerates at 0.08 blocks/25ms 19:26 < roblabla> https://github.com/andrewrk/mineflayer/blob/master/lib/plugins/physics.js#L97 19:27 < roblabla> waitwut. those values look odd 19:28 < roblabla> woder: do you cap the acceleration ? 19:29 < woder> yes 19:29 < woder> terminal V is 3.92 19:40 < dx> nickelpro: RIP your python bot framework 19:44 < woder> it works fine over short distances 19:44 < woder> but anything long distance doesn't 20:37 < gamingrobot> dx: wut 21:39 < nickelpro> dx: He's dead jim 21:39 < dx> ;_; 23:49 < gurun> This release includes a new version of the 64-bit JIT Compiler, which provides significant performance improvements over the legacy 64bit JIT Compiler. While we have tried to make the transition to the new Compiler as transparent as possible, you may see changes in behavior. 23:49 < gurun> .NET, guess that's what you get for sticking to GC languages :-/ --- Day changed sam. févr. 28 2015 00:47 < Guest39708> hi 00:50 < Guest39708> I have a problem. There bot that connects to the vanilla server without any problems. But if you are connecting to a server on the cauldron after a while is the loss of connection. 00:52 < Guest39708> This server logs after a lost connection. 00:52 < Guest39708> 00:52 < Guest39708> 00:52 < Guest39708> 00:52 < Guest39708> 00:53 < Guest39708> If you know - please help 01:04 < Xor_Boole> why doesn't the vanilla launcher do setLocationRelativeTo(null) after it loads. whyyyy 01:22 < Guest39708> i do not understand you (( 04:40 < Deanveloper> I always enjoy thinking of how many Java things are made for Minecraft/Bukkit 04:41 < Deanveloper> Android and Minecraft are pretty much the two main things that I can think of off the top of my head that Java is used for 05:07 < Xor_Boole> Deanveloper also random Enterprise(tm) stuff 05:08 < SinZ> Deanveloper: theres always runescape 07:55 < Fenhl> are 1.8.2 and 1.8.3 still protocol version 47? 08:22 <+md_5> Fenhl yes 09:07 < Fenhl> md_5: alright, updated the wiki 10:15 < morfin> i am not sure is that possible to separate networking from server logics in Minecraft 10:18 < Fenhl> ¯\_(ツ)_/¯ 10:20 < morfin> everytyhing in Minecraft is very strongly associated: as example i want send chunk but to do that i should get data about chunk, build NBT, build packet, compress it and then send 10:24 < morfin> hmm 10:25 < morfin> should i dynamically compress every packet if size > Thereshold? 10:26 < dx> as opposed to statically compressing packets 10:26 < morfin> what do you mean statically compressing? 10:26 < morfin> compress only some packet types? 10:27 < dx> i made that up. it doesn't mean anything 10:33 < morfin> guys am i right: all models(and animations etc) are done with code 10:34 < morfin> but if i want to use custom models how server checks boundaries etc? 10:49 < morfin> i don't understand is there any way to separate networking and non-networking code 10:50 < dx> functions, classes, modules, packages, libraries 10:50 < morfin> seems like Minecraft is badly designed 10:51 < morfin> and i will need to mess networking and non-networking things :( 10:51 < dx> seems to me like you can't figure out how to write your own code 10:51 < morfin> or just let session only read/write packets 10:52 < morfin> but generate packets everywhere 10:52 < morfin> as vanilla server do 10:54 < morfin> as i know vanilla just use packet classes everywhere in code 11:10 < morfin> ok that's not basically minecraft question 11:11 < morfin> but still how server checks boundaries? 11:34 <+Amaranth> morfin: The protocol more or less started out as pulling pieces of single player out in to a server, hacking up a means to have multiple players, and then serializing the state of the engine to send over the wire 11:35 <+Amaranth> So it's challenging to have a drastically different engine design and keep the same protocol, yeah 11:38 <+Amaranth> If you want to keep the same behavior it's probably impossible 11:53 < morfin> hmm 12:47 < gurun> lol, i find this discussion really interesting: http://www.reddit.com/r/admincraft/comments/2fuhj7/i_am_a_minecraft_reverse_engineer_here_to_weigh/ 12:48 < gurun> especially the part: What I haven't done is looked at any decompiled Minecraft code. 12:48 < gurun> where someone replies: As someone who has worked with /u/sircmpwn I can confirm this, he is super strict about this stuff and has on occasion asked me and others to check the decompiled code for him. 12:48 < gurun> lol 15:05 < morfin> only thing i can think about is just repeating what vanilla Minecraft server do 15:06 < morfin> but that's very bad design 15:07 < morfin> i think i will need some networkmanager anyway to do that stuff 15:17 < gurun> morfin, what behavior are you looking for? 15:23 < morfin> i was thinking how do i separate worker threads code and code "generating" packets 15:23 < morfin> to avoid including packet classes everywhere in code 15:23 < gurun> conceptually, or? 15:25 < gurun> the only examples i have of that is inventories and chunks. They are drastically different representations within the server and the packets. 15:26 < morfin> what do you mean? 15:26 < morfin> oh you mean that chunks are being stored as several arrays(for ids,for light levels etc) but being sent as NBT? 15:26 < gurun> it means, that if i don't want to have "packets" in the core, i would have to have a layer inbetween the network and core of the business logic. I don't. 15:27 < morfin> btw i checked out: vanilla Minecraft(at least before) was storing blocks as plain array(!) 15:28 < gurun> well, i do MCPE, but it doesn't matter i think. I mean, that the represenation of a chunk within the server is object oriented, and have real serialize methods onthem to convert to a "wire format". 15:29 < gurun> but you could say the same about player position too. It's a packet, and i translate that to a position in a different but almost same) format. 15:29 < gurun> IF 15:29 < gurun> the protocol was consistent, i would simply make serialize/deserialize packets and make "location/position" a first class datatype in the protocol. 15:30 < gurun> like NBT, and the value maps. 15:30 < morfin> hmm i will add something between 15:31 < morfin> to serialize that crap 15:31 < gurun> but, design wise. You will find it very rare that in the server you have anything but "Packet handler methods". Beyond that, most packets never survive, but are translated to business logic. 15:32 < gurun> in my case, where i will eventually support both PC protocol and MCPE, i will have to introduce another layer. But the object model for that (messaging model) will most likely be based on the PE version anyway. 15:34 < morfin> only thing i am interested how modding guys implemented global/local chat etc 15:34 < morfin> i am not going to do PE 15:34 < gurun> so, you mean .. like for a plugin API? 15:35 < morfin> at least because it's totally different 15:35 < gurun> it's not totally differnt. 15:35 < morfin> no i mean default server just broadcast to anybody on server 15:35 < morfin> it's UDP ) 15:35 < gurun> no, you are mistaken about that. It is messaging. One transported over UDP, the other over TCP. 15:36 < gurun> they could just as well hae choosen .. SMS ehh 15:36 < morfin> hmm 15:37 < gurun> since the MCPE engine is more or less a ripoff of the vanilla game. And since as Amaranth most games just replicate "state" between clients, it doesn't differ much at all. 15:37 < gurun> when PE lacks documentation i look at the PC documentation. And that would be 99% of the time i guess. 15:38 < morfin> i think i will need lots of synchronization :( 15:38 < gurun> hmm, not more than anyone else? 15:39 < gurun> unless you are shooting for thousands of simultanious users, you can fall a sleep and still the server with good performance. 15:39 < gurun> s/still code the/ 15:39 < morfin> i am thinking about implementing server with good performance btw 15:40 < gurun> well, i do PE version which is the worse from that perspective, and i have performance probably better than anyone else already. So iẗ́'s not that difficult. 15:40 < gurun> the peformance i have doesn't come from thinking about the protocol and how to do that. 15:41 < gurun> it comes from thinking about how the virtual machine in .NET works, and not. 15:41 < morfin> well, if you use JVM/.NET VM you have to optimize some stuff 15:42 < morfin> i saw some guides about that, but did not understand much because not very familiar how VM actually works ) 15:42 < gurun> the stuff i optimized in the "VM" is the same stuff you would have to do in C too. 15:42 < morfin> like? 15:42 < gurun> it basically focus on one thing, don't create things you already have. Don't throw away stuff you need again. 15:42 < gurun> and repeat that endlessly. 15:43 < morfin> i can remember only GC optimization guides for .NET 15:43 < gurun> in C they call this reference counters. Autopointers in C++ i guess. 15:43 < morfin> ) 15:43 < morfin> hello shared_ptr,unique_ptr 15:43 < gurun> hello reusable memeory chunk. Hello good old FAT. 15:44 < gurun> hello .. object pool. 15:44 < morfin> reusable memory chunk? hmm 15:44 < gurun> well, that's what you do. Reuse the same memory over and over again. 15:44 < gurun> not having to allocate it again. 15:44 < morfin> i was thinking about that but decided don't think about that yet 15:44 < gurun> and even better.. not having to deallocate and cleanup. 15:45 < gurun> but, in order to do these things effecteivly, you need some "changes" to the protocol. Or maybe not changes, but make sure it works with the protocol. 15:45 < gurun> like entity ID. MUST be shared between all clients. 15:45 < morfin> hm? 15:46 < morfin> i thought it is 15:46 < morfin> at least on PC version 15:46 < gurun> yeah, because a packet with player move contains the entity ID. 15:46 < gurun> so in order to same the exact same binary copy to all clients, it obviously need to be the same ID on them all. 15:46 < gurun> Yes, i think PC had that. 15:46 < gurun> And most likely the PE would have that in the future too. 15:47 < morfin> and i know that things like Bungee Cord rewrite those ids 15:47 < gurun> but other things, like inventory ID's. IF they aren't big enough to contain all inventories for the whole world, the server code becomes ineffecient too. 15:47 < morfin> to avoid conflicts between different servers using same id 15:48 < morfin> i already started writing but don't understand some things yet 15:48 < gurun> yeah, that's like a NAT'ed network. 15:48 < morfin> and not sure i would not need to optimize 15:49 < gurun> yeah, but listen. If you didn't start writing it .. you have nothing to optimize. 15:49 < morfin> that's it 15:49 < morfin> that's why i do not think about using memory pool etc 15:49 < gurun> did you know that first (at least it's a claim) .. the first design pattern was: Make it work, stable, secure, fast - in that order. 15:49 < morfin> :D 15:50 < gurun> so when you are past stable .. if ever .. you can start thinking about the other stuff. And then ..repeat. 15:51 < morfin> do you know that optimizations can be pointless if server is IO bound? 15:51 < gurun> i know of no such things? 15:51 < gurun> (but i have plenty of money too) 15:52 < morfin> as example you use memory pool, object pools, etc but limited as example with network IO 15:52 < gurun> you mean .. like if i have my monster server using a mobile phone with GSM to do data traffic.. the IO becomes a bottleneck? 15:54 < gurun> in one of my tests (the normal test), the server spend 30% of the time waiting for socket.send to complete. 15:55 < morfin> i think even if having RAID of SAS/SSD drives and gigabit network IO would be slow 15:55 < gurun> so that tells me that i still hvae 70% i have direct influence over to optimize. 15:55 < gurun> and it tells me that i can shave off a good bit of latency and CPU by bying better hardware. 15:57 < gurun> but if you want to know the real boost in these things, it is the number of hyper 15:57 < gurun> (s) you have. How many threads in paralell. 15:57 < gurun> and then design the code to use it (which is the hardest part with MC) 15:58 < gurun> IO was never really the bottleneck 16:01 < gurun> morfin, it's kind of like this. If you monitor the tick time. Keep it at a steady avarage. And then it keeps steady until you hit 100% CPU. Then you know you have the right threading model. 16:01 < morfin> too many threads is bad) 16:03 < morfin> i was thinking about main thread+read(s)/writer(s) and some workers doing real work(handling packets, physics etc) 16:03 < gurun> too many threads are always bad. But so is everything that starts with "too many". However, "many" threads is good or bad depending on what you do. 16:03 < morfin> hmm 16:03 < gurun> and yes, sometimes running sync is faster. 16:04 < morfin> when? 16:04 < gurun> when the overhead of allocating new threads is more expensive than actually executing. 16:04 < gurun> that's why you use stuff like ThreadPool in .NET. Or connection pools with DB's, etc etc. 16:05 < gurun> and then there are threads and threads.. 16:05 < morfin> oh 16:06 < morfin> i just allocate 2 threads for reading and writing into network and number of workers equal to hardware_concurrency() 16:06 < morfin> oh wait only one reader/writer now 16:06 < gurun> and if you do something like socket.send in windows using completion ports.. it's async calls, but unsync context. So it's not threadsafe. So in a case like that i ended up doing async calls, but blocked them myself so they appear as sync. 16:07 < gurun> it works great with async of the sockets for small loads. But when you start hitting the limits of your network, it starts mixing the buffers and you'll trash the content. 16:07 < morfin> so what? 16:08 < gurun> that's just an example of when "threads" gets really nasty, because you are forced to use them, and then forced to do solution not to use it. 16:09 < morfin> i should check out how boost implemented IO using completion ports 16:09 < gurun> if you are on windows yes. 16:09 < morfin> i think they do something smart 16:09 < gurun> hmm, kind a. 16:09 < gurun> :-) 16:10 < morfin> anywat i will try with 1+hardware_concurrency() and then will play with threads 16:10 < morfin> *wanyway 16:10 < gurun> but IO is not really something that you can do much about. 16:11 < morfin> i can buy RAID controller and SAS drives), buy optical channel to internet)