10:33 < Grum> And the fun part. Almost all of them are "this was broken in the past and never noticed" 10:33 < WizardCM> xD 10:34 < Grum> Well... Fun 10:35 < WizardCM> bugs are always fun 10:35 < WizardCM> until you try to fix them 10:35 < WizardCM> then realise how complicated they are 10:35 < WizardCM> and give up 10:35 < WizardCM> :D 10:36 <+SpaceManiac> classic technique 10:37 < Dinnerbone> md_5: Thanks for the links I will look into it later 10:37 < Grum> Almost all issues are of block polling for meta data properties and assuming it of a certain type and then it actually was the wrong block 10:38 < Grum> So in the past it would have assumed properties of something but that something wasn't actually there 10:38 < Grum> And now. Booooooom 10:39 <+Amaranth> Kind of like that time you added iterators to everything and CMEs like crazy 10:39 < Grum> Yup 10:39 <+Amaranth> Then I added an iterator cache to make it hurt less and then you removed all the iterators :( 10:40 < Grum> Nice indication of fragile code 10:47 < Grum> Yogu: sorry for late answer, phone chat sucks ;) 10:47 < stuntguy3000> Grum: Switching onto the unrelated topic of Account Security, I [and a lot of other people] feel Mojang should implement stronger 2 Factor Authentication. Kudos for having Security questions, but I feel it is not enough. A good popular soultion is a QR Code system, using a system such as Google Authenticator. Is there anything you can do/anyone to speak to, to get this implemented? 10:48 < Grum> Yogu: the 'end goal' will be to know all known blockstates and then assigning the ones with ids as we use them and tell the client (this includes sending the 'mapping over' when we connect) 10:48 < Grum> stuntguy3000: you can poke the webdevs on twitter perhaps 10:48 < stuntguy3000> Who are they? 10:48 < Grum> stuntguy3000: i agree it would be nice but I also know they have other things that are not nice to have on their plates 10:49 < WizardCM> probably a list of them on mojang support 10:49 < Grum> yeah 10:49 < Fenhl> yeah, the security questions are useless 10:49 < stuntguy3000> WizardCM: Yeah found a list 10:49 < Grum> i'd have to go look it up too ;) 10:49 < Yogu> Grum: That's what I hoped for. But I suppose it will not be in 1.8, right? 10:49 < Grum> What I heard is that we plan to do a; "known location" system -- like Steam 10:49 < Grum> Yogu: nope 1.9 hopefully, requires a worldformat change 10:50 < Yogu> ok, thanks! 10:50 < WizardCM> what will that be, world format change number... 5? 10:51 <+Amaranth> People were getting all excited about the idea of having 32768 ids available (or 65536 if you go unsigned) only to learn you plan to occupy like half of them and if they make their blocks work like yours a single large mod will fill the rest :P 10:51 < Fenhl> counting from when? 10:51 <+Amaranth> WizardCM: Counting from indev? 10:51 <+Amaranth> Since alpha we've been through three formats 10:51 < Grum> WizardCM: will also be the last one 10:51 < Grum> because the idea is that we modularize the format 10:52 < WizardCM> since alpha is what i'd count, yeah 10:52 < Grum> so the chunks themselves will get a 'type id' 10:52 < Yogu> I was wondering about that, too. It wouldn't be a problem if the blockid-blockstate mapping will be per chunk column or so 10:52 < WizardCM> all good things 10:52 < Grum> Yogu: internally the only thing we store are BlockStates 10:52 < Grum> and they are mapped to a short 10:52 <+md_5> https://api.mojang.com/profiles/page/1 <--- why is this throttling by returning 204 no content 10:52 < Fenhl> and type id is versioned? 10:52 < Grum> (well char in java ..mmm unsigned) 10:52 < Grum> Fenhl: no 10:52 < Grum> but our plan is to make a 'reader/writer' system 10:53 < Grum> so we only write in 'certain formats' but we make readers for all old formats 10:53 <+md_5> sending the same request twice within ~5 minutes, gets a 204 as the response 10:53 <+Amaranth> btw looking up the Block/Tile for a given id is one of the most called things in the server 10:53 < Yogu> I was referring to Amaranth's comment about "short" being a bit little to store all blockstates that could occur in one world 10:53 <+Amaranth> Don't remember if it was #1 or not 10:53 < Grum> Amaranth: that is silly cheap now 10:53 < Grum> its an arraylist index -> BlockState 10:53 <+md_5> actually 10:53 < Grum> and the way back is an IdentityHashMap -> id 10:53 <+md_5> the web server is broke 10:54 <+md_5> its returning 204 even when there is content 10:54 <+Amaranth> Grum: if (id > 0 && id < stuff.size()) { return stuff.get(id); } else { return stuff.get(0); } is more of less what it is doing 10:54 < Grum> Yogu: well ideally with the 'typed chunks' we can make a type of chunks that allows for bigger ranges 10:54 <+Amaranth> And iirc it was like 5% of all CPU time, let me pull up the numbers 10:54 <+md_5> and setting Content-Length to 0, even though there is content 10:55 <+Amaranth> Although to be fair I think I figured out like half the time was just method call overhead which I suspect the JIT would normally have optimized out 10:55 < Grum> Amaranth: i think that is different now 10:55 <+SpaceManiac> Typed chunk system sounds intriguing 10:55 < Grum> @Override 10:55 < Grum> public V get(final K key) { 10:55 < Grum> final V v = super.get(key); 10:55 < Grum> return v == null ? defaultValue : v; 10:55 < Grum> } 10:55 < Grum> SpaceManiac: this would mean we can do palleted chunks, or a special chunk that is just for 'JUST AIR DAMMIT' 10:55 < Grum> and that chunk would just be 1 varint big 10:55 < WizardCM> ^ i like this idea 10:55 <+Amaranth> Grum: Yeah that's the same I think, I was just collapsing it into a simple thing 10:56 < Grum> Amaranth: that is deep in the guts for the mapping 10:56 < Grum> i dont think we use that anymore 10:56 < Grum> let me see 10:56 < Grum> public static final IdMapper BLOCK_STATE_REGISTRY = new IdMapper(); 10:56 < Grum> nope 10:56 < Grum> that one is just a hash null-returning bastard 10:56 <+Amaranth> Yeah that's what 1.7.10 has too 10:56 < Grum> nope 10:56 < Grum> this is new 10:57 < Grum> in 1.7.10 there is a public static final DefaultedMappedRegistry REGISTRY = new DefaultedMappedRegistry(DEFAULT_KEY); 10:57 < Grum> in snapshots we have that one *AND* the blockstate mapping 10:57 < Grum> and IdMapper is just: 10:57 < Grum> private final IdentityHashMap tToId = new IdentityHashMap(512); 10:57 < Grum> private final List idToT = Lists.newArrayList(); 10:57 < Grum> and yeah, there is a fuckton of virtual call overhead if you do not have jitted code 10:57 <+Amaranth> I was more or less collapsing the logic into a single bit of code 10:58 < Grum> well, the IdMap has no defaults 10:58 <+Amaranth> Instead of having the if and returning null then checking for null 10:58 <+Amaranth> Which is worse, really 10:58 < Grum> mm how do you mean? 10:58 <+Amaranth> That's an extra branch :P 10:58 < Grum> final V v = super.get(key); 10:58 < Grum> return v == null ? defaultValue : v; 10:58 < Grum> i dont see how you can do that more effective 10:59 <+Amaranth> I considered making it just return things.get(id & things.size()); and fuck anyone who goes over :P 10:59 <+Amaranth> But I guess you might have holes too 10:59 < Grum> problem is that in 1.7.x we have gaps 10:59 < Grum> we dont have gaps anymore 11:00 < Grum> and yes, that is what it will be 11:00 < Grum> if you ask for something that has no data ... BOOOOOM 11:00 < Grum> fuck you, dont do that 11:00 < Fenhl> Grum: ah, so you could use chunk type for versioning by simply deprecating one type in favor of another 11:00 < Grum> Fenhl: yup 11:00 < Dinnerbone> md_5: passed it on 11:00 < Grum> and the only 'code' we need to leave around is a way to read a certain 'type of data' 11:00 < mrapple> would you consider making it possible for servers to keep their custom tab lists? or at least some way of displaying the same information 11:01 < Grum> which is most likely going to be a super small conversion class 11:01 < Grum> mrapple: I think the most we should do is allow a 'displayname' 11:01 <+md_5> thanks, I tweeted Xlson too 11:01 <+Amaranth> Like Bukkit! :D 11:01 <+Amaranth> (which btw you also broke with that change) 11:01 < Grum> Amaranth: yes worldfolder names like bukkit hehehe 11:01 < mrapple> Grum: well, that's essentially what we have now. can we control the sorting? 11:01 <+Amaranth> Huh? I meant the player tab list display name 11:01 < Grum> mrapple: no 11:02 < mrapple> can you consider allowing that? 11:02 < Grum> no 11:02 <+Amaranth> Bukkit has API for that which at the moment won't work come 1.8 11:02 < Dinnerbone> You could control the sorting by having lots of teams sent to the client 11:02 < Grum> indeed 11:02 < Dinnerbone> And each player under each team 11:02 <+Amaranth> So I'll be happy with just getting the display name :D 11:02 < mrapple> oh, good point 11:02 < Dinnerbone> And with that, display names are done per team 11:02 < Grum> but the real thing you want is to be able to add extra information 11:02 < Dinnerbone> So you'd have that too 11:02 < Fenhl> but it does more, sounds like a good idea 11:02 < mrapple> does it accept fake UUIDs? 11:02 < Grum> Dinnerbone: can we let them set a 'server message' (like MOTD) that shows up above the tablist? -- multiline textcomponent? 11:02 < mrapple> Grum: we already have the boss bar for that 11:03 <+Amaranth> Grum: There really isn't room for that, is there? 11:03 < mrapple> the point behind the tab list is the toggleable-ness 11:03 <+md_5> Dinnerbone also something about the protocol: Please can you fail gracefully, ie: ignore / log to console. Crashing the client because of an incorrect team name is silly. 11:03 <+Amaranth> Don't break the state machine man 11:04 < Yogu> mrapple: I feel you're talking past each other. As I understand, the 'server message' will be only visible in the tab menu, so it is not the same as the boss bar. 11:04 < mrapple> Yogu: 11:05 < mrapple> we're more interested in the grid display capabilities of the tab list 11:05 < WizardCM> ^ 11:05 < mrapple> (sorry for the early return press) 11:05 < Dinnerbone> md_5: I can't do that sorry. I'm not going to ignore bad data from the server, if the server sends bad data and I ignore it then the behaviour will just be completely unknown 11:05 < Dinnerbone> If the server sent one bad thing, what else would it send wrong? 11:05 <+Amaranth> Grum: btw, guess what the most called method is for a 200 player server (or maybe 500, don't remember). MathHelper.floor(double) :D 11:06 <+md_5> does it still physically crash the client 11:06 < Dinnerbone> And what should the client do when things are then going to reference the now missing thing? 11:06 <+md_5> or just kick the player 11:06 < Dinnerbone> It should kick the player 11:06 < Spurlex> Grum on topic of Account Security. Would you ever implement security questions on launcher if “suspicious” activity detected by an IP (Login from multiple countries etc) 11:06 < mrapple> Dinnerbone: I haven't looked into the new tab behavior, but does it expand to a set size? 11:06 <+Amaranth> Spurlex: He mentioned something like Steam Guard 11:07 < Dinnerbone> It expands or shrinks to accomidate the list of users 11:07 < mrapple> what if there are more than 60 users though 11:07 < Spurlex> Haven’t used Steam so I will go google what that is. 11:07 < Dinnerbone> It sacrifices information on each element, like ping, to show more I think 11:07 <+Amaranth> Spurlex: First login on a "new" system generates an auth token which is emailed to you, if you don't enter it you don't get in 11:07 < Dinnerbone> After some point, based on the user screen size and stuff, it will just now show the remainder 11:08 < mrapple> hm 11:08 < WizardCM> hm indeed 11:08 < Dinnerbone> not show* 11:08 < Spurlex> That is a good idea. I’ve just seen an increase in giant alt lists being shared by tonnes of users. See http://MCAlts.com 10cents an account. 11:08 < mrapple> if it's not consistent will we not be able to reliably show info to users? 11:09 <+Amaranth> On the other hand I get a much nicer looking tab list :D 11:09 <+Amaranth> And maybe it'll even stop generating N^2 packets to update 11:09 < mrapple> sacrificing showing skin/ping is definitely nice 11:09 < mrapple> Amaranth: afaik you can send all tab list updates in one packet 11:09 < Dinnerbone> ^ 11:09 <+Amaranth> Finally ;) 11:09 <+SpaceManiac> Is showing skin on tablist a thing? 11:10 < Dinnerbone> Yes 11:10 < mrapple> Dinnerbone: does the skin disappear with the ping info after a certain theshold? 11:10 < Dinnerbone> The reason player list tab is "less customisable" now is because there's a central player info store between server and client. Player add packet is no longer as big as it was, because of this. The tab list uses this store now 11:10 < Dinnerbone> I don't think so 11:10 < Dinnerbone> I'm not sure if the ping even does, I can't remember 11:10 < Dinnerbone> I know scores do 11:10 <+Amaranth> So you no longer have to send the skin blob every time a player comes in to range, just once on join 11:11 < Dinnerbone> Yes 11:11 < Grum> yeah 11:11 < Grum> we're using the serverlist for 'good things now' 11:11 < Grum> so your abuse is no longer 'tolerated' :p 11:11 <+SpaceManiac> Useful 11:11 < Grum> and or easily to hack in 11:11 < Grum> it just made sense 11:11 < Grum> but i fully agree with custom display names 11:11 < mrapple> I understand your usage of it now, it's definitely good 11:11 < Grum> that is low impact 11:11 < Dinnerbone> http://wiki.vg/Pre-release_protocol#Player_List_Item 11:12 < Dinnerbone> (This page is becoming long. I like that.) 11:12 < mrapple> but allowing custom data display (along with display names) are my only requests 11:12 < mrapple> can we just send a fake UUID/name for fake information? 11:12 < Grum> no 11:12 < Dinnerbone> mrapple: I will let you provide an arbitrary multiline Component to display at the top of the player list 11:12 < mrapple> :O 11:12 < mrapple> that sounds fancy 11:12 <+Amaranth> Formatting is going to be impossible on that of course 11:12 < Fenhl> but does it do tables? 11:13 < mrapple> my only concern would be the loss of grid-like capabilities 11:13 <+Amaranth> Since resource packs can change fonts 11:13 <+md_5> Thinkofdeath you can harass them here now :p 11:13 < mrapple> I would much rather have custom information in the tab list than a multiline text component 11:13 < WizardCM> table is the best part 11:13 < mrapple> indeed 11:13 < dx> minecraft is getting a built-in html renderer? 11:13 <+md_5> Grum we've got that feedback you wanted, some chunk causes the client to crash, but only in latest snapshot 11:13 < Thinkofdeath> md_5: :P 11:13 <+Amaranth> dx: Stabbity stab 11:13 < dx> :D 11:14 < Thinkofdeath> http://i.imgur.com/jIoWUi5.png 11:14 <+SpaceManiac> Imagine how long it would take to decide on an API for *that*! 11:15 < WizardCM> for a html renderer? 11:15 <+Amaranth> Hey it only took 3 years for us to make a damage API that actually lets you modify armor reduction 11:15 < WizardCM> xD 11:16 < WizardCM> Amaranth: i guess 7 11:16 <+Amaranth> (you still can't modify damage boosters like sharpness and strength, go away) 11:18 < Fenhl> dx: btw are you dx on EsperNet too? 11:18 < dx> Fenhl: correct 11:18 < mrapple> Dinnerbone: I know you allowed v2 uuids for NPCs, would you consider allowing v2 uuids on the tab list for information display? 11:19 < mrapple> or v3 I guess 11:19 < Thinkofdeath> v3 == offline mode 11:19 < mrapple> right 11:24 < Fenhl> Thinkofdeath: might be related to https://bugs.mojang.com/browse/MC-61329 11:24 < Fenhl> the index error, that is 11:25 < Thinkofdeath> yeah anything built near the height limit causes it to crash on that chunk being sent 11:25 < Thinkofdeath> just tower up and relog to reproduce 11:26 < Dinnerbone> mrapple: it's all the same datastore 11:26 < Dinnerbone> It matters nothing if you used it to add en entity in the world or not 11:27 < WizardCM> Thinkofdeath: try raising the value by one in server.properties? 11:27 < Grum> md_5: hehe that is without compresssion? 11:28 <+md_5> Grum nope, this is stock standard Vanilla, = 256 11:28 <+md_5> read above for what Thinkofdeath is saying 11:28 <+md_5> just pillar to the top of the map 11:28 < Dinnerbone> mrapple: you will also now get a Component per user for a display name only in the tab list. It will not change sorting. Is this everything you'd need? 11:29 < Thinkofdeath> WizardCM: doesn't help 11:29 <+Amaranth> That means he can only do his custom display if he has 60 players on the server 11:29 <+Amaranth> Since his minigames are more like 20 players I suspect he won't be happy with it 11:31 < Dinnerbone> This is in addition to the custom Component he can display at the top 11:31 <+sadimusi> it won't take long until someone builds a service which distributes valid skin blobs just for this purpose :D 11:33 < WizardCM> lets by 3000 alts in preparation 11:33 < WizardCM> (not really) 11:33 < WizardCM> buy* 11:37 < mrapple> Dinnerbone: have I ever mentioned that I really do love you? 11:38 < mrapple> Dinnerbone: quick question, would you consider not showing skins on the tab list if it's v3 (offline mode)? not sure if that's the behavior already, just an idea 11:38 < eddyb> hey Dinnerbunny :) 11:39 < eddyb> "Chunks now use block states instead of metadata" 11:40 * eddyb hopes that means there's 16bit -> block states mappings now 11:40 < Thinkofdeath> mrapple: looks like that is how it works currently 11:40 < Thinkofdeath> eddyb: Pretty sure there is an array somewhere for that 11:41 < mrapple> ah good to hear. any insight on how the tab list scales with 60+ or 100+ players Thinkofdeath? i was going to work on upgrading the python protocol to investigate 11:41 < Thinkofdeath> mrapple: haven't tested yet 11:41 < mrapple> are you able to spin up a bunch of clients? 11:41 < Thinkofdeath> eddyb: something like array[id << 4 | data] in one of the classes 11:41 < eddyb> Thinkofdeath: well, that's in the code 11:42 < Thinkofdeath> mrapple: not really, could fake them 11:42 < mrapple> we usually use this to test lots of players, I'll probably update it sometime this week I guess https://github.com/YukonAppleGeek/spock 11:43 < WizardCM> ooooh 11:43 < WizardCM> i like this 11:43 < WizardCM> i should use it 11:44 < mrapple> here's a working branch https://github.com/nickelpro/spock/tree/patch-1 11:46 < mrapple> Dinnerbone: one other idea, I know the tab list max used to be configurable in server.properties with max players, any possibility of keeping that around? I'll investigate the scaling with large numbers of players later this week, but having some consistent maximum would be ideal I suppose 11:46 < Thinkofdeath> mrapple: bah can't fake it, having multiple players with the same skin blob hides the extras 11:46 < Thinkofdeath> and the skin icon 11:46 < mrapple> what? 11:46 < mrapple> just make new UUIDs 11:46 < Thinkofdeath> I am 11:46 < Thinkofdeath> its using the ones in the blob 11:47 < mrapple> how does offline mode work then...? am I missing something? 11:47 < Thinkofdeath> hmm maybe I am, this doesn't work in offline mode either. 11:47 < Thinkofdeath> might of messed up somewhere 11:47 < mrapple> how are you faking them? just multiple MC clients? 11:48 < Thinkofdeath> just faking the packets 11:53 < Thinkofdeath> mrapple: I was wrong about offline mode, steve icons 11:53 < Thinkofdeath> mrapple: also 60 players http://i.imgur.com/aEEOlbY.png 11:53 < mrapple> Thinkofdeath: sweet, what happens over 60? 11:54 < Thinkofdeath> mrapple: 200 http://i.imgur.com/SC62pJ8.png 11:54 < Thinkofdeath> so readable 11:54 < mrapple> yikes 11:55 < Dinnerbone> I'll try and cap it 11:55 < mrapple> Dinnerbone: a configurable cap or a hardset of 60 would be nice :P 11:56 < mrapple> Dinnerbone: would it be too much to ask to disable skins for offline mode (and possibly a way to disable ping as well)? 11:57 < Dinnerbone> I will look into it. 11:57 < mrapple> thank you sir, I appreciate it 11:57 <+md_5> hardset 60 imho 11:57 < Thinkofdeath> http://i.imgur.com/7AIPeyZ.png 2000 players, bungee's global ping is no longer an option lol 11:57 < mrapple> lol 11:57 < Spurlex> Looks good to me Thinkofdeath 11:58 < Thinkofdeath> god the fps drop just from rendering that 11:58 < Dinnerbone> md_5: 60 might be bad in default res but good in higher 11:58 <+md_5> whatever you do, hardcode a cap 11:58 < mrapple> Dinnerbone: I believe this is 60 in default res, eh Thinkofdeath? http://i.imgur.com/aEEOlbY.png 11:59 < Thinkofdeath> yep 11:59 < mrapple> looks pretty good to me 11:59 < WizardCM> bah 11:59 < WizardCM> gg internet 11:59 < WizardCM> what did i miss? 11:59 < Thinkofdeath> although my GUI is different 11:59 < mrapple> dinnerbone being a dinnerbuddy 11:59 < Spurlex> dinnerbae 11:59 < Thinkofdeath> oh large == auto at this res anyway 12:00 < WizardCM> where's the channel logged to? 12:00 < Thinkofdeath> no one knows 12:00 < Fenhl> lol 12:00 < Thinkofdeath> we never found it 12:00 < WizardCM> xD 12:01 < dx> he's serious though 12:01 < Fenhl> well that would explain why it crashes on our Survival but not on Creative 12:01 < Fenhl> Survival has a tower up to y=255 near where I logged out before the update, Creative doesn't 12:02 < Thinkofdeath> Hopefully b has a fix for that 12:05 < Dinnerbone> Yeah it's fixed for b 12:05 < Thinkofdeath> \o/ 12:05 < Fenhl> wheee --- Log closed jeu. juil. 10 12:11:58 2014 --- Log opened jeu. juil. 10 12:18:38 2014 12:18 -!- Irssi: #mcdevs: Total of 136 nicks [1 ops, 0 halfops, 11 voices, 124 normal] 12:20 < WizardCM> yay i killed the channel :( 12:20 < Dinnerbone> Dammit WizardCM. 12:20 -!- Irssi: Join to #mcdevs was synced in 138 secs 12:20 < WizardCM> i do it so frequently 12:20 < WizardCM> it's like a plague 12:21 < Thinkofdeath> I'm sure we can find a new thing to start complaining about 12:21 < Thinkofdeath> oh how about the create inventory action packet, that one kills for creative servers 12:23 < Dinnerbone> The what does the who with the when now? 12:23 < WizardCM> Dinnerbone: all the things with everyone all the time 12:24 < Thinkofdeath> Dinnerbone: letting the client send raw unfiltered nbt :/ 12:24 < Thinkofdeath> you said you wanted protocol suggestions :P 12:24 < Dinnerbone> :( 12:25 < Dinnerbone> It's not filtered but it is validated somewhat 12:25 < Dinnerbone> It can't get too big, I think 12:25 <+md_5> Thinkofdeath we can nag dinnerbone re: movement as well 12:25 < eddyb> https://twitter.com/TheMogMiner/status/484698708492451840 does this mean minecraft is not (yet) using VBOs? 12:25 <+md_5> Dinnerbone the limits are WAAAAYA to big 12:25 < Dinnerbone> Haha that's a deep engine change 12:25 < Thinkofdeath> Dinnerbone: Yeah but certain items/attributes crash the client 12:25 <+md_5> s/to/too 12:25 <+md_5> Dinnerbone creative mode should only allow id, amount, data 12:26 <+md_5> not arbitrary NBT 12:26 < yawkat> Aw no bot 12:26 < eddyb> I guess I didn't dive in deep enough into the client-side code 12:26 <+SpaceManiac> Haha, people in bukkitdev have taken to complaining the player speed limits are too small 12:26 < eddyb> s/in// 12:26 < yawkat> SpaceManiac: what 12:26 < yawkat> Why would they be too small? 12:27 <+SpaceManiac> Some devs just want players to go really, really fast 12:27 < Fenhl> Dinnerbone: might want to mark https://bugs.mojang.com/browse/MC-61128 as resolved then 12:27 < Dinnerbone> Thanks, I didn't see the ticket 12:29 < Thinkofdeath> Dinnerbone: about movement: could you make it not tick the player, that would at least fix the fast health regen/eating issues 12:29 < Dinnerbone> No, sadly 12:29 < Dinnerbone> I've tried that many times 12:29 < Dinnerbone> The ticking stuff is too complex to fix still 12:29 < Thinkofdeath> I've tried too :/ 12:31 < Fenhl> Dinnerbone: also the two I reported are probably fixed then, too 12:32 < eddyb> task '
' failed at 'called `Option::unwrap()` on a `None` value', /home/rustbuild/src/rust-buildbot/slave/nightly-linux/build/src/libcore/option.rs:265 12:32 < eddyb> okay, so something changed :D 12:40 < eddyb> wait, no, that was me being stupid 12:41 < Spurlex> Dinnerbone: Can you please make security questions on the MC Launcher if you login from multiple IP’s (Or a new computer or something) 12:41 < cindy_k> Thinkofdeath, for creative, do you mean how people some how manage to do this: http://i.imgur.com/8YlWJAk.png 12:41 < Thinkofdeath> yep 12:41 < cindy_k> A player gave me that. :/ luckily it doesn't seem to be crashing the server. 12:42 < MrARM> Well, give? 12:42 < Thinkofdeath> We cap display names/lore in spigot now 12:42 < eddyb> Thinkofdeath: I don't see block states mappings anywhere 12:42 < Thinkofdeath> bukkit does filtering too 12:43 < eddyb> I have to wonder what they meant by "chunks use block state now" - is it something internal to the code and not affecting region files at all? 12:44 < WizardCM> cindy_k: wat 12:44 < WizardCM> dat potion though 12:44 < WizardCM> what does it give you when you drink it? 12:44 < Thinkofdeath> eddyb: ary.d 12:45 < Thinkofdeath> looks like its filled a runtime 12:47 < WizardCM> ...well THAT shouldn't happen in single player http://wizrd.tk/9povw8 12:48 < WizardCM> thank goodness for F3+A 12:51 < Thinkofdeath> eddyb: http://hastebin.com/kulubelamo.css 12:54 < WizardCM> fail http://minespy.net/api/3dfront/Dinnerbone/reflect 12:54 < eddyb> Thinkofdeath: where is that from O_O? 12:54 < Thinkofdeath> eddyb: I just generated it from that class 12:54 < eddyb> with what? 12:54 < Thinkofdeath> eddyb: http://hastebin.com/jumuhomexo.vala 12:55 < Fenhl> that looks like a potion you shouldn't drink 12:55 < eddyb> Thinkofdeath: haha 12:55 < eddyb> I see 12:56 < Thinkofdeath> just depend on the client/server and run that == full list :) 12:56 < eddyb> Thinkofdeath: thanks a lot :) 12:56 < Thinkofdeath> np :) 12:56 < eddyb> I wonder if I can redistribute *just* that list 12:57 < Dinnerbone> And IDs in memory are just id << 4 | data 12:58 < Thinkofdeath> yeah for some reason that took me longer than a care to admit to work out with the previous snapshot :P 12:58 < Thinkofdeath> *than I 12:59 < eddyb> Dinnerbone: | add << 12. and yeah, I wouldn't store id/data 12:59 < eddyb> I'm so tempted to just hack together some JSON loading code and render all the solid blocks in, uhm, a debug world, I guess 13:00 < Dinnerbone> Why not just, uh, load the debug world? 13:00 < Dinnerbone> It has every possible block in every possible state 13:01 < eddyb> Dinnerbone: this is a toy minecraft client I'm writing :) 13:01 < eddyb> I guess I wouldn't have to load the debug world, but just do the exact same thing 13:01 < eddyb> I have to rewrite the render code anyways, before I can play with it 13:02 < Dinnerbone> The list that Thinkofdeath gave you is not the complete list of every possible block in the game 13:02 < Dinnerbone> It's the ones that we're currently able to store, given legacy compatibility 13:02 < Dinnerbone> At runtime we flesh blocks out to their real state 13:03 < eddyb> I remember sadimusi showing me some other classes, with, like, redstone states 13:03 <+sadimusi> this one? https://gist.github.com/sadimusi/f56d67b385a5ba5b8da6#file-cep-java 13:04 < eddyb> yeah, that 13:04 < eddyb> doesn't look like "block state" to me 13:05 <+sadimusi> those might just be the names of the models or something 13:05 < eddyb> but isn't redstone rendered from one texture? or two, I guess 13:06 < eddyb> Dinnerbone: btw, I see "leaves2". will that turn into leaves with more than just 16 block states? 13:07 <+sadimusi> eddyb: I can't find those two classes in the new snapshot anymore, it might just have been some legacy stuff 13:08 < eddyb> and it would be nice, whenever worlds start storing mappings, to have everything packed together (there's so many blocks that don't use 15 of their "data values") 13:08 < eddyb> sadimusi: oh. what's in that "ary" Thinkofdeath found, btw? 13:08 < Dinnerbone> and it would be nice, whenever worlds start storing mappings, to have everything packed together (there's so many blocks that don't use 15 of their "data values") 13:08 <+sadimusi> ary looks like the block class 13:08 < Dinnerbone> Data doesn't exist anymore. 13:08 < Dinnerbone> Blocks don't waste data values. They don't have data values to waste. 13:09 < eddyb> Dinnerbone: well, I know that 13:09 < Dinnerbone> There's nothing to pack. They're using what they're using. 13:09 < WizardCM> i am SICK of crappy internet :( 13:09 < eddyb> but there is no 0xd1-0xdf, just 0xd0, gravel 13:19 < WizardCM> i'll just leave this to fill the silence http://www.questionablecontent.net/view.php?comic=2743 13:32 < eddyb> well, that was an awkward pause 13:32 < WizardCM> quite 13:32 < WizardCM> my filler didn't help either 13:32 < eddyb> I meant to give a few more examples 13:33 < WizardCM> fascinating 13:33 < WizardCM> tell me more 13:33 < WizardCM> :P 13:34 < WizardCM> ooooh, i just remembered something i'd love changed in minecraft 13:35 < WizardCM> the client-side chat limit 13:35 < eddyb> and mention that I wouldn't really want random mod blocks occupying those unused slots 13:35 < WizardCM> 100 characters isn't enough for a sentence sometimes 13:36 < WizardCM> the debug world, is that fully generated on load, or does it require exploration? 13:37 < Dinnerbone> Neither, technically. 13:37 < Dinnerbone> It doesn't store all the blocks to disk, they're calculated at runtime because it's the debug level type 13:37 < WizardCM> ah 13:37 < WizardCM> so copying to 1.7.10 wouldn't work? 13:37 < Dinnerbone> Most of the blockstates in the world can't be serialized to disk 13:37 < Dinnerbone> No 13:38 < WizardCM> alright 13:38 < WizardCM> makes sense 13:38 < WizardCM> what a large collection of flames 13:38 < Dinnerbone> And each one unique! 13:39 < WizardCM> i was about to say f3 doesn't work on blocks in spectator while using debug, then remembered that fire doesn't have collision so it can't be checked 13:39 < WizardCM> xD 13:39 < eddyb> wait, so it's not even a world 13:39 < eddyb> but a world provider 13:40 < eddyb> Dinnerbone: I'm intrigued. what is such an unserializable block state? 13:40 < Thinkofdeath> fences 13:40 < WizardCM> good to see the wool colour and model names finally match 13:41 < eddyb> Thinkofdeath: as in, the various visual states that depend on neighboring blocks and don't get saved by themselves? 13:41 < Thinkofdeath> yep 13:43 < WizardCM> can't wait to start making a texutre pack in this world 13:43 < WizardCM> it's going to be so much fun 13:44 < eddyb> Thinkofdeath: I'm more interested in whatever is and will be serialized 13:45 < Dinnerbone> Eventually: All the block states. 13:45 < Dinnerbone> Right now: only the ones that are currently serialized. 13:45 < eddyb> I don't expect declarative rules for all those neighbor-dependent block (render?) states 13:45 < Dinnerbone> Well you should 13:46 < Dinnerbone> They are their own block state 13:46 < Dinnerbone> They should be serialized so that things don't have to keep looking around it to figure out what it really is 13:46 < eddyb> Dinnerbone: no, I mean, the update logic 13:47 < eddyb> all the redstone_wire "render" states depend on the placement of adjacent (and diagonal, I guess) redstone_wire blocks 13:47 < Dinnerbone> Yes 13:48 < eddyb> you'd have to JIT the code for handling that if you were to describe the rules in JSON 13:48 < Dinnerbone> I think you've completely missed the idea of block states. 13:48 < Dinnerbone> :D 13:48 < eddyb> I'm talking about rules, not states :P 13:48 < Dinnerbone> You can't describe their rules that easily 13:49 < Dinnerbone> (And they aren't just visual states. There's no difference between a block state for rendering or for existing in a world. It's the same thing.) 13:49 < WizardCM> Dinnerbone: out of curiosity, what would need to be done to allow the ability for players to send messages longer than 100 characters? 13:49 < Dinnerbone> WizardCM: me increasing this constant from 100 to x 13:49 < eddyb> Dinnerbone: contextually unambiguous states :P? 13:49 < WizardCM> funny story, those two messages we both just sent are both 140~ characters 13:50 < WizardCM> we wouldn't be able to send them if this was minecraft 13:50 < WizardCM> xD 13:50 < Dinnerbone> "WizardCM: me increasing this constant from 100 to x".length == 51 13:50 < WizardCM> no i mean right before that :P 13:51 < eddyb> I wonder if we'll be able to keep weird stair configurations in the future 13:51 < Dinnerbone> eddyb: there is never any ambiguity. There is no need for context. 13:51 < eddyb> like, the ones with just a corner showing 13:51 < eddyb> without needing the right configuration around the block in question 13:51 < WizardCM> probably only with set commands and such 13:51 < Dinnerbone> A blockstate is "red glass pane connecting on east and west", not "red glass pane and figure the rest out for yourself" 13:51 < WizardCM> xD 13:52 < Dinnerbone> It will be stored in the world as "a red glass pane connecting on east and west" 13:52 < Dinnerbone> And when things ask it what it is, it'll say "a red glass pane connecting on east and west" 13:52 <+SpaceManiac> Oh no, less convenient "the client figures it out for me"! 13:52 < WizardCM> ^ which is what it does in 1.7 and earlier, right? 13:52 < Dinnerbone> When something changes next to it, it'll re-evaluate that and realize it's now "a red glass pane connecting on east, west and north" 13:53 < eddyb> Dinnerbone: makes complete sense :) 13:53 < eddyb> some things are possible now, at least in the absence of block updates 13:53 < Dinnerbone> Right now every time you ask it for its boundingbox (happens lots and lots), or to render it, it has to check every block around it to find out what it really is 13:53 < eddyb> Dinnerbone: whoa, no caching? 13:53 < Dinnerbone> Cache where? 13:54 < Dinnerbone> What is there to cache to? 13:54 < eddyb> hah, very good point 13:54 < yawkat> well now it caches that state so it doesn't have to reeval, right? 13:54 < Dinnerbone> SpaceManiac: the server still had to figure it out currently 13:54 < Dinnerbone> Not just the client. 13:54 < eddyb> without block states, you would need like an Object per block 13:55 < eddyb> which is a nono 13:55 < WizardCM> so i'm guessing that torch-on-bottom-slab thing was a bug then? 13:57 < eddyb> Dinnerbone: sorry for sounding so obtuse :D. this is all very awesome and I'm glad I can soon be lazy and render most things in a vanilla world without listing blocks or items anywhere :) 13:58 < WizardCM> ^ very much this 13:58 < WizardCM> the questions are because we are excited 13:58 < WizardCM> also that was an unexpected crash http://wizrd.tk/q78pja 13:59 < eddyb> I do wonder if there isn't too much NBT stringly-typed data and how that gets handled at runtime, but it shouldn't show up unless you have several hundreds of entities 14:00 < Thinkofdeath> Dinnerbone: Would you consider the model format stable now? Kinda want to start using it :) 14:00 < WizardCM> Thinkofdeath: wasn't that stated in a tweet recently? 14:01 * Thinkofdeath doesn't follow tweets 14:01 < Dinnerbone> Yes, as we said on the blog post for the snapshot and that the comment saying "it's unstable" was removed, it's now considered stable 14:01 < Thinkofdeath> \o/ 14:01 < Thinkofdeath> I can work on remove things like this then https://github.com/thinkofdeath/ThinkMap/blob/master/core/shared/src/main/java/uk/co/thinkofdeath/thinkcraft/shared/block/blocks/BlockFence.java#L73-L113 14:02 < WizardCM> i don't remember when i remember reading that it's finalised 14:02 < WizardCM> oh right 14:02 < WizardCM> yeah 14:02 < WizardCM> blogpost 14:02 < WizardCM> "The new block model format for resource packs can be considered stable and ready to use." 14:02 < WizardCM> silly Thinkofdeath not reading :P 14:03 * Thinkofdeath may have just decompiled the snapshot and forgot to read the post 14:04 < Dinnerbone> You didn't see that all the model .jsons got modified to remove the "warning this is not final"? :p 14:04 < yawkat> Thinkofdeath is a robot that hasn't mastered reading English yet 14:04 < WizardCM> you could also follow https://twitter.com/WizardCM/lists/minecraft-dev 14:04 < WizardCM> or, 'subscribe' to it 14:04 < WizardCM> i just have a column in tweetdeck for it 14:04 < Thinkofdeath> Dinnerbone: I have actually looked at the models yet either, I just know that they exist :P 14:04 < Thinkofdeath> *haven't 14:05 < Thinkofdeath> tbh I should have looked there first 14:07 < WizardCM> hmm, i need some tea 14:07 < WizardCM> time to also check if there are any cool new irc clients for windows phone 14:16 < WizardCM> answer to that is no, bummer 15:55 < Xor_> hmm, apparently I missed the protocol debacle 15:55 < Xor_> le sad 16:07 < WizardCM> Xor_: you can still contribute 16:07 < WizardCM> just people aren't watching the channel as heavily 16:07 < Xor_> ok 16:07 * Xor_ tries to think of the worst thing in teh protocol 16:07 < Xor_> mostly annoyed because the fun part happened while I slept 16:08 < Dinnerbone> The part where we all joined the circus? 16:08 < Dinnerbone> That was pretty crazy. 16:08 < Dinnerbone> I'm going to treasure that night forever. <3 16:08 < WizardCM> eh, circus never seemed very interesting to me tbh 16:08 < Xor_> oh Dinnerbone 16:09 < Xor_> shame next minecon is in europe, won't get to hug you again for a while 16:09 < WizardCM> next one should be in australia 16:09 < WizardCM> just sayin' 16:09 < Xor_> Dinnerbone actually, why do you drop air-right-clicks if there's no item server side? 16:10 < Xor_> had to make a hack to get around that bit 16:11 < Xor_> TIL `^` is allowed in nicknames 16:15 < Spurlex> #Minecon4AustraliaPlz 16:17 < Xor_> well, if it's un australia, it will force md_5 to turn up, but I live on the other side of the world =( 16:17 < Xor_> florida was so convinient 16:18 <+sadimusi> Is there anything interesting going on there? From what I've seen it looks like a bunch of 13 year old asking stupid questions 16:18 < WizardCM> ... 16:18 < WizardCM> where? 16:18 < Xor_> I don't even 16:19 < WizardCM> oh at minecon 16:19 < WizardCM> yeah panel Q&As tend to be like that 16:19 <+sadimusi> yeah, not australia in general :D 16:19 < WizardCM> sometimes you get some really good questions 16:19 < WizardCM> but usually it's something like "y u so slow dev, i want backpacks and rainbows" 16:20 < stuntguy3000> I want some wam. 16:20 < stuntguy3000> Or however that question went 16:20 < Xor_> minecon was interesting 16:20 < WizardCM> actually, my guess is the next minecon will have a lot of EULA questions 16:20 < stuntguy3000> Minecon is a waste of time. 16:20 < WizardCM> "y u hate community and servers, you're destroying minecraft" 16:20 < Xor_> but I hung out mostly around the spigot booth 16:20 < stuntguy3000> Each panel is 45 of googleable questions 16:20 < stuntguy3000> 45 minutes* 16:20 < WizardCM> mhm 16:20 < Xor_> idc about panels 16:20 < WizardCM> ^ 16:21 < Xor_> I just like running into people form IRC 16:21 < WizardCM> you go for the people 16:21 < stuntguy3000> I can't go, so its panels or nothing :P 16:21 < Xor_> and getting to hug db 16:24 < Spurlex> I just want australia so I can go to it 16:24 < Spurlex> I will fly from New Zealand to australia >:) 16:26 < Xor_> and now I realize redstonetorch_off is not displayed by the client. 16:26 < Xor_> oh, protocol 16:26 * Xor_ stabity stab 16:30 < cindy_k> now xor_ you need things to keep you busy 16:31 < cindy_k> if it was easy you would be bored 16:31 < Xor_> cindy_k what are you doing in here? 16:31 < Xor_> dammit she found me 16:31 < cindy_k> sharing pretty pictures 16:31 < Xor_> redstone lamps are not available in on form in inventory? q.q 16:32 < Xor_> but I want to abuse it for an idicator! 16:32 < cindy_k> you can w/e them in that way 16:32 < cindy_k> oh you mean for a menu 16:34 < Xor_> cindy_k q.q 16:34 < Xor_> using glowstone for on-state instead 16:36 < WizardCM> woo 14w28b is out 16:36 < WizardCM> whoa 16:36 < WizardCM> so many bugs fixed 16:36 < Xor_> time to alert Thinkofdeath 16:36 < WizardCM> Dinnerbone, Grum: you work faast sometimes 16:37 < Xor_> WizardCM they're devs, like all of us: black boxes that convert alcohol/coffee/manga into software 16:37 < WizardCM> manga 16:37 < WizardCM> xD 16:37 < WizardCM> very nice 16:37 < Xor_> that's libraryaddict 16:37 < Xor_> he's a special kind of dev 16:37 < WizardCM> ah 16:37 < WizardCM> xD 16:37 < Dinnerbone> None of the above for me :) 16:38 < Xor_> Dinnerbone I do water =p 16:38 < WizardCM> yeah i don't drink either 16:38 < WizardCM> nor do i like coffee or manga 16:38 < Xor_> is -> software better? 16:39 < Spurlex> Dinnerbone can I have your furni on Habbo 16:39 < Spurlex> plz 16:39 < WizardCM> xD 16:39 < Xor_> Spurlex well, I knew dinnerphone had phans 16:39 < dx> uh guys please don't ping him for dumb stuff 16:40 < Spurlex> are you saying furni on habbo is dumb 16:40 < Spurlex> :'( 16:40 < dx> yes 16:40 < Xor_> kek 16:40 < Xor_> he spoke, the masses answered 16:40 < Thinkofdeath> ooh new packet 16:40 * Thinkofdeath has no idea what it does 16:40 < Xor_> Thinkofdeath I never like it when you're excited about the protocol 16:40 < dx> shiny new packet 16:40 < WizardCM> Thinkofdeath: how are you so fast 16:40 < shoghicp> this reminds me of mcpe updates :D 16:40 < Xor_> that usually ends with several burning JVMs 16:41 < cindy_k> shh xor_ it keeps him busy 16:41 < shoghicp> at least we have the name there ;) 16:41 < Thinkofdeath> WizardCM: its mostly automated now :) 16:41 < Xor_> WizardCM he has a fancy remapper 16:41 < Dinnerbone> You can have my furni for 5 bobba 16:41 < WizardCM> xD 16:41 < Spurlex> :O 16:41 < Xor_> DInnerbone you moving again, or is this the stuff from your old place? 16:41 < Spurlex> I trade you 2 ducks for HC sofa plz 16:42 < Xor_> or is this something completely unrelated 16:42 < Dinnerbone> Unrelated babble. 16:42 * Xor_ is baffled 16:42 < WizardCM> Xor_: http://habbo.com 16:43 < WizardCM> i find it funny that they have an iPad version 16:43 < Xor_> I see... 16:43 * Xor_ goes back to dicking around with ProtocolLib 16:49 < Thinkofdeath> hmm something changed with the tab list 16:49 < WizardCM> sneaky, sneaky 16:50 < WizardCM> better spacing between face and name, maybe? :P 16:50 < Spurlex> So with the tab list its changing in 1.8 right? So you guys advise that I shouldn’t bother making mine look fancy? 16:50 < Xor_> Thinkofdeath you were here when apple asked grummy for that one thing 16:50 < WizardCM> Spurlex: depends, if you're on bukkit.. could be MANY months before a 1.8 version of that is out 16:50 < WizardCM> and so many changes 16:50 < WizardCM> i'd say it's safe to customise it 16:50 < yawkat> Thinkofdeath: my bet is tab list size pcket 16:50 < yawkat> s/pc/pac 16:53 < Spurlex> Also anyone know why you can see glass above particles such as this http://file.spurlex.com/9UIQ/1YdK0xtZ 16:53 < Xor_> more render shit 16:53 < WizardCM> isn't that how particles have always been? 16:53 < WizardCM> rendered incorrectly? 16:53 < Xor_> I pitty the fools that have to fix that 16:53 < Xor_> minecraft render code is the most horrible thing ever 16:54 < Xor_> I expect that if anyone manages to fix it it'll be ryan 16:54 < Spurlex> Ookay I never noticed. Glad its not just me ;D 16:55 < WizardCM> Thinkofdeath: how goes exploration 16:55 < Thinkofdeath> working on it, hitting an issue atm 16:56 < Thinkofdeath> "fieldSize is too long! Length is 65280, but maximum is 30" no idea where that is from 16:59 < Thinkofdeath> well I know this much, the tab list allows for "display names" 17:09 < WizardCM> maximum is 30.. prefix and name? 17:09 < WizardCM> or is that 30 just for display name 17:34 < WizardCM> Thinkofdeath: any new stuff or still stuck? 17:36 < Thinkofdeath> http://wiki.vg/Pre-release_protocol#14w28b working on the new packet now 17:40 < Thinkofdeath> And the new packet http://i.imgur.com/KtwMMxN.png 17:41 < Thinkofdeath> http://wiki.vg/Pre-release_protocol#Player_List_Header.2FFooter 17:43 * Thinkofdeath hugs Dinnerbone and Grum 17:43 < Xor_> s/hug/huggle 17:43 < Spurlex> Interesting. 17:46 < Aragas> lol. nice 17:48 * Dinnerbone cuddles Thinkofdeath 17:48 < Thinkofdeath> :D 17:54 < WizardCM> oh that's pretty sweet 17:54 < WizardCM> even for a v1 18:05 < Drainedsoul> looks like a bunch more conditional parses 18:10 < WizardCM> Thinkofdeath: is it width limited? 18:10 < WizardCM> (probably based on player list, right?) 18:11 < Thinkofdeath> Haven't checked, I will once I've fixed something else 18:29 < Thinkofdeath> WizardCM: no limit 18:30 < WizardCM> o.O 18:30 < Thinkofdeath> it wraps onto a second line if needed 18:30 < WizardCM> but the width is based on the actual list of players, yeah? 18:30 < WizardCM> or does it stretch even if there's a max limit of 1 or 2 18:30 < Thinkofdeath> WizardCM: http://i.imgur.com/aG1aKkc.png 18:31 < WizardCM> ahhhh 18:31 < WizardCM> i like 18:31 < WizardCM> very nice 18:31 < HisShadow> Thinkofdeath: so much cake 19:00 < mrapple> Thinkofdeath: how do things look with 60 or 100 players? 19:02 < Thinkofdeath> mrapple: still bad 19:02 < Thinkofdeath> mrapple: http://i.imgur.com/TWxi267.png 19:03 < mrapple> damn :( 19:04 < Thinkofdeath> looks like steve is gone in offline mode 19:04 < Thinkofdeath> *steve icon 19:06 < mrapple> nice 19:06 < mrapple> Dinnerbone: any thoughts about a hardcoded limit of 60 for the next snapshot? 19:07 < Dinnerbone> I will look into it but not this week 19:12 < mrapple> ok, would you like me to file a bug report so it doesn't get lost? 19:27 <+Amaranth> Oh yeah, the limit is client side now so I can't fix it 19:27 <+Amaranth> I think that was my first contribution to CraftBukkit 19:30 < Xor_> wonder whatever happened to shaders 19:30 < Xor_> I was hoping we'd get the ability to create them in resource packs and set them on the clicnet 19:31 <+Amaranth> You can add them in resource packs, can't you? 19:31 < Xor_> don't think so 19:31 < Xor_> ping one of the devs and ask them =p 19:31 <+Amaranth> But you have to client the button to randomly choose one 19:32 <+Amaranth> And it's "just" post processing effects 19:32 < Xor_> Amaranth they said that button was a demo anyways 19:32 <+Amaranth> Sure 19:32 <+Amaranth> Some of the effects actually get used in 1.8 iirc 19:32 < Xor_> and erik said that they would add them to resource packs because "they're a resource" 19:32 <+Amaranth> When you're spectating 19:32 < Xor_> Amaranth yeak, spec mode on mods 19:32 < Xor_> s/mods/mobs 19:33 <+Amaranth> Which means people with old computers have an advantage there 19:33 < Xor_> I also want texture metadata that regexes name/lore 19:33 < tyteen4a03> TkTech, just noticed your tinycrawler; y u no scrapy 19:33 <+Amaranth> Xor_: And I want a pony 19:33 < Xor_> Amaranth we already have ponies 19:33 * Xor_ glares at that one mocreatures guy 19:34 <+Amaranth> You're trying to backdoor custom items at the point they're getting the world and block situation sorted to just support having them 19:34 < Xor_> Amaranth can't wait, lol 19:35 < Xor_> Amaranth I was actually kind of annoyed when a player told me it was a thing and forgot to mention it was an mcpatcher feature 19:35 < Xor_> heads rolled. 19:35 <+Amaranth> That seems like an awful way to pull that off 19:35 <+Amaranth> Which means Mojang will probably do it ;) 19:35 < Xor_> Amaranth it is 19:35 < Xor_> but it's the only way right now 19:36 < Xor_> take COD-type minigames 19:36 <+Amaranth> No 19:36 < Xor_> well, any minigame with custom items 19:36 < Xor_> they can give up vanilla items 19:36 < Xor_> survival people like me can't 19:37 < Xor_> I have a whole mess of custom items based on that 19:37 < Xor_> it's quite the mess 19:40 < Xor_> Amaranth you looked at the model forma yet? 19:40 <+Amaranth> Not really 19:40 < Xor_> meh. I hope they make that obj converter 19:40 < Xor_> might be annoying though, to approximate the cuboids and rotations 21:24 < Aragasas> 123 21:25 < Aragasas> Pardon me. Check. 22:44 < barneygale> "If the varint is 0 then the packet isn't compressed otherwise its the size of the uncompressed packet." 22:44 < barneygale> should this say "compressed"? 22:45 < yawkat> probably not 22:45 < yawkat> compressed packet size is probably the one handled by the splitter 22:45 < barneygale> the splitter? 22:45 < yawkat> that packet header thing 22:46 < yawkat> i think it was added in .6 or .7 or something 22:46 < yawkat> with netty 22:46 < barneygale> Oh, I had assumed the packet header was compressed too 22:46 < barneygale> hm 22:47 < barneygale> to wireshark! 23:19 < Thinkofdeath> barneygale: its Packet length, Data Length, Data. 23:19 < Thinkofdeath> If Data Length is zero then its uncompressed otherwise its the size of the packet once you inflate it 23:20 < Thinkofdeath> I should reword the wiki 23:23 < barneygale> Why is it necessary to send the length of uncompressed data? 23:23 < barneygale> (I assume packet length is sending length of compressed data) 23:23 < mrapple> the packet length includes the data length 23:23 < mrapple> it probably isn't necessary but it standardizes the format 23:24 < Thinkofdeath> It allows minecraft to allocate the byte array for the packet instead of doing chunk by chunk 23:24 < barneygale> You could just put a boolean before the old packet length field for compressed/uncompressed 23:25 < mrapple> no one should be using uncompressed 23:25 < barneygale> the length field gives the length of the raw data that follows 23:25 < mrapple> Thinkofdeath is just documenting the behavior 23:25 < barneygale> which can be compressed or uncompressed 23:25 < barneygale> I know 23:25 < barneygale> I'm not saying he implemented it :P 23:25 < Thinkofdeath> mrapple: uncompressed is still used for small packets 23:25 < barneygale> I'm just wondering about mojang's rationale 23:25 < mrapple> it is? 23:25 < barneygale> Yeah 23:25 < Thinkofdeath> less than 256 bytes by default 23:25 < mrapple> I thought all packets were compressed... nvm then 23:26 < barneygale> that's what the new theshold setting in server.properties is 23:26 < mrapple> is there a threshold and a compression level setting? 23:26 < Thinkofdeath> just threshold 23:26 < mrapple> interesting 23:27 < Thinkofdeath> http://wiki.vg/Pre-release_protocol#Packet_format Cleared up a bit 23:28 < barneygale> Hm, the packet format changes after you get the packet? 23:28 < barneygale> :/ 23:28 < Thinkofdeath> yep 23:28 < barneygale> fun 23:29 < Thinkofdeath> http://hastebin.com/vavaveloyo.avrasm <- Why its the size of the uncompressed packet 23:29 < Aragasas> I'm sorry. You're talking about chunk compression? 23:29 < Thinkofdeath> only needs one inflate call 23:29 < Thinkofdeath> Aragasas: nope chunks aren't compressed anymore 23:29 < Thinkofdeath> the whole protocol is 23:29 < Thinkofdeath> (over 256 bytes) 23:30 < Aragasas> lol. New hardcore level. 23:30 < Xor_> compress all the things 23:30 < Dinnerbone> Only the things worth compressing :) 23:30 * Xor_ compresses Thinkofdeath using tar 23:30 < Xor_> Dinnerbone I'll compress your files! 23:30 < Xor_> hmm, doesn't sound as funny in chat 23:31 < Dinnerbone> Thinkofdeath, you should note on the wiki about the disconnects for compressing something that shouldn't be 23:31 < Aragasas> I'm so heavy. Someone, compress me! 23:31 < Thinkofdeath> oh right 23:31 < Xor_> Dinnerbone you guys planning on allowing something other gzip (configurable)? 23:31 < Thinkofdeath> its zlib (I was wrong before) 23:31 < Xor_> if you don't I'll do it anyways, soo. 23:31 < Xor_> Thinkofdeath boo 23:32 < Dinnerbone> Also that compression can be disabled entirely by just not sending the packet (or later sending it again with -1 as a value) 23:32 < Thinkofdeath> oh its -1, I thought it was 0 :P 23:32 < Aragasas> that's good. Debuggin' will be easy 23:32 * Thinkofdeath changes some things 23:33 < Dinnerbone> It's a threshold; 0 would mean "compress everything, it all meets the requirements" 23:33 < Dinnerbone> (Which would be a very stupid thing to do, but I'm sure somebody will.) 23:34 < Aragasas> What about compression level? About 10% win in summary? 23:34 < Dinnerbone> How do you mean? 23:35 < Dinnerbone> Compression level is up to the client/server themselves and is not communicated 23:35 < Aragasas> I mean, how much compressed packets will be lighter in total 23:36 < Dinnerbone> Well that's not an easy question 23:36 < Aragasas> We're doing that for network load reduction , right? 23:36 < Dinnerbone> The bulk chunk packet goes from like 800KB to 30KB on average 23:37 < Dinnerbone> Other misc packets usually 70% compression on average I guess but it's really too hard to say without tuning and proper measuring 23:38 < Xor_> Dinnerbone you can always just unit-test that 23:38 < Xor_> though, some might be mroe annoying to unit-test 23:38 < Xor_> then again, some other profiler might be better 23:39 < Dinnerbone> Hard to simulate something that can change drastically between made-up data and real world data 23:39 < Xor_> Dinnerbone quite. 23:39 < Xor_> unless you guys either have huge test cases or a good random-test-case generator it won't be easy to measure 23:40 < Xor_> could just brute-force it and do an actual stress test on a server, though that's just inefficient 23:41 < Aragasas> Impressive performance then. I question myself if current mobile devices could handle compressing/decompressing without heavy performance loss 23:42 < Xor_> wouldn't be too terrible if the operations were async 23:42 < Xor_> speaking of async, I'm guessing threaded worlds are postponed for 1.9 unless they got slipped in under my nose? 23:42 < Aragasas> Connecting to server from android/ios/wp would be fun 23:43 < Xor_> Aragasas don't give Thinkofdeath ideas 23:43 < Aragasas> Thats my idea!!!!! 23:43 < Xor_> his mapviewer already works at 60 fps on mobile 23:43 < Thinkofdeath> * when on a flat map 23:43 < Thinkofdeath> * on a view distance of 4 23:43 < Xor_> Thinkofdeath oh, now you bring in the fine print 23:44 < Thinkofdeath> pretty sure I said that at the time :P 23:44 < Xor_> did not 23:44 < Xor_> well 23:44 < Xor_> the logs will tell 23:45 < Aragasas> i wanna launch my library on a mobile device. Are there any mobile-minecraft server apps? 23:45 < Xor_> what 23:45 < Aragasas> Hm. Pocket edition works good. It could render vanilla chunks, yes? 23:46 < Xor_> they have disparate block tables 23:47 < Aragasas> I mean, apps that connects to minecraft servers. Better look myself then :D 23:47 < Xor_> I want to say "PE would be more popular if it could connect to the PC server" but then that's a null argument given all the spam support gets on twitter about PE 0.9.0 23:47 < Aragasas> by myself* 23:48 < barneygale> Why is there a set compression packet in both login and play mode? 23:48 < Dinnerbone> So it can be changed at both points 23:48 < barneygale> Why would it change while the server is running? 23:48 < Dinnerbone> In vanilla it does not 23:48 < barneygale> OK 23:48 < barneygale> That figures =D 23:48 < Dinnerbone> Servers might want to lessen load dynamically or something, that's up to them! 23:49 < barneygale> fair enough! 23:49 < Dinnerbone> Makes for good testing between various levels too 23:49 < Xor_> and then there's people that say mojang never adds stuff for us devs. kek. 23:49 < Aragasas> :D 23:49 * Xor_ will not name names 23:49 * Thinkofdeath walks away whistling 23:50 < Xor_> then again, they just did the most painful refactor I can imagine for the new block format 23:50 < Aragasas> Wait what 23:51 < Aragasas> What new block format? Anvil? 23:51 < Aragasas> oh, thats map 23:51 < Dinnerbone> Anvil? Woah. Blast from the past. 23:51 < Dinnerbone> That's a good couple of years old now, isn't it? 23:51 < Xor_> kek, I remember when Anvil came out 23:51 < Aragasas> Whaaat 23:51 < Thinkofdeath> McRegion! 23:51 < Xor_> Thinkofdeath stfu 23:51 <+AndrewPH> anvil is already a few years old? 23:51 < Xor_> we shall not speak of that 23:51 <+AndrewPH> jesus 23:51 <+AndrewPH> time flies 23:51 < Aragasas> Replacement for anvil? 23:51 < Xor_> in 1.9 so they say 23:52 < Dinnerbone> 1.9 will likely be the replacement level format, but that's by the by 23:52 < Aragasas> Any info available? wiki.vg? 23:52 < Xor_> I can bet you can't wait to dig into the voodooland that is entity meshes. 23:53 < Xor_> well, that's more erik and ryan, no? 23:53 < Aragasas> Mmmmm... Hardcore stuff 23:53 < Xor_> last time I saw entity model code was in 1.1 23:53 < Xor_> (which is when I told the client I would never talk to it again) 23:54 < mrapple> Dinnerbone: are you planning on continuing to do behind the scenes work/bug fixes for the rest of the snapshots (until the pre release) or will new features resume in a few snapshots? 23:54 < Xor_> mrapple you read the blog posts no? 23:54 < Xor_> they said they're in the last version cycle 23:54 < Thinkofdeath> No one here does :) 23:54 < Xor_> Thinkofdeath they're sometimes useful 23:55 < Xor_> such as bugfixes 23:55 < Thinkofdeath> Yeah discovered that today 23:55 < mrapple> ah I see 23:55 < mrapple> so probably no new features 23:55 < mrapple> or at least, not large ones 23:55 < Xor_> mrapple we have enough stuff to break for now, eh? 23:55 < mrapple> :P 23:55 * Dinnerbone is running a count of how many questions in this channel today could've been answered by the blog posts 23:56 < Xor_> Dinnerbone might want to use BigInteger for that 23:56 < Aaron1011> :) 23:56 < yawkat> Xor_: watch for memory 23:56 < Aragasas> Blog? Never heard about that stuff. 23:56 < mrapple> +1 from me, sorry ;( 23:56 < Thinkofdeath> Don't worry, 10 of them are from me :P 23:56 < Xor_> mrapple so tell me, what evil are you going to do with the new bunnies? 23:56 < Xor_> I've already got a few horrid ideas 23:57 < Aaron1011> I'm looking at the pre-release protocol, and it looks like it's using far, normal, short, etc, instead of a number of chunks? 23:57 < Aaron1011> Does the client choose how much to render? 23:57 < Xor_> most of them involve reflection and the pathfinder 23:57 < Aragasas> This new version will be a hell of a ride for minecraft implementations :DDD 23:57 < Xor_> 1.7 was fun, wasn't it? 23:58 < Xor_> I kind of feel bad because us spigot people don't need to do very much 23:58 < Thinkofdeath> This update is easy (protocol wise) compared to 1.7 23:58 < Thinkofdeath> internally, no so much I imagine 23:58 < Xor_> Thinkofdeath yeah, but a ton of APIs will break, namely the ones erik deprecated 23:58 < Xor_> well, some 23:58 < Aragasas> Yep. But worth it. OPTIMIZATION 23:59 < Xor_> so much code calls block.setData(), because bukkit provides no alternative 23:59 < Aragasas> VarInts 23:59 < Xor_> VarBigInteger 23:59 < Thinkofdeath> oh that reminds me, I have things to fix now that display names are in the tab list 23:59 < Aragasas> What what? Lol 23:59 < Thinkofdeath> Xor_: its easy to go id + data to block state 23:59 < Xor_> Thinkofdeath please tell me you're not going to try to make spigot support every single version --- Day changed ven. juil. 11 2014 00:00 < Thinkofdeath> hell no 00:00 < Xor_> Thinkofdeath it's the refactoring that's annoying 00:00 < yawkat> Xor_: one internet on spigot supporting minecraft classic by tomorrow morning 00:01 < Xor_> yawkat nice knowing you 00:01 < Aragasas> Spigot is interesing. They're makin' a crossgame voxelsandbox, yea? 00:01 < Dinnerbone> Aaron1011, that is a mistake on the wiki, the pre-release protocol sends number of chunks not 0/1/2/3 00:01 < Aaron1011> Ah, I thought so :) 00:01 < Xor_> no we're not 00:02 < Aaron1011> I'll update it 00:02 < Xor_> we're just a fork of craftbukkit that doesn't explode 1t 150 players 00:02 < Thinkofdeath> oh I never updated that packet 00:02 < Thinkofdeath> whoops 00:02 < Aragasas> Thats impressive 00:02 < Xor_> that also does cross-protocol support because Thinkofdeath is a masochist 00:03 < Xor_> I should spam more PRs, someday I'll get write access to master. 00:05 < Xor_> Aragasas oh, and what you're thinking of is spout, whose client sucks. 00:05 < Aaron1011> Spout is still on 1.6, I believe 00:05 < Aragasas> Pardon me. Sounds a bit similar 00:05 < Aaron1011> Spigot and spoutcraft are completely different 00:06 < Xor_> oh, and then there's cauldron, which is spigot and forge. together. in one jar. 00:06 < TkTech> tyteen4a03: I do use scrapy, we have hundreds of scrapy spiders. 00:06 < Aaron1011> Spoutcraft is a server plugin + client side mod 00:06 < Aaron1011> Spigot is a lot of improvements to CraftBukkit, many having to do with performance 00:06 < TkTech> tyteen4a03: tinycrawler is for a different class of crawling and to expirement in replacing the IO core with something more flexible 00:07 < TkTech> Scrapy is also *slow*, it's not suitable to live-price crawling 00:07 < Xor_> Aaron1011 and a few fun APIs I wrote 00:09 < Aaron1011> I've been wondering - how is the laser for the Guardians implemented (protocol-wise)? 00:09 < Xor_> I think that's what that combat packet is for 00:10 < Aragasas> Spigot just make optimizations, right? I always test my library with vanilla and craftbukkit. Should i add Spigot too? Or they handle protocol like cb? 00:10 < Aaron1011> According to the docs, the player ID is just sent for ENTITY_DEAD 00:10 < Aaron1011> How does it target a player? 00:10 < Aaron1011> Or am I just missing something obvious? :) 00:11 < Thinkofdeath> Aragasas: If it works bukkit then it will most likely work on spigot 00:11 < Xor_> ask Thinkofdeath 00:11 < Thinkofdeath> ? 00:11 < Aragasas> Thinkofdeath: okay 00:12 < Xor_> about the prorocol thign with them guardians 00:12 < Xor_> "Increased the max payload size of 'Plugin Message' from 32767 to 1048576 (Broken because of incorrect data type)" 00:12 < Xor_> is that still a thing? 00:12 < Thinkofdeath> yep 00:12 < Thinkofdeath> oh but I never reported 00:13 < Xor_> well, might want to tell someone 00:13 < Xor_> and make a ticket 00:13 < Aaron1011> Xor_: Wait, are you talking about the guardians protocol? 00:13 < Xor_> wat no 00:14 < Xor_> I'm shouting at Thinkofdeath for not reporting at bug 00:14 < Aaron1011> Oh, you said "about the prorocol thign with them guardians" 00:14 < Xor_> ask him about Guardians, he might know 00:14 < Aaron1011> I got confused :) 00:15 < Thinkofdeath> I haven't touched them but I see something about them somewhere in the code when I was looking for something else 00:15 < Aragasas> 1048576? Nice. Now we can make our version of chunks data transmission, with blackjack and lulzes 00:15 < Thinkofdeath> I think the attack is an effect packet 00:15 < Thinkofdeath> Aragasas: The issue being its length prefix is still a short 00:16 < yawkat> unsigned i hope? 00:16 < Thinkofdeath> yeah but still isn't the right size 00:18 < Aragasas> Thinkofdeath: so, make it integer? Or there's some troubles? 00:18 < Xor_> gotta get the mojang people to do that 00:18 < Xor_> which is why Thinkofdeath should be submitting a ticket 00:18 < Aragasas> BigInterger sound perfect, lol 00:18 < Xor_> s/BigInteger/VarInt 00:22 < Aragasas> So, we have now options to encrypt and compress data 00:23 < Thinkofdeath> encryption isn't optional 00:23 < Xor_> but what if I want the NSA to spy on me? 00:24 < yawkat> Xor_: just spam all packets to the client via unencrypted udp manually 00:24 < yawkat> that should do it 00:24 < Aragasas> Thinkofdeath: You mean, it can't be disabled now? 00:24 < Xor_> yawkat, you're a genius 00:24 < Thinkofdeath> Aragasas: its on for online or off or offline mode 00:24 < Xor_> I'll spam the client with so many packets it will explode! 00:25 < Thinkofdeath> you can't change that 00:25 < Thinkofdeath> unlike compression 00:25 < yawkat> Xor_: brilliant idea! 00:25 < Xor_> Thinkofdeath there's probably a way that will probably not make mojang happy. 00:25 < Aragasas> Ah, yeah 00:25 < Xor_> hence, there is effectively no way 00:26 < Aragasas> Hm...What if we compress data, then encrypt and compress secont time? sounds like a good idea