<<Prev Next>> Scroll to Bottom
Stuff goes here
L1[00:05:24] ⇨ Joins: AshIndigo (~AshIndigo@188.29.164.211.threembb.co.uk)
L2[00:06:38] ⇨ Joins: Hunterz (~hunterz@2001:af0:8000:1c01:6af7:28ff:fe37:5d6a)
L3[00:13:51] ⇦ Quits: killjoy (~killjoy@71.65.228.225) (Read error: Connection reset by peer)
L4[00:17:51] ⇦ Quits: AshIndigo (~AshIndigo@188.29.164.211.threembb.co.uk) (Quit: Bye)
L5[00:21:32] ⇦ Quits: otho (~otho@191.189.97.98) (Remote host closed the connection)
L6[00:29:22] *** fry|sleep is now known as fry
L7[00:33:35] ⇨ Joins: Kaiyouka (~IdiotNono@c-75-71-231-133.hsd1.co.comcast.net)
L8[00:34:17] ⇦ Quits: Abastro (~Abastro@175.117.182.109) (Ping timeout: 384 seconds)
L9[00:41:49] *** tterrag is now known as tterrag|ZZZzzz
L10[00:42:28] *** Darkevilmac is now known as DarkevilAway
L11[00:44:24] ⇦ Quits: Brokkoli (~Brokkoli@p5b23c07c.dip0.t-ipconnect.de) (Quit: Die Sprache der Politik ist daf�r gemacht, dass L�gen wahr klingen und das T�ten angemessen wirkt. (George Orwell))
L12[00:47:57] ⇦ Quits: alekso56 (~znc@ti0107a400-1168.bb.online.no) (Read error: Connection reset by peer)
L13[00:55:40] ⇨ Joins: alekso56 (~znc@ti0107a400-1168.bb.online.no)
L14[01:00:33] ⇦ Quits: Alex_hawks (~Alex_hawk@2001:8003:84cf:5b00:556f:1d28:5aef:ce10) (Read error: Connection reset by peer)
L15[01:00:52] ⇨ Joins: Alex_hawks (~Alex_hawk@2001:8003:84cf:5b00:556f:1d28:5aef:ce10)
L16[01:04:50] *** minecreatr is now known as Mine|dreamland
L17[01:08:58] ⇨ Joins: l4mRh4X0r (l4mRh4X0r@l4mrh4x0r.student.ipv6.utwente.nl)
L18[01:12:30] ⇨ Joins: AshIndigo (~AshIndigo@188.29.164.211.threembb.co.uk)
L19[01:26:53] ⇦ Quits: Doty1154 (~Doty1154@c-73-189-164-179.hsd1.ca.comcast.net) (Read error: Connection reset by peer)
L20[01:31:09] ⇦ Quits: secknv (~secknv@2001:8a0:6c72:2a01:e1ad:ff48:b79e:85a) (Quit: Leaving)
L21[01:31:48] ⇨ Joins: Naiten (Naiten@77.35.200.62)
L22[01:39:16] ⇨ Joins: ThePsionic (~ThePsioni@95.85.52.128)
L23[01:42:50] ⇦ Quits: workweaver (~awweaver@208.185.88.22) (Quit: workweaver)
L24[01:46:44] ⇨ Joins: killjoy (~killjoy@71.65.228.225)
L25[01:53:15] ⇨ Joins: KGS (~KGS@h-155-4-129-249.na.cust.bahnhof.se)
L26[01:59:40] <MCPBot_Reborn> [TEST CSV] Pushing snapshot_20161027 mappings to Forge Maven.
L27[01:59:43] <MCPBot_Reborn> [TEST CSV] Maven upload successful for mcp_snapshot-20161027-1.10.2.zip (mappings = "snapshot_20161027" in build.gradle).
L28[01:59:54] <MCPBot_Reborn> Semi-live (every 10 min), Snapshot (daily ~3:00 EST), and Stable (committed) MCPBot mapping exports can be found here: http://export.mcpbot.bspk.rs/
L29[02:05:21] ⇨ Joins: Zed_ (~Zed@host-92-20-246-59.as13285.net)
L30[02:05:57] ⇦ Quits: Zed (~Zed@host-2-96-98-212.as13285.net) (Ping timeout: 198 seconds)
L31[02:06:06] ⇨ Joins: Abastro (~Abastro@211.246.68.97)
L32[02:13:22] ⇨ Joins: Jezza (~Jezza@bps-gw.hrz.tu-chemnitz.de)
L33[02:18:33] ⇦ Quits: AshIndigo (~AshIndigo@188.29.164.211.threembb.co.uk) (Ping timeout: 198 seconds)
L34[02:19:10] *** AbrarSyed is now known as Abrar|gone
L35[02:27:27] ⇦ Quits: blood_ (unknown@ool-4574115b.dyn.optonline.net) ()
L36[02:32:29] ⇦ Quits: Naiten (Naiten@77.35.200.62) (Read error: Connection reset by peer)
L37[02:43:39] <Subaraki> if i want to make a pr, do i edit the forge or clean project ?
L38[02:43:53] <Ordinastie> you edit forge
L39[02:44:05] <Ordinastie> and then generate patches against the clean project
L40[02:44:11] <Ordinastie> and pr the patches
L41[02:44:37] ⇦ Quits: Larry1123 (Larry1123@irc.larry1123.net) (Ping timeout: 384 seconds)
L42[02:44:46] <Subaraki> hmkay
L43[02:44:56] <Subaraki> i'll ask later how to do patches
L44[02:46:34] <Ordinastie> gradlew genPatches iirc
L45[02:49:16] ⇦ Quits: Thefjong (~Thefjong@3e6b1b1c.rev.stofanet.dk) (Read error: Connection reset by peer)
L46[02:49:45] ⇨ Joins: AshIndigo (~AshIndigo@188.29.164.226.threembb.co.uk)
L47[02:50:38] ⇨ Joins: jordibenck (~jordi@86.89.212.184)
L48[02:56:21] ⇦ Quits: alekso56 (~znc@ti0107a400-1168.bb.online.no) (Read error: Connection reset by peer)
L49[02:58:32] <Subaraki> k, nice thanks
L50[02:58:56] <Subaraki> what would be a good name for an event that is fired after setting rotation angles for models ?
L51[02:59:05] <Subaraki> ModelRotationEvent ... ?
L52[02:59:25] <Subaraki> ModelPostRotationEvent ?
L53[03:01:01] <AshIndigo> I would say post rotation
L54[03:03:54] ⇨ Joins: alekso56 (~znc@ti0107a400-1168.bb.online.no)
L55[03:04:37] ⇨ Joins: abab9579 (~Abastro@175.117.182.109)
L56[03:05:51] <Subaraki> thanks AshIndigo :)
L57[03:07:51] ⇦ Quits: Abastro (~Abastro@211.246.68.97) (Ping timeout: 384 seconds)
L58[03:21:49] ⇦ Quits: kinggoesgaming (uid23106@id-23106.tooting.irccloud.com) (Quit: Connection closed for inactivity)
L59[03:23:57] ⇦ Quits: AstralSorcerer (~AstralSor@128.151.114.213) (Ping timeout: 198 seconds)
L60[03:26:35] *** abab9579 is now known as Abastro
L61[03:33:13] <PitchBright> o/
L62[03:33:48] ⇨ Joins: Larry1123 (Larry1123@irc.larry1123.net)
L63[03:35:52] *** Darkhax is now known as Darkhax_AFK
L64[03:38:25] <killjoy> why is ublock showing ads blocked on the newtab page?
L65[03:52:03] ⇨ Joins: Snapples (uid167569@2604:8300:100:200b:6667:1:2:8e91)
L66[03:52:54] ⇦ Quits: Larry1123 (Larry1123@irc.larry1123.net) (Ping timeout: 186 seconds)
L67[03:54:33] ⇦ Quits: KGS (~KGS@h-155-4-129-249.na.cust.bahnhof.se) (Ping timeout: 198 seconds)
L68[03:57:10] ⇦ Quits: Subaraki (~Artix@mf763-h01-176-150-102-154.dsl.sta.abo.bbox.fr) (Ping timeout: 186 seconds)
L69[03:57:51] ⇨ Joins: Subaraki (~Artix@mf763-h01-176-150-102-154.dsl.sta.abo.bbox.fr)
L70[03:59:08] <Subaraki> looks like the hook is working !
L71[03:59:09] <Subaraki> http://i.imgur.com/8W1KCs7.gifv
L72[03:59:23] <Subaraki> hi PitchBright o/
L73[04:01:57] ⇨ Joins: Larry1123 (Larry1123@irc.larry1123.net)
L74[04:02:47] ⇦ Quits: killjoy (~killjoy@71.65.228.225) (Ping timeout: 206 seconds)
L75[04:09:54] <Subaraki> someone call an exorcist !! xD http://i.imgur.com/19Dccwe.gifv
L76[04:12:40] ⇨ Joins: AshIndigo_ (webchat@31.221.112.156)
L77[04:29:21] ⇨ Joins: gigaherz|work (~gigaherz@84.89.63.25)
L78[04:30:19] <gigaherz|work> So I have had a sortof random thought stuck in my head today
L79[04:31:02] <gigaherz|work> wouldn't it be possible to make the model baking and texture stitching more of a "on-demand" operation, so that models and textures that aren't actually referenced don't really get loaded
L80[04:32:06] <gigaherz|work> stitching right now is an horribly slow operation, though, so maybe it wouldn't be smooth enough to do asynchronously
L81[04:35:15] <Ordinastie> you want to lazy stitch ?
L82[04:36:39] <gigaherz|work> not so much want
L83[04:37:07] <gigaherz|work> as I think it would be an improvement over what we have now -- maybe
L84[04:38:21] <gigaherz|work> it's hard to find information about the topic, though
L85[04:38:48] ⇦ Quits: AshIndigo_ (webchat@31.221.112.156) (Ping timeout: 195 seconds)
L86[04:38:55] <gigaherz|work> apparently "lazy stitching" is a common topic in embroidery ¬¬
L87[04:39:21] <Ordinastie> maybe because it's not possible here :p
L88[04:39:43] <gigaherz|work> nah it is possible
L89[04:40:42] <Ordinastie> you would need to restitch every texture every time a new one is added
L90[04:40:58] <gigaherz|work> sortof
L91[04:41:37] <Ordinastie> "hey, here is a slow process, let's make it so it does multiple times during gameplay instead of once during startup" ><
L92[04:41:41] <gigaherz|work> you'd need a stitching algorithm that can avoid uploading every single texture
L93[04:41:55] <gigaherz|work> mc already refreshes subrects of the atlas
L94[04:41:58] <gigaherz|work> for animation purposes
L95[04:42:26] <Ordinastie> yes, but no stitching is required there
L96[04:42:31] <gigaherz|work> the slow operation would be "defragmenting" the altas to make room for bigger textures, and resizing the atlas textures
L97[04:42:47] <Ordinastie> which is pointless, just do it once
L98[04:42:53] ⇨ Joins: Emris (~Miranda@62.178.245.147)
L99[04:43:02] <gigaherz|work> yes ideally you'd do it once, save the result
L100[04:43:15] <gigaherz|work> and then reuse that same result so long as the assets haven't changed
L101[04:43:32] <Ordinastie> that's exactly how it's done currently ><
L102[04:43:34] <gigaherz|work> (same mod jars + same mc version + same resourcepack zips)
L103[04:43:36] <gigaherz|work> nono
L104[04:43:42] <gigaherz|work> ideally it would REMEMBER FOR NEXT STARTUP
L105[04:43:48] <Ordinastie> ahh
L106[04:44:00] <gigaherz|work> but I was thinking completely opposite
L107[04:44:02] <Ordinastie> so not lazy stitching at all
L108[04:44:19] <gigaherz|work> the perfect situation is that nothing changes, so there's no work to do afterward
L109[04:44:20] <Subaraki> so, genPatches has bee nstuck for an hour on 22% after finishing the first build
L110[04:44:26] <Subaraki> :/
L111[04:44:48] <gigaherz|work> what Iwas thinking was
L112[04:44:59] <Ordinastie> so yeah, you could probably find a way to cache the atlas, but there is not much point
L113[04:45:03] <gigaherz|work> for those massive packs that take hours to start
L114[04:45:06] <Ordinastie> it doesn't really take that long at startup
L115[04:45:11] <gigaherz|work> or for people who keep adding new mods
L116[04:45:15] <Ordinastie> what takes times are models
L117[04:45:44] <gigaherz|work> I was thinking about what would it take to dynamically load assets
L118[04:45:44] <gigaherz|work> as in
L119[04:45:53] <gigaherz|work> to be able to add new models and textures practically on the fly
L120[04:46:01] <gigaherz|work> and that's where the dynamic atlas thought came from
L121[04:46:14] ⇦ Quits: Larry1123 (Larry1123@irc.larry1123.net) (Ping timeout: 186 seconds)
L122[04:46:57] <gigaherz|work> train of thought was: if you keep adding mods, there's a point at which you just simply have too many models, too many textures, even though you may only be using 1% of them at any one time
L123[04:47:15] <gigaherz|work> so being able to load and unload models/textures, akin to how the game loads and unloads chunks
L124[04:47:27] <gigaherz|work> would be interesting for performance in big packs / long-running servers
L125[04:47:48] <gigaherz|work> models are easy: just add baked models to cache, and discard when out of use
L126[04:47:57] <gigaherz|work> textures not so much: need dynamic atlas
L127[04:48:12] <gigaherz|work> you need a "texture heap" that you can restitch on the fly
L128[04:48:32] <gigaherz|work> which means you'd need to switch from raw UV coords in the quads
L129[04:48:37] <gigaherz|work> to texture ID + uv offset
L130[04:48:45] <gigaherz|work> which means shaders
L131[04:48:48] <gigaherz|work> anyhow
L132[04:48:50] <gigaherz|work> lunchtime
L133[04:49:20] <fry> gigaherz|work: the slow part would be "find all the baked models and update baked uvs in all of them"
L134[04:49:29] <fry> (for the changed textures)
L135[04:49:59] <gigaherz|work> fry: no, you'd have a lookup table of sprite IDs, and compute the offset/size on the fly, in a shader
L136[04:50:08] <gigaherz|work> bb in a bit
L137[04:50:37] <fry> no shadres in opengl 1.5
L138[04:50:40] <fry> *shaders
L139[04:50:58] <fry> + dependent texture reads slow things up
L140[04:51:45] <fry> a lot of things can be done better with modern GL, but we don't have modern GL
L141[04:52:42] <fry> doing things on-demand is always inherintly slower than precomputing, since you at least need to check the existance flag, and branch depending on that
L142[04:54:59] <Subaraki> halp ?
L143[04:55:00] <Subaraki> http://i.imgur.com/oJEnRhX.png
L144[04:55:06] <Subaraki> been stuck on 22% for over an hour
L145[04:55:42] ⇨ Joins: Larry1123 (Larry1123@irc.larry1123.net)
L146[04:57:57] <Subaraki> well nevermind
L147[04:58:01] <Subaraki> it finally don
L148[05:03:12] ⇦ Quits: Larry1123 (Larry1123@irc.larry1123.net) (Ping timeout: 206 seconds)
L149[05:04:22] ⇦ Quits: alekso56 (~znc@ti0107a400-1168.bb.online.no) (Read error: Connection reset by peer)
L150[05:08:38] ⇨ Joins: alekso56 (~znc@ti0107a400-1168.bb.online.no)
L151[05:16:53] ⇨ Joins: Larry1123 (Larry1123@irc.larry1123.net)
L152[05:20:22] <Subaraki> so, I was thinking about making a pr for inventory tabs for the survival inventory
L153[05:20:36] <Subaraki> so people can finally hook into that, and everyone can use them
L154[05:20:41] <Subaraki> anyone care to brainstorm with me ?
L155[05:21:34] <Subaraki> i was thinking about a regular button with an icon that would open the gui
L156[05:21:46] <Subaraki> which would not allow to redisplay the buttons
L157[05:22:29] <gigaherz|work> fry: sure, that's why it's just speculative ;P
L158[05:22:31] <Subaraki> unless I make a base implementation for a player inventory that other ivnentories would have to implement or extend
L159[05:22:32] * gigaherz|work is back
L160[05:23:26] <Subaraki> don't know if that's accepatable though, giving the player inventory an implementation
L161[05:31:14] <gigaherz|work> Subaraki: I'd probably make it a... "UI Tabs API"
L162[05:31:27] <gigaherz|work> where you can define "tab pages", and have an event for adding new pages
L163[05:31:30] <Subaraki> an api ? no pr ?
L164[05:31:36] <gigaherz|work> nono, with a PR
L165[05:31:39] <Subaraki> oh okay
L166[05:32:16] <gigaherz|work> but like, something added to Guis that can declare tab groups, and then the buttons switch between pages in the group
L167[05:32:30] <gigaherz|work> with an event for adding new pages to the group
L168[05:32:38] ⇦ Quits: jordibenck (~jordi@86.89.212.184) (Ping timeout: 186 seconds)
L169[05:32:45] <gigaherz|work> so your own custom Gui may add the tabs in initGui
L170[05:32:50] <gigaherz|work> but if you want thirdparty tabs
L171[05:33:01] <gigaherz|work> they'd do it from the gui event
L172[05:33:51] <Subaraki> if i understand correctly, the tabs that you are suggesting, would be for the modder gui's right ?
L173[05:33:54] ⇦ Quits: Larry1123 (Larry1123@irc.larry1123.net) (Ping timeout: 183 seconds)
L174[05:36:24] * Subaraki tries to tie his head around the idea
L175[05:36:27] * Subaraki has trouble
L176[05:37:25] <Subaraki> so, an event to which you add tabs
L177[05:37:42] <Subaraki> that will be drawn when the player inventory is open ?
L178[05:37:49] <Subaraki> like, the buttons
L179[05:38:24] <Subaraki> how would you define a 'tab page' gigaherz|work ?
L180[05:38:34] <Subaraki> a tab page being a gui right ?
L181[05:41:29] ⇦ Quits: ThePsionic (~ThePsioni@95.85.52.128) (Quit: Leaving)
L182[05:44:28] ⇨ Joins: Larry1123 (Larry1123@irc.larry1123.net)
L183[05:45:20] <Subaraki> this is harder then i thought it would be
L184[05:46:03] ⇨ Joins: Naiten (Naiten@77.34.168.132)
L185[05:57:24] ⇨ Joins: VikeStep (~VikeStep@101.184.243.180)
L186[06:00:47] <gigaherz|work> Subaraki: yup, they'd be other GuiScreens
L187[06:01:06] <Subaraki> how do you switch to them though ?
L188[06:01:26] <gigaherz|work> see what .displayguiScreen does
L189[06:01:28] <Subaraki> on button click, call the player.opengui ?
L190[06:01:44] <gigaherz|work> nono, this is purely client-side
L191[06:01:48] <Subaraki> oh okay
L192[06:01:52] <Subaraki> but how about the containers ?
L193[06:02:01] <gigaherz|work> that will be one of the tricky things
L194[06:02:03] <Subaraki> looked at guicreativeinventory
L195[06:02:07] <gigaherz|work> you'd need a way to open multiple containers at once
L196[06:02:14] <gigaherz|work> but that's not supported in mc
L197[06:02:25] <Subaraki> the guiinventory gets changed with .displayguiscreen
L198[06:02:29] <gigaherz|work> so maybe
L199[06:03:09] <gigaherz|work> you'd need a MultiContainer extends Container + MultiGui extends GuiContainer -- but that wouldn't work
L200[06:03:18] <Subaraki> no indeed
L201[06:03:48] <Subaraki> that's why i was thinking about clicking a button that would just close this gui and open the other one
L202[06:04:15] <Subaraki> but that would mean that gui would need to display the rest of the buttons, to create the illusion you're still in the same gui
L203[06:04:30] <Subaraki> which would lead to making an interface that gui's would implement
L204[06:04:35] <gigaherz|work> yes all the GuiScreens in a tabbed group
L205[06:04:38] <gigaherz|work> woudl share the tablist
L206[06:04:54] <gigaherz|work> but each one would be its own GuiScreen that would only be actively drawing when selected
L207[06:04:59] <gigaherz|work> so in a way
L208[06:05:04] <gigaherz|work> changing tabs == changing screens
L209[06:05:08] <Subaraki> yeah
L210[06:05:16] <Subaraki> you cannot go beside that
L211[06:05:25] <gigaherz|work> the issue then is, how to handle multiple tabs having each its own Container in the server
L212[06:05:59] <Subaraki> a packet ?
L213[06:06:08] <gigaherz|work> that SEEMS the only way
L214[06:06:20] <Subaraki> button click = send packet, which opens the gui player.opengui(datafromtab)
L215[06:06:38] <gigaherz|work> when you click a tab, if it extends GuiContainer, send a packet to the server, and wait for an answer
L216[06:06:41] <Subaraki> the interface would need something like openMyGui() which calls the player.opengui
L217[06:06:56] <gigaherz|work> how do they handle it in mods?
L218[06:06:58] <Subaraki> or whatever the player defines
L219[06:07:02] <gigaherz|work> like the tabs for ticon or similar
L220[06:07:10] <gigaherz|work> what do they do?
L221[06:07:11] <Subaraki> i did one once
L222[06:07:13] <Subaraki> i sended a packet
L223[06:07:21] <Subaraki> ticon does the same
L224[06:07:24] <Subaraki> iirc
L225[06:07:30] <Subaraki> to github !
L226[06:07:33] <gigaherz|work> aha
L227[06:07:43] <gigaherz|work> so at the lower level
L228[06:07:55] <gigaherz|work> MC bahaves as if a whole new gui was opened
L229[06:07:59] <gigaherz|work> behaves*
L230[06:08:12] <gigaherz|work> the issue in that case
L231[06:08:17] <gigaherz|work> is how to "transfer" the tab group
L232[06:08:21] <Subaraki> yeah
L233[06:08:30] <gigaherz|work> how to distinguish a tab switch from an actual gui change
L234[06:08:31] <Subaraki> that's why i was thinking about an interface
L235[06:08:42] <Subaraki> or maybe an annotation, @tabbed
L236[06:08:43] <Subaraki> or something
L237[06:08:48] <gigaherz|work> no that doesn't help
L238[06:09:19] <Subaraki> we could hook into the actual opengui event ?
L239[06:09:27] <gigaherz|work> you still can't distinguish properly between switching tabs, and switching tab-groups
L240[06:09:41] <gigaherz|work> that's the key here
L241[06:09:46] <Subaraki> what's the difference ?
L242[06:09:56] <Subaraki> oh
L243[06:09:58] <Subaraki> tab groups
L244[06:10:00] <Subaraki> pages ?
L245[06:10:04] <gigaherz|work> okay this is how I picture it
L246[06:10:07] <Subaraki> like a set of tabs buttons ?
L247[06:10:17] <Subaraki> that's just redrawing it ?
L248[06:10:37] <gigaherz|work> imagine the ticon machines
L249[06:10:43] <gigaherz|work> which have their "menu"
L250[06:10:50] <Subaraki> machines ?
L251[06:10:56] <gigaherz|work> the stencil table, etc
L252[06:11:01] <Subaraki> yeah
L253[06:11:06] <gigaherz|work> in the new version, you can switch between them
L254[06:11:07] <gigaherz|work> okay
L255[06:11:07] <Subaraki> but we don't need tabs for that ?
L256[06:11:13] <gigaherz|work> wait
L257[06:11:36] <Subaraki> i was really looking for an implementation for survival player inventory
L258[06:11:39] <gigaherz|work> i'm using that as a current example of how people have done it
L259[06:11:55] <gigaherz|work> in ticon
L260[06:11:57] <Subaraki> so added inventories, or other gui's can be "bound" to the player's
L261[06:11:59] <gigaherz|work> it knows what's there
L262[06:12:11] <gigaherz|work> it knows the order of the tabs, etc
L263[06:12:29] <gigaherz|work> in the creative menu
L264[06:12:32] <gigaherz|work> it's also something custom
L265[06:12:38] <gigaherz|work> the creative gui has its own "thing" for tabs
L266[06:12:43] <Subaraki> yeah
L267[06:12:46] <gigaherz|work> so
L268[06:12:51] <gigaherz|work> the "lazy" way
L269[06:13:05] <gigaherz|work> is to add an API specifically and exclusively, for the survival inventory gui
L270[06:13:15] <gigaherz|work> you register new tabs
L271[06:13:20] <gigaherz|work> and it just draws the buttons in order
L272[06:13:26] <gigaherz|work> opening new GUIs whenever you switch between them
L273[06:13:36] <gigaherz|work> that's easy
L274[06:13:44] ⇨ Joins: InusualZ (~InusualZ@adsl-72-50-85-164.prtc.net)
L275[06:13:48] <gigaherz|work> you have ONE list, known in advance
L276[06:13:56] <gigaherz|work> so you don't have to transfer anything
L277[06:14:06] <gigaherz|work> switching tabs == closing one gui and opening another, within the same tick
L278[06:14:45] <gigaherz|work> but to me, it would be a lot more useful to have a generic system,
L279[06:14:54] <gigaherz|work> something that can be used by other mods
L280[06:15:12] <gigaherz|work> such as, if you want to add a new tab on like... chests
L281[06:17:40] <Subaraki> i see yes
L282[06:18:36] <Subaraki> so multiple lists ?
L283[06:18:45] <Subaraki> or bind lists to an object
L284[06:18:54] <Subaraki> like a player or a chest block ?
L285[06:19:59] <Ordinastie> make it a cap
L286[06:20:26] <Subaraki> hastablist gettablist
L287[06:20:53] <Subaraki> sounds like a plan
L288[06:22:07] <gigaherz|work> sorry work stuff
L289[06:22:09] <gigaherz|work> as I was sayinfg
L290[06:22:12] <gigaherz|work> the issue if it's generic
L291[06:22:21] <gigaherz|work> is how to manage transferring this "tablist" over to other GUIs
L292[06:22:33] <gigaherz|work> because
L293[06:22:42] <gigaherz|work> the way to create those tab lists, woudl probably be in the gui event
L294[06:23:03] <gigaherz|work> but it only makes sense to compute that on the first opening of the gui
L295[06:23:17] <gigaherz|work> and you should keep thesame tablist until the gui is fully dismissed -- not just switching to another tab in the list
L296[06:23:25] <gigaherz|work> deciding what constitutes a tab switch
L297[06:23:30] ⇦ Quits: AshIndigo (~AshIndigo@188.29.164.226.threembb.co.uk) (Ping timeout: 183 seconds)
L298[06:23:33] <gigaherz|work> and what needs to refresh the tablist contents
L299[06:23:35] <gigaherz|work> that's the key here
L300[06:24:21] <Subaraki> why the refresh though ?
L301[06:24:25] <Ordinastie> register a tab for a gui class
L302[06:24:44] <Ordinastie> kinda force other tabs to extend the vanilla one
L303[06:24:56] <Subaraki> if i have a chest with a tab (which is 2 tabs, one vanilla chest, one that yo uadded)
L304[06:25:03] ⇨ Joins: AshIndigo (~AshIndigo@188.29.164.226.threembb.co.uk)
L305[06:25:05] <Subaraki> you just register the tablist to the vanilla chest, and yours ?
L306[06:25:59] <Subaraki> if i want to add a tab to the player inventory, i register the tablist to the player, adding up to all the tabs eventually added
L307[06:26:02] <Ordinastie> meh, I don't know, I'll never use vanilla guis anyway
L308[06:26:07] <Subaraki> and i register the player's tablist to my gui
L309[06:26:34] <gigaherz|work> Subaraki: so your proposal is that in my chest-gui
L310[06:26:38] <gigaherz|work> Id' do like
L311[06:27:09] <gigaherz|work> getTabList() {return vanillachest.getTabList();}
L312[06:27:17] <Subaraki> hastablist true gettablist blocks.chest.getTablist
L313[06:27:20] <Subaraki> yeah
L314[06:27:40] <gigaherz|work> hmmm
L315[06:27:41] <Subaraki> if you do not implement that, it's a "dead end"
L316[06:27:48] <Subaraki> which could be a feature for some mods maybe
L317[06:27:59] <Subaraki> its a mutual thing
L318[06:28:02] <gigaherz|work> so you'd have this as a capability on the TileEntityChest?
L319[06:28:31] <Ordinastie> if you have it as a cap, you can't have general gui tabs
L320[06:28:37] <Subaraki> don't know. maybe we would need to make something like capabilities but for gui's
L321[06:28:51] <gigaherz|work> that poses its own set of problems, though
L322[06:29:15] <gigaherz|work> you'd need something akin to the oreDictionary, maybe
L323[06:29:15] <Subaraki> hmm
L324[06:29:17] <Subaraki> like what ?
L325[06:29:42] <gigaherz|work> hmm OH WAIT
L326[06:29:49] <Ordinastie> imo, registry gui class -> tabs, when gui opens, check class, draw tabs (if more than 1)
L327[06:29:50] <gigaherz|work> you can actually have a GuiTabGroup registry
L328[06:30:16] <Subaraki> oh yeah
L329[06:30:17] <Subaraki> why not !
L330[06:30:28] <gigaherz|work> you'd still have to inject it to vanilla guis
L331[06:30:32] <gigaherz|work> but essentially
L332[06:31:09] <gigaherz|work> a GuiScreen could have a getTabGroup() { return DefaultTabGroups.SURVIVAL_PLAYER; }
L333[06:31:17] <gigaherz|work> and on registration you could have
L334[06:31:34] <gigaherz|work> DefaultTabGroups.SURVIVAL_PLAYER.addTabProvider(something)
L335[06:31:51] <Ordinastie> so much complicated for nothing
L336[06:31:51] <gigaherz|work> not sure about the "something"
L337[06:32:13] <Subaraki> i think i'm more in the mindset of Ordinastie
L338[06:32:17] <gigaherz|work> Ordinastie: that's what brainstorming is for
L339[06:32:26] <Subaraki> when opening a gui, if hastabs, draw the gettablist
L340[06:32:28] <gigaherz|work> make it big
L341[06:32:37] <gigaherz|work> then pick at the unnecessary bits
L342[06:32:42] <gigaherz|work> until you reduce it to be essential
L343[06:32:44] <Ordinastie> that's why forge is full of shitty over complicated stuff
L344[06:33:13] <gigaherz|work> I don't see how that would work, though
L345[06:33:23] <gigaherz|work> if you just have tabs on the gui
L346[06:33:31] <gigaherz|work> and 3 mods are adding tabs
L347[06:33:35] <gigaherz|work> how do they know about the other mods?
L348[06:33:40] <Ordinastie> they don't
L349[06:33:41] <Ordinastie> forge does
L350[06:33:44] <gigaherz|work> HOW
L351[06:33:49] <gigaherz|work> who keeps track of the tab list
L352[06:33:56] <Ordinastie> tabs are registered
L353[06:33:58] <gigaherz|work> where?
L354[06:34:05] <Ordinastie> in a registry somewhere in forge
L355[06:34:11] <Subaraki> maybe just like the creative tabs ?
L356[06:34:14] <gigaherz|work> how do you decide which tabs show in which gui?
L357[06:34:24] <Ordinastie> <Ordinastie> imo, registry gui class -> tabs, when gui opens, check class, draw tabs (if more than 1)
L358[06:34:24] <Subaraki> creative tab registry is easy and simple
L359[06:34:56] <Subaraki> an event that fires in open gui event, which checks that ^
L360[06:35:18] <gigaherz|work> so wait, you'd have a Registry<Class<? extends GuiScreen>, TabList>
L361[06:35:32] <Subaraki> uh yeah, why not
L362[06:35:37] <Ordinastie> TabList or List<Tabs>
L363[06:35:41] <gigaherz|work> you still need a way to "go back
L364[06:35:51] <gigaherz|work> so when you are in GuiRpgSlots
L365[06:36:07] <gigaherz|work> you can tell forge to still draw the tabs for GuiInventoryPlayer.class
L366[06:36:31] <Ordinastie> good thing there is a method for that kinda of check
L367[06:36:35] <Subaraki> thats why you register both gui's with the same list
L368[06:36:43] <Subaraki> no ?
L369[06:36:44] <gigaherz|work> so you need "Class<? extends GuiScreen> getTabProvider()"
L370[06:36:50] <gigaherz|work> on the screen
L371[06:37:03] <Subaraki> what would be a tabprovider though ?
L372[06:37:07] <gigaherz|work> Subaraki: you'd share a reference?
L373[06:37:15] <gigaherz|work> hmm
L374[06:37:26] <Subaraki> as far as i know, the tabs only work in one way
L375[06:37:35] <gigaherz|work> Subaraki: okay let's see
L376[06:37:35] <Subaraki> when drawn.
L377[06:37:44] <gigaherz|work> you are in the survival inventory
L378[06:37:49] <Subaraki> so i don't think we need a backward reference
L379[06:37:50] <Subaraki> yes
L380[06:37:51] <Subaraki> imagine
L381[06:37:51] <gigaherz|work> you see 3 tabs: Default, Mod 1, Mod 2
L382[06:37:55] <Subaraki> yes
L383[06:37:58] <gigaherz|work> you click on Mod 1
L384[06:38:01] <Subaraki> yes
L385[06:38:04] <gigaherz|work> how does forge know to draw the same list that it had before
L386[06:38:06] <Ordinastie> gigaherz|work, class.isAssignableFrom
L387[06:38:07] <Subaraki> and you would see default mod1 mod2
L388[06:38:20] <Subaraki> because you registered the same list ?
L389[06:38:28] <gigaherz|work> so you'd share a reference
L390[06:38:31] <Subaraki> guiplayer/playerlist
L391[06:38:37] <Subaraki> mygui/playerlist
L392[06:38:40] <Subaraki> yes
L393[06:38:54] <Ordinastie> no, like I said : <Ordinastie> kinda force other tabs to extend the vanilla one
L394[06:38:59] <gigaherz|work> no that's BS
L395[06:39:06] <gigaherz|work> it's the worst possible approach
L396[06:39:12] <Subaraki> why ?
L397[06:39:17] <gigaherz|work> I mean Ordinastie's
L398[06:39:56] <Subaraki> unless you do not use it, don't
L399[06:40:24] <Ordinastie> really not
L400[06:40:39] <Ordinastie> 99% you'll want to have the same context as the vanilla one anyway
L401[06:41:01] <gigaherz|work> not really?
L402[06:41:17] <Ordinastie> tabs are extremely simple with just an icon and a callback
L403[06:41:27] <Subaraki> all i see is me wanting to add to the player inventory, and many mods do also x)
L404[06:41:29] <gigaherz|work> I mean, in most cases i have seen
L405[06:42:33] <gigaherz|work> we really are not thinking of the same thing here, I think
L406[06:44:41] <Ordinastie> if really you don't want that, then yes, a ITabbedGui interface that returns the key for the registry is required
L407[06:45:11] <Ordinastie> interface of the GuiScreen, that is checked in the ctro
L408[06:45:17] <Ordinastie> *constructor
L409[06:46:24] ⇨ Joins: wundrweapon (uid131782@id-131782.ealing.irccloud.com)
L410[06:46:33] *** wundrweapon is now known as wundr|schook
L411[06:46:43] *** wundr|schook is now known as wundr|school
L412[06:47:01] <Subaraki> so, interface would be the best way to go ?
L413[06:47:25] <wundr|school> I've seen at least like 30 different gitignores for Forge - which is best?
L414[06:47:36] <Subaraki> ?
L415[06:47:39] <Ordinastie> a tab class you register, and a ITabbed interface for the GuiScreen
L416[06:48:40] <wundr|school> When pushing forge mod to git, what gitignore is best to use
L417[06:49:42] <PitchBright> you would tailor it to suit your needs
L418[06:51:49] <wundr|school> How so?
L419[06:52:14] <PitchBright> you add the things you don't want in your repo... to your gitignore...
L420[06:52:21] ⇨ Joins: Necro (~Necro@p4FFCDC3E.dip0.t-ipconnect.de)
L421[06:53:23] <PitchBright> I use the github app to do it, it's easy.
L422[06:55:40] ⇨ Joins: ThePsionic (~ThePsioni@ip5457f909.direct-adsl.nl)
L423[06:57:52] <Subaraki> so, Ordinastie , gigaherz|work . i'll be starting of with an interface that needs a tablist and a gui ? takes an item for the icon ?
L424[06:58:08] <Subaraki> and that will be drawn on opening the registered gui ?
L425[07:00:16] <gigaherz|work> I'd probably give it a drawIcon(x,y), and a onClick(), and I'd implement a "standard" one which takes an ItemStack and sends a packet to the server for switching tabs
L426[07:00:55] <Ordinastie> no default impl for the tab
L427[07:01:36] <Ordinastie> *for the onclick I meant
L428[07:02:45] ⇨ Joins: Hgrebnednav (~Hgrebnedn@d8D872A6E.access.telenet.be)
L429[07:05:40] ⇦ Parts: wundr|school (uid131782@id-131782.ealing.irccloud.com) ())
L430[07:13:03] <Subaraki> for the packet i would just use a simpleimplement ?
L431[07:13:14] <gigaherz|work> ordi thinks you shouldn't have a packet
L432[07:13:18] <gigaherz|work> let the mods implement it themselves
L433[07:13:31] <gigaherz|work> just do the tablist
L434[07:13:37] <gigaherz|work> you can always think about packets later
L435[07:13:41] <Ordinastie> tablist ?
L436[07:15:38] <gigaherz|work> ...?
L437[07:16:20] <gigaherz|work> the whole purpose of the duscussion was to add a way to have mods add more tabs to the survival inventory, so there has to be a list of tabs somewhere
L438[07:16:44] <Ordinastie> it's just a map
L439[07:17:03] <Ordinastie> or multimap maybe
L440[07:17:04] ⇨ Joins: iari (~iari___@evana.futhark24.org)
L441[07:17:16] <AshIndigo> I dont know how much I'm adding but looking at the creative tab code might be useful
L442[07:17:53] <Subaraki> dot worry AshIndigo
L443[07:17:59] <Subaraki> creative tabs are lazy P:
L444[07:18:42] * AshIndigo shrugs
L445[07:18:53] <Subaraki> i do have a map Ordinastie/gig
L446[07:18:59] <Subaraki> gigaherz|work *
L447[07:19:13] <Subaraki> the packets would be for opening the other gui's ?
L448[07:19:25] <Ordinastie> don't bother about other guis
L449[07:19:26] <Subaraki> in case if there's a container
L450[07:19:45] <Subaraki> so people need themselfs to send a packet in the onClick right ?
L451[07:19:46] <Ordinastie> it will be on the modder to implement their onClick
L452[07:20:03] <Subaraki> what about the default vanilla inventory though ?
L453[07:20:11] <Ordinastie> what about it ?
L454[07:20:21] <Subaraki> just thought about that... i'll need to add a button for it
L455[07:21:01] <Ordinastie> if you find tabs to be registered, draw a vanilla tab before them
L456[07:21:17] <Subaraki> yeah, but the vanilal tab has to be able to be opened right ?
L457[07:21:25] <Subaraki> so i'll need to send a packet for that
L458[07:22:51] <Subaraki> right ?
L459[07:32:07] ⇨ Joins: turmfalke (~turmfalke@93.206.3.92)
L460[07:34:36] ⇨ Joins: howtonotwin (~howtonotw@r75-110-22-15.gvllcmtc01.gnvlnc.ab.dh.suddenlink.net)
L461[07:38:48] ⇦ Quits: Hunterz (~hunterz@2001:af0:8000:1c01:6af7:28ff:fe37:5d6a) (Remote host closed the connection)
L462[07:40:28] <Subaraki> so, what i have now is a guitabs class, and a registry that takes a gui screen and an array of guitabs
L463[07:40:46] <Subaraki> if the screen already existed in the registry, merge the arrays
L464[07:40:58] <Subaraki> sounds fine to me ...
L465[07:41:11] <Subaraki> now, to try and draw the buttons on the screens ...
L466[07:41:12] <Ordinastie> I hope you don't mean litteral array
L467[07:41:17] <Subaraki> uh
L468[07:41:19] <Ordinastie> also, multimap
L469[07:41:24] * Subaraki hides
L470[07:42:04] <Subaraki> okay, so multimap with a list ?
L471[07:42:21] ⇨ Joins: sinkillerj (~sinkiller@nc-67-232-8-209.dhcp.embarqhsd.net)
L472[07:42:45] ⇨ Joins: gigaherz_ (~gigaherz@29.red-213-99-141.dynamicip.rima-tde.net)
L473[07:42:50] <Subaraki> what kind of multimap ?
L474[07:44:56] ⇦ Quits: gigaherz|work (~gigaherz@84.89.63.25) (Ping timeout: 198 seconds)
L475[07:45:02] <Subaraki> why a multimap Ordinastie ?
L476[07:45:16] <Subaraki> we don't have duplicate keys
L477[07:45:29] <gigaherz_> he's thinking Multimap<Class, Tab>
L478[07:45:35] <gigaherz_> so that multiple tabs can be on the same class
L479[07:45:41] <Subaraki> aah
L480[07:45:50] *** cpw is now known as cpw|out
L481[07:46:01] <Subaraki> i had map<Class, Tab[]>
L482[07:46:11] <Ordinastie> :x
L483[07:46:12] <gigaherz_> yes, that's a poor man's multimap
L484[07:46:15] <gigaherz_> ;P
L485[07:46:22] <Subaraki> oh ._.
L486[07:46:23] <gigaherz_> well no
L487[07:46:26] <Subaraki> im a poorman :o
L488[07:46:32] <gigaherz_> a poor man's multimap is Map<Key, List<Value>>
L489[07:46:35] <Ordinastie> ^
L490[07:46:49] <gigaherz_> <Key, Value[]> is worse ,p
L491[07:46:51] <Subaraki> yeah well ._. let's not say i was concidering that
L492[07:46:51] <gigaherz_> ;P*
L493[07:46:59] <Subaraki> so, a multimap with class tab
L494[07:47:14] <Subaraki> and then when i need to draw the buttons, i get every tab reference from the class ?
L495[07:47:20] <Subaraki> and i draw them as they come
L496[07:47:24] <gigaherz_> I'm still unconvinced by using the class as the key, but /shrug
L497[07:47:25] <Subaraki> so the order never changes
L498[07:47:36] <Subaraki> it's one aproach.
L499[07:47:46] <Ordinastie> gigaherz_, what would you use as key ?
L500[07:47:57] <Subaraki> i don't think he would use a map at all P:
L501[07:49:13] <Subaraki> multimaps are interfaces though
L502[07:49:22] <Subaraki> need to find one that isnt to instantiate it
L503[07:49:37] <gigaherz_> ArrayListMultimap
L504[07:49:42] <Ordinastie> yes, you need to find one
L505[07:49:49] <gigaherz_> since you want to maintain order
L506[07:49:53] <Ordinastie> or wait for gigaherz_ to mouth feed the answer as always
L507[07:50:22] <Subaraki> found it :) ArrayListMultimap.create();
L508[07:52:17] <Subaraki> Type mismatch: cannot convert from ArrayListMultimap<Object,Object> to MultiMap<Class<? extends GuiScreen>,GuiTabs>
L509[07:52:19] <Subaraki> <_<
L510[07:52:31] ⇨ Joins: gigaherz|work (~gigaherz@84.89.63.25)
L511[07:52:35] <fry> every time you use Class, you need to answer some questions: 1) do I need to create instances of that class dynamically? 2) do I actually need to differentiate between instances of different classes by their class, or maybe something simpler like a return value of the method will be enough?
L512[07:52:54] <fry> in most cases the answer to both questions will be "no"
L513[07:53:39] <Subaraki> so the problem is the class ?
L514[07:53:43] <Ordinastie> in our current case, we just need a key
L515[07:53:51] <Subaraki> so guiscreen ?
L516[07:54:03] <fry> what does the key represent? what's it used for?
L517[07:54:08] <gigaherz|work> the issue at hand is how to identify which tabs belong on a tab group
L518[07:54:26] <fry> what's a tab group?
L519[07:54:38] <Ordinastie> the key is used to fetch the list of tabs to display on a gui
L520[07:54:46] <Ordinastie> could be anything
L521[07:54:57] ⇦ Quits: gigaherz_ (~gigaherz@29.red-213-99-141.dynamicip.rima-tde.net) (Ping timeout: 183 seconds)
L522[07:55:13] <fry> so, semantically, you have 1 "tab group" per gui? or multiple?
L523[07:55:14] <Ordinastie> benefits of a the class is that all vanilla gui have one (obviously)
L524[07:55:15] <gigaherz|work> the list of tabs that will show on a gui, and should remain consistent between different tabbed screens of the same group
L525[07:55:29] <fry> everything in java has a class, that's not a benefit of anything
L526[07:55:54] <gigaherz|work> N guis -> 1 set of tabs
L527[07:55:58] <fry> what's a "group of screens" then?
L528[07:56:03] <Ordinastie> what I mean is that's it's something all guis have inherently
L529[07:56:17] <gigaherz|work> use case:
L530[07:56:21] <Ordinastie> you don't have to manually create keys for each types of vanilla guis
L531[07:56:33] ⇨ Joins: Cooler (~CoolerExt@45.249.156.23)
L532[07:56:37] <gigaherz|work> GuiInventoryPlayer + GuiModArmorAdditions + GuiAnotherMod
L533[07:57:01] <Subaraki> found the error
L534[07:57:10] <Subaraki> was giving the wrong multimap
L535[07:57:16] <gigaherz|work> on one side there's the registered tab buttons, and on the other side, the GuiScreens that want to share the list of buttons
L536[07:57:57] <fry> so, conceptually, you have a main container, that has tabs on one side, and current tab contents on another side?
L537[07:58:00] ⇨ Joins: Tarig (~Tarig@d4-50-187-60.try.wideopenwest.com)
L538[07:58:15] <gigaherz|work> so: GuiScreen -> ? -> Collection<TabInfo>
L539[07:58:43] <gigaherz|work> no this is for managing tabs like on the creative inventory, but for other guis
L540[07:59:05] <fry> "gui" means a lot of things at once, which isn't helping
L541[07:59:32] <Ordinastie> basically, the point is, you can register a tab for any gui
L542[07:59:36] <fry> can you have nested gui "widgets" with tabs in them?
L543[07:59:41] <gigaherz|work> no
L544[07:59:45] <gigaherz|work> just top-level GuiScreens
L545[07:59:49] <fry> so, tabs are top-level only
L546[07:59:59] <Subaraki> yeah
L547[08:00:20] <Ordinastie> if a tab is supposed to open another gui, you want to be able to know which tabs you're still supposed to have
L548[08:00:52] <fry> so, simplest model: Map<GuiScreen, TabGroup>
L549[08:01:13] <fry> when you open GuiScreen s, instead you display TabGroup of that GuiScreen
L550[08:01:27] <Ordinastie> which "s" ?
L551[08:01:46] <Ordinastie> each time you open that type of GuiScreen, the instance is differen
L552[08:01:47] <Ordinastie> t
L553[08:01:49] <fry> for all s
L554[08:02:05] <Ordinastie> so what's the key ?
L555[08:02:08] <fry> s
L556[08:02:28] <Ordinastie> and how you get s when you register your tab ?
L557[08:02:36] <gigaherz|work> but the GuiScreen is instantiated every time, through the GuiHandler
L558[08:02:37] <fry> s = this
L559[08:02:43] <Subaraki> GuiScreen.class ?
L560[08:03:09] <Subaraki> if(openedGui.getClass instanceof map.value
L561[08:03:09] <Ordinastie> what you say doesn't make sense
L562[08:03:11] <Subaraki> or rather
L563[08:03:19] <Subaraki> map.get(openedGui.class)
L564[08:03:29] <fry> map.get(openedGui)
L565[08:03:31] <fry> no class
L566[08:03:36] <gigaherz|work> that won't work, fry
L567[08:03:40] <fry> why?
L568[08:03:44] <gigaherz|work> because the Gui is instantiated every single time it opens
L569[08:03:45] <Subaraki> instances are never the same
L570[08:03:52] ⇨ Joins: AshIndigo_ (webchat@31.221.112.156)
L571[08:03:55] <fry> why is that a problem?
L572[08:04:03] <gigaherz|work> the tab list would be registered during init
L573[08:04:05] <gigaherz|work> not every single time
L574[08:04:08] <fry> why?
L575[08:04:16] <fry> what does it give you?
L576[08:04:40] <Ordinastie> fry, then how do you fill that map ?
L577[08:04:48] <Ordinastie> and when
L578[08:05:00] <fry> for example, in the constructor
L579[08:05:11] <fry> or in the factory, if guiscreens have a factory
L580[08:05:13] <gigaherz|work> that won't work if you are adding tabs to the vanilla survival inventory
L581[08:05:20] <fry> or in taht GuiHandler
L582[08:05:20] <gigaherz|work> which is the usecase #1
L583[08:05:25] <fry> *that
L584[08:05:36] <Ordinastie> vanilla guis don't have factories
L585[08:05:44] <fry> they have constructors
L586[08:05:45] <Subaraki> how would i draw the vanilla dab though ? it needs to be in front
L587[08:05:48] <Subaraki> tab *
L588[08:06:02] <Ordinastie> that answers the "when", how about the "how" ?
L589[08:06:10] <fry> how what? :P
L590[08:06:17] <Subaraki> how to draw them
L591[08:06:21] <Ordinastie> how do you fill the map
L592[08:06:26] <Subaraki> i think we can just inject the tabs in the button list ?
L593[08:06:28] <fry> map.add(this)
L594[08:06:32] <Subaraki> put
L595[08:06:36] <gigaherz|work> not this
L596[08:06:42] <Subaraki> put actually. guitabs.put(class, tab)
L597[08:06:44] <gigaherz|work> for other mods that want to add tabs to an external inventory
L598[08:06:46] <Subaraki> its a multimap
L599[08:06:54] <Ordinastie> fry, map.add(this, ???);
L600[08:07:01] <Subaraki> put o.O
L601[08:07:04] <Ordinastie> how do you get the "???"
L602[08:07:09] <Ordinastie> or put, whatever
L603[08:07:13] <Subaraki> :p
L604[08:07:18] <fry> sorry, map.put(this.getTabGroup(), this)
L605[08:07:30] <fry> the other way around actually, yes
L606[08:07:43] <fry> map.put(this, this.getTabGroup())
L607[08:07:45] <gigaherz|work> so we go back to thebeginning: what does getTabGroup return?
L608[08:07:48] <Subaraki> where the tabgroup is a class ?
L609[08:07:58] <fry> it's not a class
L610[08:08:05] <fry> it's an object
L611[08:08:06] ⇦ Quits: alekso56 (~znc@ti0107a400-1168.bb.online.no) (Read error: Connection reset by peer)
L612[08:08:09] <Subaraki> unless we define beforehand what tabgroup (enum) goes t owhich class
L613[08:08:21] <fry> ResourceLocation seems like a natural choice
L614[08:08:23] <Ordinastie> fry and getTabGroup is what in your example ? list of tabs ?
L615[08:08:30] <fry> a key
L616[08:08:56] <Ordinastie> a key to fetch the list of tabs ?
L617[08:09:00] <fry> whatever you want "tab group" to mean
L618[08:09:03] <gigaherz|work> that was my proposal: GuiScreen -> ResourceLocation -> Collection<TabInfo>
L619[08:09:43] <Ordinastie> but the point of using the class as key is to not have to manually define the keys for every single one of the vanilla guis
L620[08:09:49] <Subaraki> ^
L621[08:09:55] <Subaraki> which brings me to the point
L622[08:10:03] <gigaherz|work> you still need a way to translate your custom Gui class, into the key-class
L623[08:10:09] <Subaraki> i do have to manually decide a tab for each vanilla inventory
L624[08:10:14] <Ordinastie> allows other GuiScreen (like moded ones) to work too without explicit support
L625[08:10:36] <Ordinastie> gigaherz|work, just ask the key from the interface your Gui implement
L626[08:10:40] <Ordinastie> the ITabbed or something
L627[08:10:49] <fry> by using the class, you enforce "same class" = "same tab group"
L628[08:10:58] <fry> which is not lways the case
L629[08:11:04] <fry> *always
L630[08:11:25] <Ordinastie> not really
L631[08:11:32] <fry> yes, really
L632[08:11:41] <Ordinastie> I just meant class as "automatic key reference"
L633[08:12:02] <Ordinastie> it's just a key that automatically exists
L634[08:13:00] <fry> having a method to generate the key from the Class might be useful, forcing the key to the the Class is not
L635[08:13:21] <Ordinastie> I forgot you really hate simplicity :)
L636[08:13:31] <fry> and even with the first alternative you need to be very careful about defining the equality semantics
L637[08:13:32] <gigaherz|work> well
L638[08:14:09] <gigaherz|work> String tabGroup = this.getClass().getName(); + getTabGroup + setTabGroup
L639[08:14:21] <gigaherz|work> Map<String, TabCollection>
L640[08:14:45] <gigaherz|work> that would allow dynamically assigning tabs, automatic tab name for any class that doesn't have special requirements
L641[08:15:18] <fry> again, ResourceLocation is better than just String
L642[08:15:41] <fry> but what you really want is probably a concrete TabGroup object
L643[08:16:39] <fry> which would have something like switchToTab(n), drawTab(n), drawAllTabs(), or whatever
L644[08:17:24] ⇨ Joins: alekso56 (~znc@ti0107a400-1168.bb.online.no)
L645[08:18:28] <Subaraki> fry, that would imply the vanilla gui's to have the tabgroup as well ?
L646[08:18:36] <Subaraki> the tabs are just buttons
L647[08:18:42] <Subaraki> or are supposed to be just buttons
L648[08:19:12] <fry> whatever your root object is, it's not a vanilla gui anymore
L649[08:19:36] <fry> since, as gigaherz|work said, you can't have nested guis with tabs
L650[08:19:47] <gigaherz|work> ?
L651[08:20:00] <gigaherz|work> the idea was to keep the gui objects as-is
L652[08:20:07] <gigaherz|work> and just have a little hook to draw the tab buttons
L653[08:20:22] <gigaherz|work> and clicking on a tab button would switch guis to the other one
L654[08:20:23] <Subaraki> so, injecting the tabs in the guibuttons init
L655[08:21:04] <gigaherz|work> basically: the same mods are doing already, just integrated and coordinated by forge
L656[08:21:13] <fry> what list?
L657[08:21:21] <fry> GuiScreen.buttonList?
L658[08:21:49] <fry> ah, read that wrong
L659[08:21:53] ⇨ Joins: edr (~edr@d-65-175-180-73.cpe.metrocast.net)
L660[08:22:42] <fry> why GuiButton?
L661[08:22:55] <Subaraki> easiest to handle? idk
L662[08:23:02] <Subaraki> click the button, change the screen
L663[08:24:35] <Subaraki> this would implement adding a variable int as well to know which button was last clicked, right ?
L664[08:24:44] <Subaraki> no
L665[08:24:53] <Subaraki> just highlight the button that is active
L666[08:25:02] <fry> I don't see how GuiButton's init have to do anything with the problem of adding a tab list to any vanilla (or mod) gui
L667[08:25:26] <Subaraki> tabs in creative tab are just textures drawn right
L668[08:25:32] <Subaraki> they are not buttons
L669[08:25:47] <Subaraki> so i draw the tabs in the screendraw
L670[08:25:57] <Subaraki> and detect myself when the mouse is on them ?
L671[08:27:06] <fry> well, problem #1: where do you draw the tab list?
L672[08:27:59] <fry> in other words: how are you sure the gui doesn't use the screen space where you draw the tab list?
L673[08:28:52] <Subaraki> i wanted to draw them in the same fashion the creative tabs get drawn
L674[08:28:54] <Subaraki> up and under
L675[08:29:05] <Subaraki> determined by the size of the inventory
L676[08:29:29] <fry> size being GuiScreen.width and .height?
L677[08:29:37] <Subaraki> no
L678[08:29:46] <Subaraki> that's the screen width and height
L679[08:30:14] <fry> then how do you know the size?
L680[08:30:50] <Subaraki> doesn't guiscreen have the sizes stored somewhere ?
L681[08:30:56] <Subaraki> width/2 - texsize/2
L682[08:30:59] <Subaraki> same for height
L683[08:31:13] <gigaherz|work> guiTop+guiHeight
L684[08:31:18] <gigaherz|work> guiLeft+guiWidth
L685[08:31:20] <Subaraki> that's the container
L686[08:31:29] <gigaherz|work> width and height are the screen itself, not the gui
L687[08:31:38] <Subaraki> so, gui container has protected int guiTop; and protected int guiLeft;
L688[08:31:49] <gigaherz|work> so no, if you don't have the gui* values, there's nothing to tell you how big a gui is
L689[08:32:02] <fry> guiLeft and guiTop are GuiContainer only
L690[08:32:08] <gigaherz|work> so you'd need to cooperate with the Gui object, a "TabDrawingInfo" of sorts
L691[08:32:22] * Subaraki changes up code to class extends guicontainer
L692[08:32:25] <Subaraki> .3.
L693[08:32:33] <fry> stop changing the code
L694[08:32:45] <fry> and spend a little time thinking about things before touching it
L695[08:32:47] <fry> :P
L696[08:32:58] <Subaraki> i thought the left and top where guiscreen
L697[08:32:59] <Subaraki> so
L698[08:33:04] <Subaraki> if someone wants to make a tab
L699[08:33:08] <Subaraki> it'll have to be a containe
L700[08:33:09] <fry> gigaherz|work: can't find guiHeight
L701[08:33:10] <Subaraki> container
L702[08:33:18] <gigaherz|work> fry: hmm guiX/guiY?
L703[08:33:28] <gigaherz|work> there's somewhere where you specify the width/height
L704[08:33:29] <fry> ah, xSize
L705[08:33:32] <gigaherz|work> right!
L706[08:33:35] <fry> + ySizr
L707[08:33:38] <fry> *ySize
L708[08:33:53] <gigaherz|work> they use different naming conventions ;p
L709[08:34:04] <Subaraki> that's also container though
L710[08:34:09] <fry> so, either you only support GuiContainer, or you need a getSizeStuff(GuiScreen)
L711[08:34:44] <Subaraki> now that i think of it
L712[08:34:50] <fry> but this is only a small part of the design
L713[08:34:55] <Subaraki> why would anyone want to add a gui to the player that is not a container ?
L714[08:35:07] <Subaraki> and people can always make containers with no slots
L715[08:35:09] <Subaraki> right ?
L716[08:35:22] <Ordinastie> the whole point of the system is to be able to add tabs to ANY guis
L717[08:35:28] <Ordinastie> not just containers
L718[08:35:50] <fry> the problem is that you didn't define "the whole point of the system"
L719[08:35:56] <Subaraki> the problem of just screens is that they have no size definition
L720[08:35:59] <Subaraki> they vary. a lot
L721[08:36:04] <fry> since you prefer things to be "simple" :P
L722[08:36:12] <Subaraki> i myself have a gui in my telepads mod that takes up the entire screen
L723[08:36:52] <Subaraki> i don't think guiscreen's basics would suffice
L724[08:36:59] * Subaraki sees people adding tabs to the pause menu
L725[08:37:06] <Subaraki> brrr, weird visions
L726[08:37:13] ⇦ Quits: AshIndigo (~AshIndigo@188.29.164.226.threembb.co.uk) (Killed (NickServ (GHOST command used by AshIndigo_!webchat@31.221.112.156)))
L727[08:37:37] ⇦ Parts: AshIndigo_ (webchat@31.221.112.156) ())
L728[08:37:59] ⇨ Joins: AshIndigo (webchat@31.221.112.156)
L729[08:38:07] <gigaherz|work> Subaraki: maybenot pause menu, but what about the book editor? ;P
L730[08:40:59] ⇦ Quits: howtonotwin (~howtonotw@r75-110-22-15.gvllcmtc01.gnvlnc.ab.dh.suddenlink.net) (Quit: Pop!)
L731[08:42:55] <Subaraki> grrr
L732[08:42:56] <Subaraki> you're right
L733[08:43:02] <Subaraki> now i see why noone ever made them
L734[08:43:13] <gigaherz|work> I think at this point
L735[08:43:18] <gigaherz|work> maybe it's best to ignore "other GUIs"
L736[08:43:25] <Subaraki> how about i just make tabs for the player inventory, and that's it ? ._.
L737[08:43:30] <gigaherz|work> and make a tab system specifically only for the player inventory
L738[08:43:38] <gigaherz|work> see how that works out
L739[08:43:39] <Subaraki> \o/
L740[08:43:42] <gigaherz|work> and once you have that working
L741[08:43:45] <Subaraki> lets start with that
L742[08:43:46] <gigaherz|work> see if it can be generified
L743[08:44:01] <Subaraki> so
L744[08:44:03] <Subaraki> now
L745[08:44:09] <Subaraki> how to draw those darned buttons ?
L746[08:44:16] <Subaraki> in guicontainer
L747[08:44:19] <fry> and then I'll ask question #2, and you rethink it again :P
L748[08:44:22] <Subaraki> do we draw them as buttons or tabs ?
L749[08:45:11] <Subaraki> i think going with buttons could be fun, the system draws it for us. but then we would need a custon button
L750[08:45:31] <Subaraki> so, drawing texture rectangles, with a different rectangle for the tab selected
L751[08:45:37] <gigaherz|work> I have a GuiCustomButton implementation on one of my mods
L752[08:45:42] <Subaraki> how do we get the selected tab ?
L753[08:45:43] <gigaherz|work> that allows oddly-sized buttons to work
L754[08:45:52] <gigaherz|work> but the tab image itself
L755[08:45:57] <gigaherz|work> that I did custom
L756[08:46:35] <Subaraki> lets do a custom button
L757[08:46:37] <Subaraki> ?
L758[08:46:44] <gigaherz|work> dunno
L759[08:46:47] <Subaraki> me neither
L760[08:46:54] <fry> think about "what I need"
L761[08:46:58] <gigaherz|work> and as for how to get the selected tab, I don't know ,either
L762[08:47:03] <Subaraki> 6 on top, 6 on the bottom
L763[08:47:09] <Subaraki> creative tabs keep track of them
L764[08:47:14] <Subaraki> but its the same gui
L765[08:47:44] <Subaraki> maybe the tab should have the origin gui cached, so we can check that ?
L766[08:47:51] <Subaraki> like once, on guiInit
L767[08:47:54] <Subaraki> so we draw it differently
L768[08:48:00] <fry> "origin gui"?
L769[08:48:12] <Subaraki> the gui the tab is suppsoed to go to / is from
L770[08:48:37] <fry> so, is it true that for each tab group you have a "master gui"?
L771[08:48:41] <fry> the "main tab"?
L772[08:49:07] <Subaraki> no
L773[08:49:11] <Subaraki> i donth think so
L774[08:49:15] <Subaraki> its a list of tabs for a gui
L775[08:49:25] <Subaraki> there's no main tab
L776[08:49:33] <fry> "for a gui"?
L777[08:49:35] <Subaraki> the main is determined by what you open first
L778[08:49:47] <Subaraki> its the illusion of one gui
L779[08:49:56] *** amadornes[OFF] is now known as amadornes
L780[08:50:01] <fry> "illusion" is not a technical term :P
L781[08:50:12] <Subaraki> clicking a button closes current gui, sends a packet (the author is suposed to) and open your own gui
L782[08:50:34] <fry> from the outer layer, the game has a current GuiScreen instance
L783[08:50:47] <Subaraki> lets say its the player inventory
L784[08:50:49] <fry> there are multiple choices you can have
L785[08:50:55] <Subaraki> the tabs ^
L786[08:50:58] <fry> 1) you keep the current open tab there
L787[08:51:00] <Subaraki> which may or may not be buttons
L788[08:51:07] <fry> 2) you keep the "container" with all the tabs there
L789[08:51:11] ⇦ Quits: npe|office (~NPExcepti@bps-gw.hrz.tu-chemnitz.de) (Remote host closed the connection)
L790[08:51:51] <fry> 1 has less impact on the current code
L791[08:52:06] <fry> 2 doesn't require any external hooks for the rendering
L792[08:52:33] <fry> (and "tab container" creation and management)
L793[08:52:56] <Subaraki> you can't mix containers
L794[08:53:04] <Subaraki> if that's what yo'ure implying
L795[08:53:09] <fry> "mix"?
L796[08:53:25] <Subaraki> what's tab container managment mean ?
L797[08:53:55] <fry> when you draw the tab list, some data is accessed
L798[08:53:59] <fry> where does it come from?
L799[08:55:35] <Subaraki> TabRegistry, a MultiMap
L800[08:55:53] <Subaraki> public static List<GuiTabs> getTabsForGui(Class< ? extends GuiContainer> screen){
L801[08:56:21] <fry> here's that Class again
L802[08:56:30] <Subaraki> yeah, still didn't change it
L803[08:56:52] <Subaraki> switching on the class is still better then on an instance imo
L804[08:58:05] <fry> again, what do you want, semantically? you want to draw a "tab list" for a currently open GuiContainer
L805[08:58:16] <Subaraki> yes
L806[08:58:41] <fry> the most natural way in OO language to do that, is to have TabList getTabList() inside GuiContainer :D
L807[08:59:04] <fry> TabList type may be a bit different
L808[08:59:08] <fry> but that's the general idea
L809[08:59:09] <Ordinastie> how do you fill that list ? :)
L810[08:59:26] <Subaraki> ^
L811[08:59:27] <fry> that's a separate question
L812[08:59:40] <fry> completely independent of the getter "interface"
L813[08:59:52] <Ordinastie> that was basically what I asked earlier :)
L814[09:00:13] <fry> answer depends on what "tab list" is
L815[09:00:18] <Subaraki> Communication, so forward, yet so complicated. Subaraki ~2016
L816[09:01:08] <Subaraki> for now, a tab list, is a list of a class that is call GuiTabs that has an icon to draw, and a onTabClicked button, for authors to send a packet in, and open their inventory in said packet
L817[09:01:28] <fry> there's no "for now", it's a fundamental design question :P
L818[09:01:47] <Ordinastie> just a list of some Tab object
L819[09:01:51] <Subaraki> ^
L820[09:02:03] ⇦ Quits: ThePsionic (~ThePsioni@ip5457f909.direct-adsl.nl) (Quit: Leaving)
L821[09:02:04] <fry> and "what does it do" is indeed a good way to define it
L822[09:02:04] <Ordinastie> with onClick, and eventually infos about the drawing
L823[09:02:25] <fry> you just need to be a little bit more careful than specifying a list of things your current code does
L824[09:02:35] <Ordinastie> and that are supplied by different mods
L825[09:02:47] <fry> and say instead "what it needs to do"
L826[09:02:58] <Subaraki> what it needs to do
L827[09:03:04] <fry> Ordinastie's description is a bit better
L828[09:03:33] <Subaraki> display tabs in the player inventory when clicked open people's inventories because they addd the tab and all the tabs will also display in their gui
L829[09:03:42] <fry> but "a list" might not be precise enough :P
L830[09:03:58] <Ordinastie> implementation detail? :p
L831[09:04:14] <Ordinastie> we only know it has to support multiple tabs
L832[09:04:58] <fry> basic things: it has a current tab, it can be rendered, current tab can be changed
L833[09:05:19] <Subaraki> and that those tabs need to be drawn in the added gui's as well, as for to create the illusion of one and only gui with real tabs, instead of reopening gui's when clicking tabs :P
L834[09:05:25] <Ordinastie> tbh, I wasn't even going that far
L835[09:05:35] <Ordinastie> not handling the "current" state
L836[09:05:45] <Subaraki> current state issue is solved though
L837[09:05:46] <Subaraki> to me.
L838[09:05:52] <fry> simplest realization as an interface: int getCurrentTab(), void Draw(), void setCurrentTab()
L839[09:06:12] <Subaraki> http://pastebin.com/1rPXsEVi
L840[09:06:14] <Ordinastie> interface implemented by what ?
L841[09:06:20] <Subaraki> ^
L842[09:06:25] <Subaraki> a custom gui could
L843[09:06:30] <Subaraki> player inventory cannot
L844[09:06:33] <Subaraki> or better should not
L845[09:06:41] <fry> the point is that implementation is the implementation detail :P
L846[09:06:56] <fry> this is called top-down design, I believe
L847[09:07:08] ⇦ Quits: AshIndigo (webchat@31.221.112.156) (Ping timeout: 195 seconds)
L848[09:07:08] <Subaraki> well, we bashed in somewhere in the middle P:
L849[09:07:19] <fry> you can write everything you need about the TabList using that interface
L850[09:07:24] <Subaraki> and now the top is crushing us down
L851[09:07:27] <fry> (assuming it's defined correctly)
L852[09:07:37] <Ordinastie> fry, so you mean interface for the list :)
L853[09:07:48] <fry> "the list"? :P
L854[09:07:50] <Subaraki> now lets imagine we cannot use an interface
L855[09:07:58] <Ordinastie> the "container" for the tabs
L856[09:07:58] <Subaraki> what do we do then ?
L857[09:07:58] *** Kolatra|away is now known as Kolatra
L858[09:08:37] <fry> what do you mean by "can't use an interface"?
L859[09:08:58] ⇨ Joins: Elec332 (~Elec332@145.102.248.72)
L860[09:09:41] <Subaraki> i don't think I should make a pr that makes the container gui implement an interface for tabs ?
L861[09:09:58] <Subaraki> don't know if it'll pass
L862[09:10:16] <fry> first of all, the final implementation doesn't have to have an interface at all
L863[09:10:25] <fry> it's just a design tool at this stage
L864[09:11:10] <fry> that can help you find the right questions to ask
L865[09:11:18] <fry> for example: is "void draw()" enough?
L866[09:11:40] <fry> or do you want each "tab" to control the rendering of the tab "icon"?
L867[09:12:17] <fry> a question that it helps to answer: "do I need to know the length of the tab list"? - current interface doesn't care about that
L868[09:12:20] <Ordinastie> I would keep the draw, but have a default impl available that draws an itemStack
L869[09:12:53] <Subaraki> i think the itemstack is mandatory, just like the creative tabs
L870[09:13:08] <fry> the "default impl" is an orthogonal question - "do I allow custom implementations of this interface, or implement it myself once and for all"?
L871[09:13:08] <Ordinastie> fuck that, I hate that creative tabs forces you to use an item
L872[09:13:09] <Subaraki> and the draw method could go in the tab itself, so you can call tab.draw ?
L873[09:13:19] <Subaraki> really Ordinastie ?
L874[09:13:23] <gigaherz|work> creative tabs requiring an item is one of the most annoying things
L875[09:13:28] <Subaraki> how would one recognize one tab from another ?
L876[09:13:39] <gigaherz|work> I'd prefer to be able to give it a resloc
L877[09:13:44] <gigaherz|work> for a texture sprite
L878[09:13:51] <Subaraki> ah, that way :)
L879[09:13:54] <Subaraki> good idea
L880[09:14:04] <Ordinastie> I'd even want the tab to handle the whole drawing itself
L881[09:14:10] <fry> see, you start with "what I need", you make an interface, you ask "is that enough? what can I add? what can I remove?" :D
L882[09:14:27] <fry> that way you explore the design space constructively
L883[09:14:36] <fry> instead of doing something blindly :P
L884[09:14:43] <Ordinastie> fry, what is enough is not necessarily what is convenient
L885[09:14:59] <fry> that's part of the question
L886[09:15:16] <Subaraki> if(stackIcon != null) draw stack else draw resLoc
L887[09:15:22] <Ordinastie> the interface should provide what is enough
L888[09:15:31] <Ordinastie> the default impl is here for convenience
L889[09:15:32] ⇨ Joins: Koward (~Koward@2a02:2788:7d4:4dd:c52e:c051:e8a2:4bfa)
L890[09:15:45] <gigaherz|work> I feel like drawIcon(x,y) or just simply draw(x,y) would be best?
L891[09:15:50] <fry> again, interface at the design level != java interface
L892[09:16:22] <Subaraki> then again, the tabs would have the creative tab texture, so drawing the icon at a certain position would allow what ?
L893[09:16:42] <fry> gigaherz|work: what are (x,y)?
L894[09:17:12] <Subaraki> just in plain center ? isn't that good ? where would you want to draw it apart from in the center of the tab ?
L895[09:17:21] <fry> "draw" is often too powerful anyway
L896[09:17:31] <fry> do you want to allow arbitrary rendering code inside?
L897[09:17:36] <gigaherz|work> the gui coordinates for either the edge of the tab, or the edge of the icon assuming 16x16
L898[09:17:38] <Ordinastie> yes :p
L899[09:17:49] ⇦ Quits: Alex_hawks (~Alex_hawk@2001:8003:84cf:5b00:556f:1d28:5aef:ce10) (Read error: Connection reset by peer)
L900[09:17:58] <Ordinastie> gigaherz|work, nah, you should assume 0, 0 for the current tab drawn
L901[09:18:00] <fry> so, is the size fixed?
L902[09:18:15] <Subaraki> for a tab ? i'd say yes
L903[09:18:22] <Subaraki> so we can fit 6 top, and 6 bottom
L904[09:18:23] ⇨ Joins: Alex_hawks (~Alex_hawk@2001:8003:84cf:5b00:556f:1d28:5aef:ce10)
L905[09:18:25] <Subaraki> like creative
L906[09:18:29] <fry> this is again a design choice
L907[09:18:34] <Subaraki> or enough to fill the vanilla gui texture
L908[09:18:40] <fry> which you need to think about :P
L909[09:18:48] ⇨ Joins: AshIndigo (~AshIndigo@188.29.164.226.threembb.co.uk)
L910[09:18:59] <Subaraki> then draw left right buttons like the creative tab
L911[09:19:19] <Ordinastie> well, I proposed a relatively simple and flexible solution, your choice, imma continue my show :p
L912[09:19:33] ⇨ Joins: TTFT|Away (~ttftcuts@2001:41d0:a:2dcf::)
L913[09:19:39] *** TTFT|Away is now known as TTFTCUTS
L914[09:19:50] ⇦ Quits: Cooler (~CoolerExt@45.249.156.23) (Ping timeout: 186 seconds)
L915[09:20:16] <fry> good specification of the draw method is something like this: "current GL state is such that (0, 0) is top-left of the tab icon and (1, 1) is bottom-right, z order is negative near positive far, background is at z level 1"
L916[09:20:47] <fry> and, for example "GL scissor state prevents rendering outside the icon space"
L917[09:21:02] <fry> so you don't have to worry about staying in the bounds
L918[09:21:30] <fry> this might now be "simple"
L919[09:21:49] <fry> but it's better than "undefined behaviour" :D
L920[09:22:08] <fry> if you don't think about specification, your implementation becomes your specification
L921[09:22:14] <fry> and you can't change anything
L922[09:22:32] <Ordinastie> you can, that's called refactoring :p
L923[09:22:47] <fry> define refactoring
L924[09:23:48] <Ordinastie> RECODE EVERYTHING! \o/
L925[09:23:57] <fry> or, better question: is your definition of refactoring the same as the official definition of refactoring?
L926[09:25:44] <gigaherz|work> refactor to me means: apply transformations to the code which change the layout/signatures, while trying to maintain referential integrity
L927[09:25:45] <Subaraki> i'm tired
L928[09:25:48] <Subaraki> i'm yawning
L929[09:25:55] <Subaraki> its only 4:30 in the afternoon
L930[09:26:01] <fry> "Code refactoring is the process of restructuring existing computer code—changing the factoring—without changing its external behaviour."
L931[09:26:20] <Subaraki> why have i ever started trying to make a pr for inventory tabs ? ._.
L932[09:26:22] <Subaraki> no clue
L933[09:26:29] <Subaraki> im gonna take a shower and nap
L934[09:26:33] <fry> "external behaviour" is the specification :P
L935[09:26:38] <fry> (if you have one)
L936[09:26:40] *** Subaraki is now known as SubNap
L937[09:26:47] <fry> naps are good.
L938[09:27:40] <fry> and, if you don't have a distinction between "implementation detail" and "external behaviour", you can't refactor :P
L939[09:29:14] ⇨ Joins: Redfoxmoon (~Red@177.92-221-236.customer.lyse.net)
L940[09:32:02] <AshIndigo> Crap I broke my mod
L941[09:38:16] ⇦ Quits: AshIndigo (~AshIndigo@188.29.164.226.threembb.co.uk) (Killed (NickServ (GHOST command used by AshIndigo_!~AshIndigo@188.29.164.161.threembb.co.uk)))
L942[09:38:47] ⇨ Joins: AshIndigo_ (~AshIndigo@188.29.164.161.threembb.co.uk)
L943[09:39:16] <Katrix> Question, how ready is the new config system?
L944[09:39:44] <gigaherz|work> how complex are your configurations?
L945[09:40:09] <gigaherz|work> so far as I know, it doesn't support having config categories at all
L946[09:40:26] <Katrix> Enable a bunch (around maybe 20-30 of them) groups of items for the most part
L947[09:40:29] <gigaherz|work> just maps field names to keys
L948[09:40:49] <gigaherz|work> and has support for a bunch of types
L949[09:41:32] <Katrix> In there a chance that stuff might break with future Forge versions if I use it as it it now?
L950[09:42:10] ⇨ Joins: TechnicianLP (~Technicia@p4FE1C694.dip0.t-ipconnect.de)
L951[09:42:27] <gigaherz|work> https://s-media-cache-ak0.pinimg.com/736x/27/e0/19/27e0190e1d0b5934efdc36d3b6ee2f25.jpg
L952[09:42:55] <Katrix> Also, isn' the nested classes supposed to be kind of like the categories?
L953[09:44:39] <gigaherz|work> dunno
L954[09:44:43] <gigaherz|work> I haven't actually used it yet
L955[09:44:55] <gigaherz|work> I just took a look and it didn't seem to have what I needed
L956[09:45:24] <gigaherz|work> https://github.com/gigaherz/Survivalist/blob/master/src/main/java/gigaherz/survivalist/ConfigManager.java
L957[09:46:22] <Katrix> That looks a bit more complex yeah
L958[09:47:28] <Katrix> I'll give it a try and see if it works
L959[09:49:57] ⇦ Quits: gigaherz|work (~gigaherz@84.89.63.25) ()
L960[09:51:44] ⇦ Quits: AshIndigo_ (~AshIndigo@188.29.164.161.threembb.co.uk) (Ping timeout: 206 seconds)
L961[09:53:07] ⇨ Joins: ScottehBoeh (~ScottehBo@95.144.45.252)
L962[09:53:20] ⇦ Quits: Tarig (~Tarig@d4-50-187-60.try.wideopenwest.com) (Ping timeout: 198 seconds)
L963[09:53:44] <TechnicianLP> is there documentation on the new conifg system?
L964[09:53:53] <ScottehBoeh> I have a guiOpen event, and I'm wanting it to cancel the player from opening the Enchantment Table GUI (GuiEnchantment)
L965[09:54:09] <ScottehBoeh> I've got ""(event.gui instanceof GuiEnchantment) {""
L966[09:54:16] <Katrix> For the Config stuff, I guess just read the commit
L967[09:54:26] <ScottehBoeh> However, when I set it to cancel, it crashes with "Attempted to cancel a uncancelable event"
L968[09:54:36] <ScottehBoeh> Is there a better way to go around canceling the player from opening an Enchantment Table?
L969[09:55:35] *** V is now known as Vigaro
L970[09:58:47] <TechnicianLP> you could try closing the gui instead of canceling the event (depends on when the event is fired)
L971[10:00:10] ⇨ Joins: Hunterz (~hunterz@62.182.234.189)
L972[10:02:13] <Katrix> Ok, one thing is crystal clear so far. It definitively support groups in the form of nesting classes
L973[10:02:46] <Katrix> However, I can't seem to get group comments to work
L974[10:03:24] <SubNap> ScottehBoeh, there's two types of stopping an event
L975[10:03:27] <SubNap> either cancel it
L976[10:03:33] <SubNap> or return event.Stopped or something
L977[10:03:36] <SubNap> let me check
L978[10:04:06] <SubNap> result.deny
L979[10:04:33] <ghz|afk> HOME!
L980[10:04:37] ⇨ Joins: gr8pefish (~gr8pefish@24-121-241-166.flagcmtk01.res.dyn.suddenlink.net)
L981[10:04:43] <SubNap> uhm, ScottehBoeh it should be cancalable though
L982[10:04:47] *** SubNap is now known as Subaraki
L983[10:04:52] *** cpw|out is now known as cpw
L984[10:05:17] <ScottehBoeh> if (event.gui instanceof GuiEnchantment) {
L985[10:05:17] <ScottehBoeh> event.setCanceled(true);
L986[10:05:17] <ScottehBoeh> }
L987[10:05:21] <ScottehBoeh> Thats the code I'm going for atm^^
L988[10:05:45] <ScottehBoeh> I crash when running it. Let me get the Stacktrace
L989[10:06:28] <ScottehBoeh> java.lang.IllegalArgumentException: Attempted to cancel a uncancelable event
L990[10:06:31] <Subaraki> throw new IllegalArgumentException("Attempted to cancel a non cancellable event");
L991[10:06:38] <Subaraki> if the event is not cancelable
L992[10:06:46] <Subaraki> but guiopenevent is cancelable ... ?
L993[10:07:25] <ScottehBoeh> Ah!
L994[10:07:35] <ScottehBoeh> How stupid can I get?
L995[10:07:40] <ScottehBoeh> I was using the GuiScreenEvent.InitGuiEvent.Post
L996[10:07:41] <Subaraki> yes ?
L997[10:07:44] <Subaraki> <_<
L998[10:07:49] <ScottehBoeh> I'm too blind, today.
L999[10:08:12] <ScottehBoeh> Working like a charm!!
L1000[10:10:31] ⇨ Joins: Thefjong (~Thefjong@3e6b1b1c.rev.stofanet.dk)
L1001[10:10:36] <Katrix> Here is the config file that I created using the new system
L1002[10:10:45] <Katrix> Here is the class
L1003[10:10:46] <Katrix> https://github.com/ArekkuusuJerii/Grimoire-Of-Alice/blob/1.10/src/main/java/arekkuusu/grimoireofalice/handler/ConfigHandler.java
L1004[10:16:14] <ScottehBoeh> is there an event for Chat? I'm gonna try to get the distance between the sender and the receiver. Cancel it out if they're over a specific distance
L1005[10:16:24] <ScottehBoeh> I looked into ChatEvent, but I can't find anything related to the players or their position.
L1006[10:17:16] <ScottehBoeh> Oh. Maybe I've found it .
L1007[10:18:32] ⇦ Quits: Elec332 (~Elec332@145.102.248.72) (Ping timeout: 198 seconds)
L1008[10:21:35] *** Vigaro is now known as V
L1009[10:21:45] ⇨ Joins: McJty (~jorrit@d8D8721D2.access.telenet.be)
L1010[10:31:16] ⇦ Quits: Naiten (Naiten@77.34.168.132) (Read error: Connection reset by peer)
L1011[10:32:02] ⇨ Joins: MalkContent (~MalkConte@p5B02D538.dip0.t-ipconnect.de)
L1012[10:35:18] ⇦ Quits: Thefjong (~Thefjong@3e6b1b1c.rev.stofanet.dk) (Read error: Connection reset by peer)
L1013[10:39:54] *** diesieben|away is now known as diesieben07
L1014[10:44:34] ⇨ Joins: illy (uid69226@id-69226.charlton.irccloud.com)
L1015[10:45:03] <illy> morning o/
L1016[10:45:25] <TangentDelta> Hi!
L1017[10:48:38] ⇨ Joins: ThePsionic (~ThePsioni@ip5457f909.direct-adsl.nl)
L1018[10:48:40] <blood|wrk> why aren't fluid events cancellable?
L1019[10:48:56] <blood|wrk> at least in the internal classes, event is never checked if cancelled
L1020[10:52:08] ⇨ Joins: Elec332 (~Elec332@145.102.248.72)
L1021[10:56:32] <TangentDelta> Can it be overriden?
L1022[10:56:57] ⇦ Quits: Jezza (~Jezza@bps-gw.hrz.tu-chemnitz.de) (Remote host closed the connection)
L1023[11:03:14] <blood|wrk> Do all fluid mods call FluidTank.drain ?
L1024[11:03:17] <blood|wrk> if they are draining
L1025[11:03:27] <blood|wrk> or do some override this functionality and not call super?
L1026[11:03:48] <blood|wrk> i need to protect against mods that attempt to drain liquid
L1027[11:04:11] <blood|wrk> i already prevent the drain but if mod doesnt know it should NOT drain, it just dupes the liquid
L1028[11:12:51] ⇦ Quits: Elec332 (~Elec332@145.102.248.72) (Read error: Connection reset by peer)
L1029[11:15:59] *** Abrar|gone is now known as AbrarSyed
L1030[11:18:55] <Necro> blood|wrk: Mods don't call FluidTank#drain but IFluidTank#drain of which FluidTank#drain is just an implementation. If you want to prevent draining you have to override IFluidTank#drain to return null.
L1031[11:20:10] <gr8pefish> Hmm, I thought that adding a layer to a player would trigger vanilla code to update nearby players that that player has layerx, so update it visually in multiplayer, but that does not seem to be the case. Basically. Player -> myLayer -> works for *that* individual client -> other people can't see it though. Anyone know how to fix this (code can be linked)
L1032[11:23:02] <Subaraki> yes gr8pefish
L1033[11:23:10] <Subaraki> depending on what determines that renders the layer on the player
L1034[11:23:15] <Subaraki> send that info to the tracked players
L1035[11:24:46] <gr8pefish> It's a capability (that is synced to the client also), so that should be easy. Where/what is the tracked players (field in world/player/etc, I don't know)?
L1036[11:26:00] ⇨ Joins: Intektor (~Intektor@p5B275568.dip0.t-ipconnect.de)
L1037[11:27:14] <Intektor> anyone knows how to use Quaternion in rotation? I need yaw pitch and roll
L1038[11:28:07] <Subaraki> gr8pefish, just send it to the server :)
L1039[11:28:12] <Subaraki> should be fine
L1040[11:28:50] ⇨ Joins: Noppes (~Noppes@ip56530f2e.direct-adsl.nl)
L1041[11:30:43] ⇨ Joins: KGS (~KGS@h-155-4-129-249.na.cust.bahnhof.se)
L1042[11:32:37] <gr8pefish> Subaraki, I'm sorry, I guess I don't follow. Send what to the server? The capability itself is already on the server player. Here's an example. Steve used my item, so he has my capability. The particular item renders on his back (it's a backpack), so when he presses f5 to go to 3rd person view he can see that backpack. But Sue, another player on the server who is standing right next to Steve, cannot see the
L1043[11:32:38] <gr8pefish> backpack. She can see her own, but not other people's (same with Steve). Both Steve's and Sue's capabilities are synced on their respective client and server players (95% sure, could be the cause of this, but I don't think so), yet this is still happening. So what packet exactly do I need to send?
L1044[11:33:15] <Subaraki> okay
L1045[11:33:23] <Subaraki> then send a packet to all nearby players :)
L1046[11:33:30] ⇦ Quits: Zed_ (~Zed@host-92-20-246-59.as13285.net) (Ping timeout: 183 seconds)
L1047[11:34:51] <diesieben07> ugh, java needs import as...
L1048[11:36:54] <Subaraki> like sendtoallaround or sendtodimension
L1049[11:37:03] <Subaraki> or send a packet to a player when you start tracking him
L1050[11:37:06] <gr8pefish> So packetHandler.handler.sendToAllAround(myPacketToUpdateClientCap, someParamIHaveToFigureOut)
L1051[11:37:07] <Subaraki> startrackingevent
L1052[11:37:17] <Subaraki> yeah, that sounds like a plan as well
L1053[11:37:28] <gr8pefish> AH yeah I was looking at startTrackingEvent, is that a better way to go about it?
L1054[11:37:39] <Subaraki> the target point is you
L1055[11:37:46] <Subaraki> i think so
L1056[11:37:53] <Subaraki> don't know if it works if the player is already tracked
L1057[11:37:57] <Subaraki> try sendtodimension ?
L1058[11:38:10] <Subaraki> will update all players in that current dimension
L1059[11:38:10] <tterrag|ZZZzzz> gr8pefish: yes, use the tracking event
L1060[11:38:16] <Subaraki> doesn't sound like a good idea though
L1061[11:38:24] *** Subaraki is now known as SubShop
L1062[11:38:25] <tterrag|ZZZzzz> no
L1063[11:38:30] <gr8pefish> Alright, I'll look into the tracking event, thanks
L1064[11:38:31] <tterrag|ZZZzzz> just use the tracking event and send to individual players
L1065[11:38:48] ⇨ Joins: Zed (~Zed@host-92-16-145-159.as13285.net)
L1066[11:39:39] ⇨ Joins: brandon3055 (~Brandon@122-129-151-31.dynamic.ipstaraus.com)
L1067[11:41:54] ⇨ Joins: Jezza (~Jezza@92.206.4.86)
L1068[11:54:54] <gr8pefish> tterrag|ZZZzzz, the implementation of it is a bit confusing to me. Is this the right general idea? https://github.com/gr8pefish/OpenGlider/blob/071c9984bfcb1e7face30e7902d879248aa2cbe4/src/main/java/gr8pefish/openglider/common/event/ServerEventHandler.java#L51-L51
L1069[11:56:45] ⇦ Quits: Koward (~Koward@2a02:2788:7d4:4dd:c52e:c051:e8a2:4bfa) (Ping timeout: 183 seconds)
L1070[11:57:50] <TangentDelta> I'm kind of an idiot when it comes to java. Do I need to call super.blah(args) in my overriden block functions? Like, on breakBlock, do I need to have super.breakBlock? IT seems to work perfectly fine without it, and I don't know why it would need to call it from its parent class.
L1071[11:58:09] <tterrag|ZZZzzz> gr8pefish: no
L1072[11:58:28] <tterrag|ZZZzzz> You are sending the info of the player they are tracking, to the tracker
L1073[11:58:42] <tterrag|ZZZzzz> So you want to check that the target has the capability
L1074[11:58:47] <tterrag|ZZZzzz> er
L1075[11:58:54] <tterrag|ZZZzzz> The tracker*
L1076[11:59:23] <tterrag|ZZZzzz> and send a packet to their client to update the target
L1077[11:59:33] *** tterrag|ZZZzzz is now known as tterrag|away
L1078[11:59:42] <TangentDelta> I also finally got block states working!
L1079[12:00:11] <tterrag|away> TangentDelta: depends on the method. generally you should call super
L1080[12:00:24] <tterrag|away> Other times you may want the parent behavior to never run
L1081[12:00:54] <TangentDelta> So, since my block extends a custom "BlockBase", does the call get passed along to "Block" from my "BlockBase"?
L1082[12:01:18] <TangentDelta> I'd guess yes since I don't override the method in my "BlockBase".
L1083[12:02:16] <TangentDelta> So when I call super.blah do I want to pass the args out exactly as they came in?
L1084[12:02:17] <tterrag|away> yes
L1085[12:02:31] <tterrag|away> again, it depends
L1086[12:02:36] <tterrag|away> Think about what you are doing
L1087[12:02:42] <TangentDelta> Is there a rule of thumb to go by?
L1088[12:02:48] <tterrag|away> and what the parent class is doing
L1089[12:03:03] <TangentDelta> Ah.
L1090[12:06:10] <TangentDelta> I think I see now. So if the parent method, Block.breakBlock, does extra things then I'd want to call super.
L1091[12:06:25] ⇨ Joins: SquareWheel (~SquareWhe@s0106687f7463986c.ok.shawcable.net)
L1092[12:07:16] <TangentDelta> Well, say all I have is removeTileEntity. Minecraft might be smart enough to remove the block from the world, but it's just good practice to call the parent method to be sure.
L1093[12:08:37] <McJty> removeTileEntity will not even remove the block
L1094[12:08:42] <McJty> It will just remove the tile entity
L1095[12:09:43] <tterrag|away> The real question is why you'd even override that method
L1096[12:11:15] <TangentDelta> I don't need to. It already does it for me.
L1097[12:11:22] <TangentDelta> It's gone now.
L1098[12:11:47] <TangentDelta> Well, I'll keep it if I ever need to do something extra, like notify other control blocks of an array change.
L1099[12:13:31] <gr8pefish> I've been trying to wrap my brain around what you said tterrag, but it is still eluding me. The javadocs are a little ambiguous on who is the tracker and what entity is doing what as well. So here is what I have (nicely commented this time), but I don't think it is correct still: https://github.com/gr8pefish/OpenGlider/blob/f1961158f08076a485e11c655d095ab8012ca1a3/src/main/java/gr8pefish/openglider/common/eve
L1100[12:13:31] <gr8pefish> nt/ServerEventHandler.java#L49-L49
L1101[12:13:42] <gr8pefish> * fix link: https://github.com/gr8pefish/OpenGlider/blob/f1961158f08076a485e11c655d095ab8012ca1a3/src/main/java/gr8pefish/openglider/common/event/ServerEventHandler.java#L49-L49
L1102[12:14:54] <Intektor> with ffmpeg, is it possible to stream the mc.framebuffer?
L1103[12:15:06] <tterrag|away> Your packet needs to be extended to target other players on the client
L1104[12:15:10] ⇦ Quits: ThePsionic (~ThePsioni@ip5457f909.direct-adsl.nl) (Quit: Leaving)
L1105[12:15:29] <tterrag|away> You need to update the info about thee target on the tracker's client
L1106[12:16:20] <tterrag|away> The tracker is the only "real" player in this situation. He also already knows everything about himself
L1107[12:16:34] <tterrag|away> You are trying to tell the tracker about the target
L1108[12:17:14] <gr8pefish> so sendTo(SomePacketThatHasInfoAboutTheTarget, tracker) then?
L1109[12:17:34] <tterrag|away> yes
L1110[12:18:36] <tterrag|away> You can look at https://github.com/tterrag1098/PotionAPI/blob/master/src/main/java/tterrag/potionapi/api/effect/EffectUtil.java
L1111[12:18:47] <tterrag|away> Old code that used IEEP but same concept
L1112[12:19:24] <gr8pefish> Sweet thanks, some concrete code example (even if it isn't perfect) really helps
L1113[12:19:38] ⇦ Quits: MalkContent (~MalkConte@p5B02D538.dip0.t-ipconnect.de) (Ping timeout: 206 seconds)
L1114[12:30:00] ⇨ Joins: MalkContent (~MalkConte@p5B02D538.dip0.t-ipconnect.de)
L1115[12:34:15] ⇨ Joins: Girafi (~Girafi@0x555178eb.adsl.cybercity.dk)
L1116[12:37:13] ⇨ Joins: Vazkii (~Vazkii@62.28.200.62)
L1117[12:41:51] ⇨ Joins: secknv (~secknv@2001:8a0:6c73:3001:856d:b759:19d8:30f6)
L1118[12:44:17] ⇦ Quits: Intektor (~Intektor@p5B275568.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
L1119[12:48:25] <gr8pefish> tterrag|away, thanks for the help. I think I'm mostly there, I just need to debug (as it still isn't working), but here's what I have so far. Event: https://github.com/gr8pefish/OpenGlider/blob/7374c09fb540f715f970f1115cfe53da28f24977/src/main/java/gr8pefish/openglider/common/event/ServerEventHandler.java#L49-L49
L1120[12:48:54] <gr8pefish> and the message: https://github.com/gr8pefish/OpenGlider/blob/7374c09fb540f715f970f1115cfe53da28f24977/src/main/java/gr8pefish/openglider/common/network/PacketUpdateClientTarget.jav
L1121[12:49:06] <gr8pefish> * https://github.com/gr8pefish/OpenGlider/blob/7374c09fb540f715f970f1115cfe53da28f24977/src/main/java/gr8pefish/openglider/common/network/PacketUpdateClientTarget.javs
L1122[12:49:13] <gr8pefish> wowo I can't type
L1123[12:49:22] <gr8pefish> * https://github.com/gr8pefish/OpenGlider/blob/7374c09fb540f715f970f1115cfe53da28f24977/src/main/java/gr8pefish/openglider/common/network/PacketUpdateClientTarget.java
L1124[12:56:16] <tterrag|away> Well for one make sure to use the scheduler
L1125[12:56:29] <tterrag|away> Otherwise, idk. debug your packet and see what happens
L1126[12:58:41] <blood|wrk> Necro: do mods check if fluid events are cancelled? seems like most dont even bother firing events
L1127[12:59:10] *** AbrarSyed is now known as Abrar|gone
L1128[12:59:17] <gr8pefish> Alright, yeah that's fine, I can debug as long as I am on the right track :)
L1129[13:00:55] <gr8pefish> thanks again for the assistance!
L1130[13:01:09] ⇨ Joins: Intektor (~Intektor@p5B275568.dip0.t-ipconnect.de)
L1131[13:01:37] <Intektor> I have to stream the minecraft picture to my android device with a minimum lag, any ideas?
L1132[13:02:44] <ghz|afk> implement some protocol like WebRTC
L1133[13:03:06] <Intektor> what does that do?
L1134[13:03:10] <ghz|afk> (or well, whatever protocol they use in the WebRTC API)
L1135[13:03:17] <ghz|afk> WebRTC is an API for javascript
L1136[13:03:33] <ghz|afk> to be able to do realtime communications (video conferencing, livestreaming and such)
L1137[13:04:34] <Intektor> something like that? https://nextrtc.org/
L1138[13:05:04] <ghz|afk> maybe
L1139[13:05:23] <ghz|afk> maybe RTSP has more existing libraries
L1140[13:05:55] <ghz|afk> or really, open a socket and start sending pictures.
L1141[13:06:23] <Intektor> I tried
L1142[13:06:48] <Intektor> but writing 2MB of data every rendering tick didn't go to well
L1143[13:07:05] <ghz|afk> well not RAW
L1144[13:07:09] <ghz|afk> at least compress as jpg
L1145[13:07:10] <ghz|afk> XD
L1146[13:07:12] <Intektor> I did
L1147[13:07:15] <Intektor> thats the problem
L1148[13:07:25] <Intektor> I used that jcodec shit
L1149[13:07:48] *** Abrar|gone is now known as AbrarSyed
L1150[13:08:06] <ghz|afk> so wait, you got something to display on the phone at least?
L1151[13:09:29] <Intektor> a media player
L1152[13:09:39] <Intektor> I have to convert it to vr later
L1153[13:09:47] <Intektor> but right now I just want the frames on my phone
L1154[13:10:11] <Intektor> my phone has a screen though :D
L1155[13:10:17] <ghz|afk> oh VR, that makes it a bit more annoying too
L1156[13:10:35] <ghz|afk> since you'll want as much resolution as possible
L1157[13:10:41] <Intektor> yes
L1158[13:10:48] <ghz|afk> so you want a good codec
L1159[13:10:56] <Intektor> very true
L1160[13:11:07] *** Mine|dreamland is now known as minecreatr
L1161[13:11:56] <ghz|afk> which means you need both a codec that can encode in realtime fast (gpu acceleration seems like a good bonus)
L1162[13:12:04] <ghz|afk> and a good streaming protocol to go along with it
L1163[13:12:13] <Intektor> that would be perfect
L1164[13:12:28] ⇨ Joins: alexiy (~alexiy@ip-118-203.zb.lv)
L1165[13:12:33] <TangentDelta> Wait...does MC have VR support natively now?
L1166[13:12:43] <Intektor> no
L1167[13:12:52] <TangentDelta> Okay.
L1168[13:13:34] <ghz|afk> the best java mc has is 3d anaglyph
L1169[13:13:56] <Intektor> and even that sucks
L1170[13:14:07] <ghz|afk> for proper VR you need to render two half-cubes
L1171[13:14:16] <ghz|afk> then apply a fisheye projection
L1172[13:14:34] <ghz|afk> and then send the two images side by side to the VR device
L1173[13:15:32] <ghz|afk> https://github.com/mutaphore/RTSP-Client-Server
L1174[13:15:49] <ghz|afk> someone did a rtsp server
L1175[13:16:01] <ghz|afk> I don't know if you can feed a random video stream into it
L1176[13:16:14] <ghz|afk> or it has to be a specific format
L1177[13:17:12] <Intektor> what exactly do you mean with two half cubes?
L1178[13:17:37] <ghz|afk> well that's how you normally do a fisheye projection
L1179[13:17:45] <ghz|afk> you render a half-cubemap
L1180[13:17:56] <ghz|afk> and then feed that to a fisheye shader
L1181[13:18:41] <Intektor> cant you just feed the google vr sdk a picture and it does the job?
L1182[13:19:08] <ghz|afk> no idea
L1183[13:19:17] <Intektor> or isnt that proper vr?
L1184[13:19:31] *** Darkhax_AFK is now known as Darkhax
L1185[13:19:40] <ghz|afk> VR video looks like this: https://i.ytimg.com/vi/KZZKpTkDa-M/maxresdefault.jpg
L1186[13:20:53] <ghz|afk> maybe you can process it from a standard frame
L1187[13:22:05] <ghz|afk> http://www.gdcvault.com/play/1021771/Advanced-VR
L1188[13:22:54] ⇨ Joins: xcube (~xcube16@216.38.32.2)
L1189[13:23:43] <xcube> Is there a way to put life cycle events outside the main mod class?
L1190[13:24:29] <ghz|afk> nope, that's what the main mod class is for
L1191[13:24:34] <ghz|afk> if you remove the lifecycle events from it, it's useless
L1192[13:26:42] <ghz|afk> out of curiosity, where would you have wanted those lifecycle events?
L1193[13:27:05] <ghz|afk> (I can guess what the reply will be, but I'm curious ;P)
L1194[13:27:14] <xcube> I wanted to put one in a proxy
L1195[13:27:33] <xcube> I can just call the proxy form the mod class
L1196[13:27:44] <xcube> But it was worth asking
L1197[13:28:11] <Intektor> ghz|afk, do you know if there is any good HEVC or h264 library, with documentation
L1198[13:28:41] <ghz|afk> apaprently they don't use fisheye, they use a barrel distorrtion on a rectangular projection
L1199[13:28:42] <ghz|afk> meh.
L1200[13:28:50] <ghz|afk> Intektor: no, i have 0 experience with those topics
L1201[13:29:33] ⇦ Parts: alexiy (~alexiy@ip-118-203.zb.lv) (Leaving))
L1202[13:30:08] <xcube> Intektor: You reminded me of an idea I had... A screenshot mode that would capture the next x number of seconds and put it in a gif or something
L1203[13:30:33] <ghz|afk> there's apps for that ;P
L1204[13:30:46] <xcube> Ya, but a minecraft mod would be cool
L1205[13:31:04] <ghz|afk> that woiuld be more interesting is a mod that "saves" the last X seconds, so that you can make a gif after the fact
L1206[13:31:04] <ghz|afk> ;P
L1207[13:31:57] <xcube> That is a good idea also, but the overhead might be stressful on lower end systems
L1208[13:32:34] <ghz|afk> ofc
L1209[13:33:34] <gr8pefish> tterrag|away, regarding the PlayerEvent.StartTracking, via debugging, the target entity (event.getTarget()) never seems to be called for a player. I can get it to call for e.g. entitySkeleton, etc, but not for the other player on the server. Am I misunderstanding the event on a fundamental level, or is that odd behaviour?
L1210[13:38:20] ⇦ Quits: Kaiyouka (~IdiotNono@c-75-71-231-133.hsd1.co.comcast.net) (Ping timeout: 198 seconds)
L1211[13:44:05] <ghz|afk> LOL
L1212[13:44:08] <ghz|afk> found a bug in mc
L1213[13:44:40] <ghz|afk> I went to the nether
L1214[13:44:49] <ghz|afk> and after arriving, there was the weird sound
L1215[13:44:51] <ghz|afk> which was a bit too loud
L1216[13:44:55] <ghz|afk> so I went to lower the volume
L1217[13:45:04] <ghz|afk> and after unpausing, it started playing from the beginning
L1218[13:50:07] <blood|wrk> anyone know IC2 player's github name?
L1219[13:50:10] <blood|wrk> need to ask him a question
L1220[13:56:49] *** diesieben07 is now known as diesieben|away
L1221[13:57:42] ⇦ Quits: mallrat208 (~mallrat20@107-145-175-135.res.bhn.net) (Read error: Connection reset by peer)
L1222[13:59:47] <Aroma1997> if it's a IC2 related question, I might also be able to help you...
L1223[14:01:14] <blood|wrk> it has to deal with the code (tracking down an issue with Sponge/IC2) not sure where the problem lies
L1224[14:01:35] <Aroma1997> what issue would that be?
L1225[14:01:37] <blood|wrk> https://github.com/SpongePowered/SpongeForge/issues/968#issuecomment-256107162
L1226[14:01:43] <blood|wrk> NPE in that comment
L1227[14:03:10] <Aroma1997> umm, that is a bug of an addon not using the IC2 api correctly
L1228[14:03:23] *** diesieben|away is now known as diesieben07
L1229[14:03:28] <blood|wrk> would you be able to respond to that ticket?
L1230[14:03:42] <Aroma1997> in one of the later builds of IC2, that was changed to log instead of crash
L1231[14:03:52] <Aroma1997> and it'+s most likely calculator causing that crash
L1232[14:04:07] <blood|wrk> ah so the pack is just using a bugged build?
L1233[14:04:13] <Aroma1997> yes
L1234[14:04:22] <blood|wrk> k if you dont mind, could you respond with what you said?
L1235[14:04:27] <Aroma1997> sure
L1236[14:04:29] <blood|wrk> I assume you work on IC2 with player?
L1237[14:04:36] <Aroma1997> yes
L1238[14:04:38] <blood|wrk> k thanks
L1239[14:04:42] <Aroma1997> np
L1240[14:06:44] ⇨ Joins: Ipsis (~Ipsis@82-69-71-184.dsl.in-addr.zen.co.uk)
L1241[14:15:18] ⇨ Joins: AshIndigo (~AshIndigo@188.29.164.11.threembb.co.uk)
L1242[14:19:20] ⇦ Quits: Ipsis (~Ipsis@82-69-71-184.dsl.in-addr.zen.co.uk) (Ping timeout: 384 seconds)
L1243[14:19:21] ⇦ Quits: gr8pefish (~gr8pefish@24-121-241-166.flagcmtk01.res.dyn.suddenlink.net) (Quit: I'm gone)
L1244[14:21:55] ⇦ Quits: Necro (~Necro@p4FFCDC3E.dip0.t-ipconnect.de) (Ping timeout: 206 seconds)
L1245[14:32:55] ⇨ Joins: fivestang (fivestang@shell.xshellz.com)
L1246[14:38:45] <ScottehBoeh> xD Can I show you guys something funny?
L1247[14:38:59] <ScottehBoeh> I was messing around with the Hurt event and it looks like you're giving a player a slap across the face
L1248[14:41:40] <ScottehBoeh> https://www.youtube.com/watch?v=ZoXQ8vhtkHs
L1249[14:49:27] ⇦ Quits: p455w0rd (~p455w0rd@172.76.203.10) ()
L1250[14:57:55] ⇦ Quits: VikeStep (~VikeStep@101.184.243.180) (Read error: Connection reset by peer)
L1251[14:59:07] ⇨ Joins: Shambling (~Joseph@24-181-186-74.dhcp.nwtn.ct.charter.com)
L1252[15:01:24] <Shambling> boni are you still actively developing harvest tweaks? Or do you consider it a finished mod baring minecraft revisions?
L1253[15:03:04] <Shambling> and baring him being elsewhere, what is the best way to debug a config file not being update when you have all permission levels set correctly? I'm having issues with one mod not generating the config file for blocks (harvesttweaks) and would like to debug it before submitting something to the issue tracker
L1254[15:03:43] <Shambling> I'm thinking its one mod in particular causing a crash state, but without constant output to a log file its hard to see if an exception is thrown
L1255[15:05:24] ⇨ Joins: LexLap2 (~LexManos@50-196-5-249-static.hfc.comcastbusiness.net)
L1256[15:05:24] MineBot sets mode: +o on LexLap2
L1257[15:06:43] <Shambling> meh maybe it is logged, I'll have to remote into the desktop and check and see if I can find it
L1258[15:06:48] <Shambling> sorry for bothering anyone
L1259[15:06:51] ⇨ Joins: ThePsionic (~ThePsioni@ip5457f909.direct-adsl.nl)
L1260[15:10:54] ⇦ Quits: LexLap (~LexManos@50-196-5-249-static.hfc.comcastbusiness.net) (Ping timeout: 384 seconds)
L1261[15:14:47] *** Drullkus is now known as DrullAFKus
L1262[15:17:42] ⇦ Quits: alekso56 (~znc@ti0107a400-1168.bb.online.no) (Read error: Connection reset by peer)
L1263[15:19:45] ⇦ Quits: McJty (~jorrit@d8D8721D2.access.telenet.be) (Quit: Leaving)
L1264[15:23:43] <blood|wrk> Aroma1997: around?
L1265[15:23:49] <Aroma1997> yes
L1266[15:24:01] <blood|wrk> question, do you guys fire drain/fill events before doing it?
L1267[15:24:14] <blood|wrk> i want to protect ic2 but i dont see a feasible option other than ASM
L1268[15:24:35] <blood|wrk> firing an event would be the easiest as i can just cancel if needed
L1269[15:25:22] <blood|wrk> so Player A is attempting to drain water/lava from a protected area. Currently, the water/lava is prevented from draining but IC2 will still copy the data into the pump
L1270[15:25:37] <blood|wrk> thus being able to dupe whatever it attempts to drain
L1271[15:27:07] ⇨ Joins: alekso56 (~znc@ti0107a400-1168.bb.online.no)
L1272[15:27:39] <Aroma1997> pump stuff is a bit broken right now. It's already on my todo-list to rewrite
L1273[15:28:53] <blood|wrk> https://github.com/MinecraftForge/MinecraftForge/blob/1.10.x/src/main/java/net/minecraftforge/fluids/FluidEvent.java#L69
L1274[15:28:59] <blood|wrk> could you at least fire these events?
L1275[15:29:13] <blood|wrk> and if cancelled, avoid the logic
L1276[15:29:19] <blood|wrk> that would help my end alot
L1277[15:29:35] <blood|wrk> FluidFillingEvent and FluidDrainingEvent
L1278[15:29:56] <blood|wrk> hrmm i guess the FluidSpilledEvent also
L1279[15:31:41] <Aroma1997> sure
L1280[15:31:49] ⇨ Joins: otho (~otho@191.189.97.98)
L1281[15:32:04] <Aroma1997> if I remember...
L1282[15:32:08] <blood|wrk> excellent! that will make alot of hermitpack servers happy
L1283[15:32:18] <blood|wrk> the ones that use Sponge/GriefPrevention
L1284[15:32:37] <blood|wrk> let me know when you add it so I can handle it in Sponge
L1285[15:33:42] *** minecreatr is now known as Mine|away
L1286[15:35:18] ⇨ Joins: Kaiyouka (~IdiotNono@c-75-71-231-133.hsd1.co.comcast.net)
L1287[15:38:41] ⇦ Quits: Hgrebnednav (~Hgrebnedn@d8D872A6E.access.telenet.be) (Ping timeout: 384 seconds)
L1288[15:41:06] <Aroma1997> might take a couple of weeks though, as I'm currently quite busy
L1289[15:43:30] <blood|wrk> is ic2 open source?
L1290[15:43:37] <blood|wrk> because i can easily PR a fix
L1291[15:47:06] <Aroma1997> no, it's not
L1292[15:50:43] ⇦ Quits: Shambling (~Joseph@24-181-186-74.dhcp.nwtn.ct.charter.com) (Read error: Connection reset by peer)
L1293[15:50:48] ⇦ Quits: xcube (~xcube16@216.38.32.2) (Remote host closed the connection)
L1294[15:59:20] ⇦ Quits: KGS (~KGS@h-155-4-129-249.na.cust.bahnhof.se) (Ping timeout: 198 seconds)
L1295[16:00:11] ⇨ Joins: founderio (~Thunderbi@p200300C4E3C1510048AC93732E3A608E.dip0.t-ipconnect.de)
L1296[16:01:37] ⇨ Joins: KGS (~KGS@h-155-4-129-249.na.cust.bahnhof.se)
L1297[16:02:31] ⇦ Quits: illy (uid69226@id-69226.charlton.irccloud.com) (Quit: Connection closed for inactivity)
L1298[16:03:25] ⇦ Quits: founderio (~Thunderbi@p200300C4E3C1510048AC93732E3A608E.dip0.t-ipconnect.de) (Client Quit)
L1299[16:04:59] *** fry is now known as fry|sleep
L1300[16:20:56] ⇦ Quits: KGS (~KGS@h-155-4-129-249.na.cust.bahnhof.se) (Ping timeout: 198 seconds)
L1301[16:21:09] ⇦ Quits: Hunterz (~hunterz@62.182.234.189) (Quit: Leaving.)
L1302[16:21:10] *** V is now known as Vigaro
L1303[16:24:23] ⇦ Quits: TechnicianLP (~Technicia@p4FE1C694.dip0.t-ipconnect.de) (Ping timeout: 183 seconds)
L1304[16:30:53] ⇨ Joins: gr8pefish (~gr8pefish@24-121-241-166.flagcmtk01.res.dyn.suddenlink.net)
L1305[16:31:47] ⇦ Quits: brandon3055 (~Brandon@122-129-151-31.dynamic.ipstaraus.com) (Read error: Connection reset by peer)
L1306[16:36:12] *** AshIndigo is now known as AshIndigo-Sleeping
L1307[16:39:10] ⇦ Quits: otho (~otho@191.189.97.98) (Quit: Leaving)
L1308[16:39:32] ⇦ Quits: RichardG (~richardg8@201.37.241.91) (Ping timeout: 198 seconds)
L1309[16:40:22] <TangentDelta> Is there any penalty for going out and talking to another tile entity several times per tick?
L1310[16:41:15] ⇦ Quits: Vazkii (~Vazkii@62.28.200.62) (Read error: Connection reset by peer)
L1311[16:41:26] ⇦ Quits: auenf (David@DC-24-199.bpb.bigpond.com) (Ping timeout: 182 seconds)
L1312[16:41:47] <ghz|afk> TangentDelta: this is programming
L1313[16:42:01] <ghz|afk> each function call has a cost, each line of code has a cost
L1314[16:42:04] <ghz|afk> it's just rather small
L1315[16:42:11] <ghz|afk> so it depends on how many "several" is
L1316[16:42:36] ⇨ Joins: auenf (David@DC-24-199.bpb.bigpond.com)
L1317[16:43:21] <TangentDelta> Well, probably a thousand times. I'd probably be better off writing it all at the end of the tick.
L1318[16:43:51] <ghz|afk> uhm
L1319[16:43:57] <ghz|afk> what are you doing? ;P
L1320[16:44:02] <SquareWheel> That sounds like a lot.
L1321[16:44:07] <ghz|afk> a thousand times per tick sounds like a look
L1322[16:44:09] <ghz|afk> lot*
L1323[16:44:19] <ghz|afk> so it may be best if you explain your situation ;P
L1324[16:44:55] <TangentDelta> Making a 65EL02 compatible CPU.
L1325[16:45:16] <ghz|afk> uhh
L1326[16:45:26] <ghz|afk> how does that translate to a thousand tileentities?
L1327[16:45:34] <ghz|afk> are you implementing each component as an actual block?
L1328[16:45:57] <ghz|afk> or wait, do you just mean like, the same tileentity, but more than 20 cycles per second?
L1329[16:46:23] <TangentDelta> I'd like to. I could just have the main CPU inventory all attached RAM blocks and build it all internally.
L1330[16:46:30] <TangentDelta> Yes.
L1331[16:46:32] <ghz|afk> I feel like you may be approaching it wrong
L1332[16:46:50] <ghz|afk> the way I'd do that is
L1333[16:47:00] <ghz|afk> when you have a block change
L1334[16:47:09] <ghz|afk> (a ram/cpu/whatever block is added or removed)
L1335[16:47:14] <ghz|afk> update the internal machine structure
L1336[16:47:19] <TangentDelta> Yeah.
L1337[16:47:24] <ghz|afk> but keep the entire thing centralised
L1338[16:47:30] <ghz|afk> just sharing a "model"
L1339[16:47:42] <ghz|afk> (structure model, not in graphical terms)
L1340[16:47:51] <TangentDelta> That's the direction I'll try to head in.
L1341[16:47:58] <ghz|afk> so that all of them have access to notify the structure of the changes
L1342[16:48:10] <ghz|afk> I wrote a graph library designed to keep track of nodes in a network
L1343[16:48:19] <ghz|afk> but it may not be as useful in your case
L1344[16:48:37] <ghz|afk> https://github.com/gigaherz/GraphLib/
L1345[16:48:47] <ghz|afk> at least it may give you an idea of how I approach it
L1346[16:48:50] <TangentDelta> I could limit reads/writes to just the end of the tick. For things like redstone I/O control.
L1347[16:49:45] <SquareWheel> I'm no expert here so take ghz's word over mine. But if it's a complex computer it might be worth threading separately.
L1348[16:50:10] <SquareWheel> Tying it to Minecraft tick updates seems like it'd lead to iffy performance.
L1349[16:50:29] <ghz|afk> well it's ok to simulate 1/20th of a second at a time
L1350[16:50:33] <ghz|afk> for internal computing
L1351[16:50:55] <SquareWheel> I wonder how OpenComputers/ComputerCraft handle it. Or TIS-3D for that matter.
L1352[16:51:00] <ghz|afk> just so long as you don't drive the actual machine at 1 cycle per tick
L1353[16:52:08] <SquareWheel> I'm thinking about input too. Infrequent updates would feel laggy when typing, if that's the input method.
L1354[16:52:29] <SquareWheel> Or just client-side it and sync on updates.
L1355[16:52:51] <ghz|afk> hmm input is basically client-side
L1356[16:52:58] <ghz|afk> the GUI isn't bound to the tick rate
L1357[16:53:01] ⇦ Quits: jackmcbarn (jackmcbarn@gateway.insomnia247.nl) (Ping timeout: 192 seconds)
L1358[16:55:00] ⇨ Joins: RichardG (~richardg8@201.37.241.91)
L1359[16:55:00] MineBot sets mode: +v on RichardG
L1360[16:55:35] <ghz|afk> input probably makes the most sense the way they do it in terminals
L1361[16:55:42] <ghz|afk> rather than send keys to the server and wait for them to show up on screen
L1362[16:55:46] <TangentDelta> The 65EL02 operates at 20KHz. It looks like it runs 1000 instructions per tick.
L1363[16:55:47] <ghz|afk> you use local echo
L1364[16:56:33] <SquareWheel> Yeah. That was always an issue with CC. Doing it client-side then just syncing would feel much smoother.
L1365[16:56:37] <ghz|afk> local echo can work in two ways, buffered, or unbuffered. if buffered, the input is only sent when pressing enter
L1366[16:56:57] <ghz|afk> if unbuffered, then you assume the terminal will work eventually
L1367[16:57:04] <ghz|afk> and just avoid the feeling of lag
L1368[16:57:11] <TangentDelta> Yeah. I'll probably just use a standard keyboard buffer for keyboard input.
L1369[16:58:47] <TangentDelta> Hey, I have a working block! I can actually move onto the fun stuff now!
L1370[16:59:00] <ghz|afk> :)
L1371[16:59:45] ⇨ Joins: Vaht (~Tahg@pool-71-248-165-18.bstnma.fios.verizon.net)
L1372[16:59:45] MineBot sets mode: +v on Vaht
L1373[17:00:38] ⇦ Quits: Tahg (~Tahg@pool-71-248-165-18.bstnma.fios.verizon.net) (Ping timeout: 186 seconds)
L1374[17:01:27] <TangentDelta> Every time I start modding again, I have to take some time and relearn a lot of the stuff.
L1375[17:03:35] ⇦ Quits: Actuarius (~Actuarius@195.91.246.187) (Read error: Connection reset by peer)
L1376[17:04:03] ⇨ Joins: Shambling (~Shambling@24-181-186-74.dhcp.nwtn.ct.charter.com)
L1377[17:04:14] ⇨ Joins: Actuarius (~Actuarius@195.91.246.187)
L1378[17:04:14] MineBot sets mode: +v on Actuarius
L1379[17:04:21] ⇨ Joins: howtonotwin (~howtonotw@r75-110-22-15.gvllcmtc01.gnvlnc.ab.dh.suddenlink.net)
L1380[17:04:25] ⇦ Quits: ThePsionic (~ThePsioni@ip5457f909.direct-adsl.nl) (Quit: Leaving)
L1381[17:06:15] <Shambling> is there a way to run a java debugger live in the background on an actual live version of minecraft?
L1382[17:10:10] <howtonotwin> I'd assume you'd attach a debugger to it just like any other Java program.
L1383[17:12:03] ⇦ Quits: RichardG (~richardg8@201.37.241.91) (Ping timeout: 206 seconds)
L1384[17:12:10] <howtonotwin> But "actual live version" is a bit unclear; what exactly do you want?
L1385[17:12:47] <howtonotwin> (Also, were you the one that was reading my docs? Any glaring errors?)
L1386[17:13:00] <diesieben07> you need some command line args when launching the JVM
L1387[17:13:05] <diesieben07> and then you can attach the debugger
L1388[17:13:18] <diesieben07> usually your IDE should give you the needed arguments when you create a "Remote" launch configuratin
L1389[17:15:16] <howtonotwin> Attaching this to the opts should work "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n"
L1390[17:15:31] <howtonotwin> You'll get a port number that you can then attach e.g. JDB to.
L1391[17:16:27] <diesieben07> ehhh no
L1392[17:16:32] <diesieben07> JDB is THE debugging API
L1393[17:16:39] <diesieben07> you attach something TO jdb ;)
L1394[17:16:43] <kenzierocks> visualvm :D
L1395[17:16:47] <kenzierocks> or eclipse, or intellij
L1396[17:16:49] <kenzierocks> or whatever
L1397[17:16:59] <kenzierocks> visualvm is not really a debugger for code tho
L1398[17:17:00] <howtonotwin> you can spec the port directly with "address=127.0.0.1:port" added to the list of options to the switch.
L1399[17:17:55] ⇨ Joins: quadraxis (~quadraxis@cpc77293-basf12-2-0-cust699.12-3.cable.virginm.net)
L1400[17:20:04] ⇨ Joins: p455w0rd (~p455w0rd@172.76.203.10)
L1401[17:26:21] <gr8pefish> howtonotwin, do you have any experience with the PlayerEvent.StartTracking event? (trying to update a visual aspect of a capability to nearby players)
L1402[17:26:51] <howtonotwin> No, sorry.
L1403[17:26:51] ⇦ Quits: alekso56 (~znc@ti0107a400-1168.bb.online.no) (Read error: Connection reset by peer)
L1404[17:27:30] <Shambling> I've got a very weird error with a mod not exporting configs, and I'm trying to find out what mod is causing the conflict
L1405[17:27:38] <gr8pefish> alright, no problem
L1406[17:27:44] * gr8pefish digs deeper into mc source code
L1407[17:27:47] <Shambling> as I've had it work with the "all the mods" modpack, but not with the one I am building
L1408[17:27:51] ⇨ Joins: alekso56 (~znc@ti0107a400-1168.bb.online.no)
L1409[17:29:18] <howtonotwin> you and MCPBot will probably have a very intimate relationship for the following few hours :P
L1410[17:29:25] <Shambling> know of any similar mods that you could poke around in their source code? maybe someone has good documentation thats done similar
L1411[17:29:38] <howtonotwin> though why not do a search for the combination of mods that causes the issue?
L1412[17:31:06] <Shambling> I've been going through and reducing mod and forge versions already howtonotwin
L1413[17:31:34] <Shambling> I've had this harvesttweaker mod working before for allthemods, and my pack is basically that, minus any mods that don't really fit a steampunk theme
L1414[17:31:40] *** amadornes is now known as amadornes[OFF]
L1415[17:31:58] <howtonotwin> Do say that you're doing some kind of binary search and it isn't one by one :P
L1416[17:33:06] <Shambling> it takes 5 minutes to load the whole thing, why I was looking to see if something was thrown from the mod during login
L1417[17:33:18] <Shambling> I want to capture the file generation time, and see what class is failing
L1418[17:33:30] <Shambling> as the logs basically just say the same as with the working pack
L1419[17:33:40] <Shambling> hell I went so far as to create a new instance in-case the folder was messed up
L1420[17:33:58] <Shambling> hey gr8pefish, did you make sure that https://github.com/MinecraftForge/MinecraftForge/issues/1204 has been resolved?
L1421[17:34:32] <Shambling> it looks like the clientside implementation of those events were not working in the past, and I don't see it as 'fixed' just 'closed'
L1422[17:35:00] <Shambling> or are you doing this for a server side mod? in that case, nm
L1423[17:35:58] <gr8pefish> Nah it isn't just server side. Thanks for the link, I'll investigate it.
L1424[17:36:43] <howtonotwin> They don't need client impls, because that's equivalent to the entity actually leaving the world for the client. (according to the comments on the issue)
L1425[17:37:35] <howtonotwin> or joining
L1426[17:37:55] <gr8pefish> ^ Yup. The issue I'm running into is that it doesn't seem to be firing for other players, just other entities (i.e. EntitySkeleton), so that's what I'm trying to breakpoint debug atm
L1427[17:37:59] <kenzierocks> yep
L1428[17:38:13] <kenzierocks> hmm, it should
L1429[17:38:30] <kenzierocks> all other players are is just an entity
L1430[17:39:23] <gr8pefish> Yup, that's what I thought. But breakpoint iterating it only gives ItemEntity (a dropped egg), a creepr, a skeleton, a pig, etc. but not the other player (that is definitely in view).
L1431[17:40:19] <kenzierocks> you mean EntityItem :P
L1432[17:40:23] *** Darkhax is now known as Darkhax_AFK
L1433[17:41:12] <gr8pefish> yeah, that one :P Entities work but not EntityPlayers
L1434[17:41:18] <Shambling> alright, so step one is removing any mods that don't add blocks and see if it works
L1435[17:41:34] <Shambling> I'm thinking roguelike dungeons or similar mod that adds unbreakable superblocks
L1436[17:41:52] <Shambling> or notenoughwands with the block protection
L1437[17:41:57] <howtonotwin> why would that have anything to do with anything?
L1438[17:42:16] <Shambling> in case its iterating through all the blocks and hitting one it has no failsafe for
L1439[17:43:23] <Shambling> i've looked at the source and the logs, and honestly I think its just my computer at this point :P
L1440[17:43:47] <howtonotwin> You said nothing about iterating all blocks before ._. (But wouldn't such a failure throw an exception? If it doesn't add a failsafe that does :D)
L1441[17:44:04] <Shambling> I've seen the logs, it does throw a log for blocks that it has a failsafe for
L1442[17:44:04] <howtonotwin> I say "failSAFE"
L1443[17:44:08] <Shambling> and I've seen it safely bypass those
L1444[17:44:22] <Shambling> just not for this pack I'm trying to build lol
L1445[17:44:44] <howtonotwin> logging blocks that it succeeds on but not those it fails on seems like a terrible idea to me...
L1446[17:45:17] <Shambling> no no, its logging the ones it bypasses. I just don't see any difference between any of the failed ones. i.e. nothing that stands out and says "hey, thats why it didn't gen the config"
L1447[17:45:37] <Shambling> so I'm going to try removing some of the newer mods that weren't in the pack I know it worked on
L1448[17:46:19] ⇦ Quits: [NK]Ghost (~GFt@72.64.90.31) ()
L1449[17:46:19] <Shambling> actually I'm doing this all wrong, every block lists its mod, I'll check look at the config and see which mods are missing
L1450[17:46:31] <Shambling> and try removing those
L1451[17:47:00] <kenzierocks> gr8pefish: how are you checking for players clientside
L1452[17:47:16] <kenzierocks> EntityPlayer, EntityPlayerSP, or EntityPlayerMP?
L1453[17:48:34] <gr8pefish> I was checking EntityPlayer, but putting a breakpoint on that code didn't yield any other form of EntityPlayer: https://github.com/gr8pefish/OpenGlider/blob/7374c09fb540f715f970f1115cfe53da28f24977/src/main/java/gr8pefish/openglider/common/event/ServerEventHandler.java#L52-L52
L1454[17:48:50] <kenzierocks> EntityPlayer should work
L1455[17:50:02] <gr8pefish> Hmm. It doesn't; the code never reaches the following line.
L1456[17:50:34] ⇦ Quits: Noppes (~Noppes@ip56530f2e.direct-adsl.nl) (Read error: Connection reset by peer)
L1457[17:50:53] <kenzierocks> but it does hit 52?
L1458[17:51:43] <howtonotwin> Why debug just your event handler? Debug the thing actually posting the event too.
L1459[17:52:34] <gr8pefish> howtonotwin, that's what I have been doing for the last hour or so. It seems it is never called with a player there either, so now I am debugging the previous call...
L1460[17:53:07] <howtonotwin> watchpoint the list of tracked entities?
L1461[17:53:29] <howtonotwin> see if the thing that starts tracking entities has a guard for players or something
L1462[17:54:17] <gr8pefish> Yeah it jumps around a bit, so I'm just diving down the rabbit hole looking for exactly that ^
L1463[17:58:14] ⇨ Joins: Brokkoli (~Brokkoli@p5B23C07C.dip0.t-ipconnect.de)
L1464[17:59:30] ⇨ Joins: killjoy (~killjoy@71.65.228.225)
L1465[18:06:08] ⇦ Quits: iari (~iari___@evana.futhark24.org) (Quit: Leaving)
L1466[18:09:39] <kenzierocks> gr8pefish: i got EntityPlayerMP tracked in an event handler
L1467[18:09:40] <kenzierocks> https://i.imgur.com/jbPcKhw.png
L1468[18:10:18] <gr8pefish> gah, what am I doing then? Can I see your code you used to test that? Or is it pure debugger stuff?
L1469[18:10:29] <gr8pefish> also, dev environment I'm guessing?
L1470[18:10:48] <kenzierocks> https://gist.github.com/kenzierocks/6c1f52bbfcb011fe413afcc9d60c279a
L1471[18:10:50] <kenzierocks> dev yes
L1472[18:11:16] <kenzierocks> also MinecraftForge.EVENT_BUS.register(this);
L1473[18:11:48] <kenzierocks> looks like you got that: https://github.com/gr8pefish/OpenGlider/blob/7374c09fb540f715f970f1115cfe53da28f24977/src/main/java/gr8pefish/openglider/common/OpenGlider.java#L63
L1474[18:12:14] <gr8pefish> yeah I may have switched the tracker and trackee
L1475[18:12:26] <gr8pefish> https://github.com/gr8pefish/OpenGlider/blob/7374c09fb540f715f970f1115cfe53da28f24977/src/main/java/gr8pefish/openglider/common/event/ServerEventHandler.java#L50
L1476[18:12:48] ⇦ Quits: Jezza (~Jezza@92.206.4.86) (Ping timeout: 384 seconds)
L1477[18:12:52] <kenzierocks> no, that looks right
L1478[18:13:03] <gr8pefish> I don't test for that thing, and your output did. The javadoc wording was ambiguous, so I may have switched the two.
L1479[18:13:16] <kenzierocks> for what thing
L1480[18:13:27] <gr8pefish> I'm trying to search for getTarget instanceOf EntityPlayer
L1481[18:13:30] *** Darkhax_AFK is now known as Darkhax
L1482[18:13:39] <kenzierocks> that's right
L1483[18:14:14] <gr8pefish> oh derp, I should really read the whole output string
L1484[18:14:32] <gr8pefish> hmm, I must be messing up somewhere
L1485[18:15:15] *** diesieben07 is now known as diesieben|away
L1486[18:15:38] <Shambling> well I found my culprit
L1487[18:15:49] <Shambling> unfortunately its railcraft... and railcraft really fits with this pack
L1488[18:16:12] <Shambling> so... make modpack... don't add railcraft, generate config, edit blocks, re-add railcraft. lol
L1489[18:17:51] <Shambling> does railcraft do something weird with blocks and harvest levels?
L1490[18:17:54] ⇦ Quits: Abastro (~Abastro@175.117.182.109) (Ping timeout: 384 seconds)
L1491[18:18:04] ⇨ Joins: Abastro (~Abastro@110.70.54.120)
L1492[18:19:42] <Shambling> hell maybe its just reaching a max number of errors because of railcraft and fails to generate the config then. Who knows *shrug*
L1493[18:26:31] ⇨ Joins: Waterpicker (~Waterpick@2602:306:35ba:ca40:f08b:a8cd:ffbc:12b9)
L1494[18:26:35] <Waterpicker> Hello.
L1495[18:27:11] <Waterpicker> Does anyone know how to fix an idea work environment if minecraft forge sudden removes itself form the library list
L1496[18:27:30] <ghz|afk> it should be enough to click the blue refresh arrow on the gradle panel
L1497[18:27:40] <ghz|afk> if not, then rerun setupDecompWorkspace -- it is much faster if it can reuse cached values
L1498[18:28:40] <Shambling> now that I know the mod that causes this, I suppose I should submit a bug report on boni's tracker :\
L1499[18:28:51] <Shambling> damned if I know the incompatible code :p
L1500[18:31:52] <ghz|afk> night ppl
L1501[18:31:54] * ghz|afk poofs
L1502[18:32:26] <Waterpicker> there we go.
L1503[18:32:37] <Waterpicker> It was because I was trying to compile a compiled jar
L1504[18:32:45] <Waterpicker> swtiched it to runtime and fixed. :D
L1505[18:37:21] <TangentDelta> Aww...the game just freezes up when I accidentally teleport myself to the integer overflow value.
L1506[18:37:39] <TangentDelta> And Minecraft stole my mouse cursor. Interesting...
L1507[18:39:33] *** tterrag|away is now known as tterrag
L1508[18:46:32] ⇦ Quits: ScottehBoeh (~ScottehBo@95.144.45.252) (Quit: Leaving)
L1509[19:03:42] <gr8pefish> kenzierocks, sweet, finally got it to work on StartTracking! However, it doesn't consistently update. Is that because of an error in this method's code, or do I need to also add a "onTrackedPlayerUpdate" method or something along those lines? Here's what I have so far: https://github.com/gr8pefish/OpenGlider/blob/547e3635ba748e2afde71ca3c3090a1e7fa4f778/src/main/java/gr8pefish/openglider/common/event/ServerEv
L1510[19:03:42] <gr8pefish> entHandler.java#L54
L1511[19:03:50] <gr8pefish> * link fixed: https://github.com/gr8pefish/OpenGlider/blob/547e3635ba748e2afde71ca3c3090a1e7fa4f778/src/main/java/gr8pefish/openglider/common/event/ServerEventHandler.java#L54
L1512[19:04:37] <kenzierocks> what do you mean consistently update
L1513[19:05:36] <killjoy> why are you testing the class instead of using Instanceof
L1514[19:06:23] <gr8pefish> oops, relic of testuign code
L1515[19:07:34] <gr8pefish> consistently update: It updates on login just fine. If my player has the cap it shows the extra layer, and if the player doesn't it doesn't. But if the player uses my item to update the capability then it doesn't update on the player watching that (i.e. the extra layer doesn't change, it doesn't appear or disappear)
L1516[19:07:34] ⇦ Quits: itachi1706 (~itachi170@doserver.itachi1706.com) (Ping timeout: 206 seconds)
L1517[19:07:52] <kenzierocks> why would that change anything in the tracker
L1518[19:08:15] <kenzierocks> that sounds like you need to send a packet or something
L1519[19:08:38] ⇨ Joins: itachi1706 (~itachi170@doserver.itachi1706.com)
L1520[19:09:25] ⇦ Quits: Emris (~Miranda@62.178.245.147) (Read error: Connection reset by peer)
L1521[19:09:49] <gr8pefish> I am sending a packet already in the tracker. My question is if I need to send another one manually every time the cap changes (i.e. updateWatchers or something), because that doesn't seem to be covered already by the startTracking code (as I thought it might have).
L1522[19:10:10] <kenzierocks> why would that be covered by *start* tracking
L1523[19:10:39] <kenzierocks> i can understand the tracking code maybe doing something, but you only start tracking an entity when it comes into your range
L1524[19:11:48] <gr8pefish> It wasn't the best assumption by me. I thought, for some reason, it would add it to a list of watchers automatically and update via vanilla built in stuff.
L1525[19:12:32] <kenzierocks> it does
L1526[19:12:53] <kenzierocks> but it doesn't call start tracking every time it does an update
L1527[19:14:22] <gr8pefish> So I'm guessing there is an event or method that I need to override/subscribe to in order to update? Or is it ismply just sending my packet.toAllAround() evey time my capability changes?
L1528[19:14:48] <kenzierocks> use the entity tracker
L1529[19:15:01] <kenzierocks> it has methods for sending packets to players tracking an entity
L1530[19:17:23] ⇨ Joins: abab9579 (~Abastro@175.117.182.109)
L1531[19:17:26] <gr8pefish> [Only if you have an IDE open] How do I get to the EntityTracker class from a player (seeing as it isn't static)?
L1532[19:18:05] <kenzierocks> WorldServer.getEntityTracker
L1533[19:19:30] <gr8pefish> thanks!
L1534[19:23:38] ⇦ Quits: Abastro (~Abastro@110.70.54.120) (Ping timeout: 384 seconds)
L1535[19:27:33] ⇦ Quits: alekso56 (~znc@ti0107a400-1168.bb.online.no) (Read error: Connection reset by peer)
L1536[19:28:59] <gr8pefish> Do I have to implement a <Class implements Packet> instead of the normal <Class implements IMessage> (i.e. simpleimpl) for this?
L1537[19:29:48] ⇦ Quits: killjoy (~killjoy@71.65.228.225) (Ping timeout: 206 seconds)
L1538[19:31:08] ⇨ Joins: jackmcbarn (jackmcbarn@gateway.insomnia247.nl)
L1539[19:32:57] *** Mine|away is now known as minecreatr
L1540[19:33:17] <kenzierocks> no
L1541[19:33:27] <kenzierocks> you can get a packet somehow
L1542[19:33:32] <kenzierocks> i dont remember exactly how
L1543[19:34:16] <gr8pefish> so somehow get a packet from the IMessage, and pass that to [public void sendToAllTrackingEntity(Entity entityIn, Packet<?> packetIn)]
L1544[19:34:34] <kenzierocks> yea
L1545[19:34:59] <kenzierocks> you havea SimpleNetworkWrapper, yea?
L1546[19:35:05] <kenzierocks> getPacketFrom(IMessage message)
L1547[19:35:50] <gr8pefish> oh nice, that's easy, thank you!
L1548[19:36:35] ⇨ Joins: alekso56 (~znc@ti0107a400-1168.bb.online.no)
L1549[19:40:43] ⇦ Quits: sinkillerj (~sinkiller@nc-67-232-8-209.dhcp.embarqhsd.net) (Quit: またね)
L1550[19:42:49] <gr8pefish> It's beautiful! finally :)
L1551[19:43:07] <gr8pefish> kenzierocks, you rock, thanks so much for all the help!
L1552[19:43:17] <kenzierocks> no problem
L1553[19:46:56] <gr8pefish> It's not perfect (it seems to update a little oddly, the extra layer jumps around some), but it's so much better than it was earlier
L1554[19:57:04] <TangentDelta> I totally forgot that you have to break switch statements and just wasted an hour only to figure that out...
L1555[19:57:47] ⇦ Quits: Shambling (~Shambling@24-181-186-74.dhcp.nwtn.ct.charter.com) (Quit: Leaving)
L1556[19:58:39] <kenzierocks> sounds like a bad case of brain farts
L1557[19:59:10] <TangentDelta> Well, now I have a world-stepping object which will make building the machine architecture easier...
L1558[20:00:49] <TangentDelta> Mmm...
L1559[20:03:15] <TangentDelta> I think I'll just make a simple algorithm to test for all connected computer blocks and build the architecture accordingly. I was going to have a linear backplane coming off the back (like in RP2) but that's not very flexible.
L1560[20:15:43] ⇦ Quits: Intektor (~Intektor@p5B275568.dip0.t-ipconnect.de) (Ping timeout: 206 seconds)
L1561[20:18:12] ⇦ Quits: edr (~edr@d-65-175-180-73.cpe.metrocast.net) (Read error: Connection reset by peer)
L1562[20:21:14] *** Vigaro is now known as V
L1563[20:49:17] ⇨ Joins: Cooler (~CoolerExt@45.249.156.23)
L1564[21:02:07] ⇦ Quits: Kaiyouka (~IdiotNono@c-75-71-231-133.hsd1.co.comcast.net) (Ping timeout: 206 seconds)
L1565[21:03:18] ⇦ Quits: Dries007 (~DriesZNC@abrarsyed.com) (Ping timeout: 186 seconds)
L1566[21:03:32] ⇦ Quits: Reika (~Reika@reika.kalseki.mods.abrarsyed.com) (Ping timeout: 198 seconds)
L1567[21:04:02] ⇨ Joins: Cojo (~Cojo@cpe-2606-A000-4C46-8D00-4156-6A71-27F0-A9C5.dyn6.twc.com)
L1568[21:04:03] ⇦ Quits: Girafi (~Girafi@0x555178eb.adsl.cybercity.dk) (Read error: Connection reset by peer)
L1569[21:04:03] ⇦ Quits: Wuppy (~wuppyZNC@abrarsyed.com) (Ping timeout: 206 seconds)
L1570[21:04:24] ⇦ Quits: diesieben|away (~diesieben@2001:19f0:6400:8965:5400:ff:fe07:8777) (Ping timeout: 182 seconds)
L1571[21:04:24] ⇦ Quits: Kolatra (~Kolatra@abrarsyed.com) (Ping timeout: 182 seconds)
L1572[21:04:24] ⇦ Quits: AbrarSyed (~AbrarSyed@ipv6.abrarsyed.com) (Ping timeout: 182 seconds)
L1573[21:07:05] ⇨ Joins: Tahgtahv (~Tahg@pool-71-248-165-18.bstnma.fios.verizon.net)
L1574[21:07:05] MineBot sets mode: +v on Tahgtahv
L1575[21:07:24] ⇦ Quits: luacs1998 (~sayuka@abrarsyed.com) (Ping timeout: 384 seconds)
L1576[21:07:27] ⇨ Joins: SeargeDP (~Searge@c83-250-150-134.bredband.comhem.se)
L1577[21:07:36] ⇨ Joins: AforAnonymous (bitch2k@dyn-050-043.vix2.mmc.at)
L1578[21:08:13] ⇨ Joins: Abrar|gone (~AbrarSyed@ipv6.abrarsyed.com)
L1579[21:08:13] MineBot sets mode: +o on Abrar|gone
L1580[21:08:43] *** Abrar|gone is now known as AbrarSyed
L1581[21:09:36] ⇦ Quits: Redfoxmoon (~Red@177.92-221-236.customer.lyse.net) (Ping timeout: 384 seconds)
L1582[21:09:37] ⇦ Quits: progwml6 (~progwml6@104.168.20.187) (Ping timeout: 384 seconds)
L1583[21:09:37] ⇦ Quits: Meow-J (~Meow-J@45.32.34.121) (Ping timeout: 384 seconds)
L1584[21:09:37] ⇦ Quits: Zidane (~Zidane@e3-1270v3.bl-ash0.1.1.2.10.k8.securedservers.com) (Ping timeout: 384 seconds)
L1585[21:09:37] ⇦ Quits: bilde2910 (bilde2910@51.174.170.178) (Ping timeout: 384 seconds)
L1586[21:09:37] ⇦ Quits: MCPBot_Reborn (~MCPBot_Re@mcpbot.bspk.rs) (Ping timeout: 384 seconds)
L1587[21:09:37] ⇨ Joins: droidicus_ (uid120579@id-120579.brockwell.irccloud.com)
L1588[21:09:42] ⇨ Joins: Reika (~Reika@reika.kalseki.mods.abrarsyed.com)
L1589[21:09:46] ⇨ Joins: tfox83_ (sid47177@2604:8300:100:200b:6667:3:0:b849)
L1590[21:10:10] ⇨ Joins: diesieben|away (~diesieben@abrarsyed.com)
L1591[21:10:11] ⇦ Quits: Chais (~Chais@62-178-210-212.cable.dynamic.surfer.at) (Ping timeout: 384 seconds)
L1592[21:10:11] ⇦ Quits: smbarbour (~smbarbour@c-73-211-171-154.hsd1.il.comcast.net) (Ping timeout: 384 seconds)
L1593[21:10:31] ⇨ Joins: DUX (~DUX@HSI-KBW-46-223-0-70.hsi.kabel-badenwuerttemberg.de)
L1594[21:10:37] *** diesieben|away is now known as diesieben07
L1595[21:10:44] ⇦ Quits: abab9579 (~Abastro@175.117.182.109) (Ping timeout: 384 seconds)
L1596[21:10:45] ⇦ Quits: nekosune (~BNCClient@darkmatter.spacetechnology.net) (Ping timeout: 384 seconds)
L1597[21:10:45] ⇦ Quits: Keridos|away (~Keridos@ironhide.stw-bonn.de) (Ping timeout: 384 seconds)
L1598[21:10:45] ⇦ Quits: Hobbyboy (Hobbyboy@hobbyboy.co.uk) (Ping timeout: 384 seconds)
L1599[21:10:45] ⇦ Quits: shadowfacts (shadowfact@is.aww.moe) (Ping timeout: 384 seconds)
L1600[21:10:46] ⇨ Joins: Wuppy (~wuppyZNC@abrarsyed.com)
L1601[21:11:18] ⇦ Quits: KomradeSpectre (~Darwin@d47-69-240-161.try.wideopenwest.com) (Ping timeout: 384 seconds)
L1602[21:11:18] ⇦ Quits: bochen415 (~bochen415@2a03:b0c0:1:a1::25e:e001) (Ping timeout: 384 seconds)
L1603[21:11:19] ⇦ Quits: tfox83 (sid47177@id-47177.charlton.irccloud.com) (Ping timeout: 384 seconds)
L1604[21:11:19] ⇦ Quits: cppchriscpp (~cppchrisc@c-76-24-45-127.hsd1.nh.comcast.net) (Ping timeout: 384 seconds)
L1605[21:11:19] *** AforAnonymous is now known as lolinternet
L1606[21:11:19] *** tfox83_ is now known as tfox83
L1607[21:11:30] ⇦ Quits: Techno (~quassel@cpe-72-230-173-5.rochester.res.rr.com) (Network ban)
L1608[21:11:55] ⇦ Quits: alekso56 (~znc@ti0107a400-1168.bb.online.no) (Ping timeout: 384 seconds)
L1609[21:11:55] ⇦ Quits: Brokkoli (~Brokkoli@p5B23C07C.dip0.t-ipconnect.de) (Ping timeout: 384 seconds)
L1610[21:11:55] ⇦ Quits: secknv (~secknv@2001:8a0:6c73:3001:856d:b759:19d8:30f6) (Ping timeout: 384 seconds)
L1611[21:11:55] ⇦ Quits: core (~core@ilya.xxx) (Ping timeout: 384 seconds)
L1612[21:11:55] ⇦ Quits: Blarghedy (~Blarghedy@50-90-115-148.res.bhn.net) (Ping timeout: 384 seconds)
L1613[21:11:55] ⇦ Quits: Cypher121 (~Cypher121@fox.cypher.coffee) (Ping timeout: 384 seconds)
L1614[21:11:55] ⇦ Quits: barteks2x (barteks2x@it.is.your.corrupt.we.claim.panicbnc.org) (Ping timeout: 384 seconds)
L1615[21:11:55] ⇦ Quits: Aroma1997 (~Aroma1997@104.131.97.244) (Ping timeout: 384 seconds)
L1616[21:11:55] ⇦ Quits: Skuli (~Skuli@107.170.86.178) (Ping timeout: 384 seconds)
L1617[21:12:26] ⇦ Quits: Vaht (~Tahg@pool-71-248-165-18.bstnma.fios.verizon.net) (Ping timeout: 384 seconds)
L1618[21:12:26] ⇦ Quits: AshIndigo-Sleeping (~AshIndigo@188.29.164.11.threembb.co.uk) (Ping timeout: 384 seconds)
L1619[21:12:26] ⇦ Quits: SubShop (~Artix@mf763-h01-176-150-102-154.dsl.sta.abo.bbox.fr) (Ping timeout: 384 seconds)
L1620[21:12:26] ⇦ Quits: Searge (~Searge@c83-250-150-134.bredband.comhem.se) (Ping timeout: 384 seconds)
L1621[21:12:26] ⇦ Quits: phroa (phroa@173.254.236.155) (Ping timeout: 384 seconds)
L1622[21:12:26] ⇦ Quits: amadornes[OFF] (~amadornes@framez.is.wtfcool.com) (Ping timeout: 384 seconds)
L1623[21:12:26] ⇦ Quits: md_5 (~md_5@marius.md-5.net) (Ping timeout: 384 seconds)
L1624[21:12:26] ⇦ Quits: Chunkr (~~@ns383244.ip-46-105-102.eu) (Ping timeout: 384 seconds)
L1625[21:12:26] ⇦ Quits: tterrag (~tterrag@tterrag.com) (Ping timeout: 384 seconds)
L1626[21:12:26] ⇦ Quits: TvL2386 (~tom@143.176.221.37) (Ping timeout: 384 seconds)
L1627[21:12:26] ⇦ Quits: DemonWav (~DemonWav@69.197.179.106) (Ping timeout: 384 seconds)
L1628[21:12:26] ⇦ Quits: Corosus (~Corosus@135-23-126-120.cpe.pppoe.ca) (Ping timeout: 384 seconds)
L1629[21:12:26] ⇦ Quits: Sephiroth (Sephiroth@sephiroth.ws) (Ping timeout: 384 seconds)
L1630[21:12:26] ⇦ Quits: droidicus (uid120579@id-120579.brockwell.irccloud.com) (Ping timeout: 384 seconds)
L1631[21:12:26] ⇦ Quits: Raqbit (~Raqbit@vauff.me) (Ping timeout: 384 seconds)
L1632[21:12:26] ⇦ Quits: Kuraron (~DUX@HSI-KBW-46-223-0-70.hsi.kabel-badenwuerttemberg.de) (Ping timeout: 384 seconds)
L1633[21:12:26] ⇦ Quits: PolarizedPumpkin (~Polarized@vauff.me) (Ping timeout: 384 seconds)
L1634[21:12:27] ⇦ Quits: HiddenKnowledge (~HiddenKn@93.ip-158-69-206.net) (Ping timeout: 384 seconds)
L1635[21:12:27] ⇦ Quits: mafrasi2 (~quassel@2a01:4f8:130:6426::2) (Ping timeout: 384 seconds)
L1636[21:12:27] ⇦ Quits: ghac (~ghac@static.102.152.243.136.clients.your-server.de) (Ping timeout: 384 seconds)
L1637[21:12:27] ⇦ Quits: I9hdkill (~quassel@static.102.152.243.136.clients.your-server.de) (Ping timeout: 384 seconds)
L1638[21:12:27] ⇦ Quits: Tazz (socks@ds003.info) (Ping timeout: 384 seconds)
L1639[21:12:27] *** droidicus_ is now known as droidicus
L1640[21:12:45] ⇨ Joins: DemonWav (~DemonWav@69.197.179.106)
L1641[21:12:57] ⇨ Joins: I9hdkill (~quassel@static.102.152.243.136.clients.your-server.de)
L1642[21:12:57] ⇨ Joins: ghac (~ghac@static.102.152.243.136.clients.your-server.de)
L1643[21:13:31] ⇨ Joins: Brokkoli (~Brokkoli@p5b23c07c.dip0.t-ipconnect.de)
L1644[21:13:47] ⇨ Joins: Blarghedy (~Blarghedy@50-90-115-148.res.bhn.net)
L1645[21:13:52] ⇨ Joins: bochen415 (~bochen415@139.59.172.186)
L1646[21:14:02] ⇨ Joins: progwml6 (~progwml6@104.168.20.187)
L1647[21:14:12] ⇨ Joins: Cypher121 (~Cypher121@fox.cypher.coffee)
L1648[21:14:18] ⇨ Joins: core (~core@ilya.xxx)
L1649[21:14:19] ⇨ Joins: bilde2910 (bilde2910@51.174.170.178)
L1650[21:14:20] ⇨ Joins: Hobbyboy (Hobbyboy@hobbyboy.co.uk)
L1651[21:14:31] ⇨ Joins: Skuli (~Skuli@107.170.86.178)
L1652[21:14:31] ⇨ Joins: Kolatra (~Kolatra@2001:19f0:6400:8965:5400:ff:fe07:8777)
L1653[21:14:39] ⇨ Joins: barteks2x (barteks2x@it.is.your.corrupt.we.claim.panicbnc.org)
L1654[21:14:49] ⇨ Joins: nekosune (~BNCClient@darkmatter.spacetechnology.net)
L1655[21:14:51] ⇨ Joins: HiddenKnowledge (~HiddenKn@93.ip-158-69-206.net)
L1656[21:14:51] ⇨ Joins: md_5 (~md_5@marius.md-5.net)
L1657[21:14:52] ⇨ Joins: Aroma1997 (~Aroma1997@104.131.97.244)
L1658[21:14:59] ⇨ Joins: PolarizedIons (~Polarized@vauff.me)
L1659[21:15:19] ⇨ Joins: smbarbour (~smbarbour@c-73-211-171-154.hsd1.il.comcast.net)
L1660[21:15:34] ⇨ Joins: phroa (phroa@phroa.net)
L1661[21:15:34] ⇨ Joins: Chais (~Chais@62.178.210.212)
L1662[21:15:40] ⇨ Joins: Sephiroth (Sephiroth@sephiroth.ws)
L1663[21:15:54] ⇨ Joins: MCPBot_Reborn (~MCPBot_Re@mcpbot.bspk.rs)
L1664[21:16:00] ⇨ Joins: tterrag (~tterrag@tterrag.com)
L1665[21:16:47] ⇨ Joins: Keridos|away (~Keridos@ironhide.stw-bonn.de)
L1666[21:17:04] ⇨ Joins: amadornes[OFF] (~amadornes@framez.is.wtfcool.com)
L1667[21:17:04] MineBot sets mode: +v on amadornes[OFF]
L1668[21:17:17] ⇨ Joins: Corosus (~Corosus@135-23-126-120.cpe.pppoe.ca)
L1669[21:17:29] ⇨ Joins: Raqbit (~Raqbit@vauff.me)
L1670[21:17:41] *** amadornes[OFF] is now known as amadornes
L1671[21:24:19] ⇦ Quits: MalkContent (~MalkConte@p5B02D538.dip0.t-ipconnect.de) (Quit: Leaving)
L1672[21:29:17] ⇦ Quits: Cooler (~CoolerExt@45.249.156.23) (Quit: Leaving)
L1673[21:34:08] ⇦ Quits: bilde2910 (bilde2910@51.174.170.178) (Ping timeout: 195 seconds)
L1674[21:35:51] ⇨ Joins: bilde2910 (bilde2910@51.174.170.178)
L1675[21:43:12] ⇦ Quits: Waterpicker (~Waterpick@2602:306:35ba:ca40:f08b:a8cd:ffbc:12b9) (Ping timeout: 206 seconds)
L1676[21:48:19] ⇨ Joins: Abastro (~Abastro@175.117.182.109)
L1677[21:49:02] ⇨ Joins: AshIndigo (~AshIndigo@188.29.164.11.threembb.co.uk)
L1678[22:02:46] *** DarkevilAway is now known as Darkevilmac
L1679[22:07:51] ⇦ Quits: quadraxis (~quadraxis@cpc77293-basf12-2-0-cust699.12-3.cable.virginm.net) (Remote host closed the connection)
L1680[22:14:10] ⇦ Quits: bilde2910 (bilde2910@51.174.170.178) (Ping timeout: 183 seconds)
L1681[22:16:25] ⇨ Joins: bilde2910 (bilde2910@51.174.170.178)
L1682[22:20:57] ⇨ Joins: killjoy (~killjoy@71.65.228.225)
L1683[22:26:40] ⇦ Quits: Abastro (~Abastro@175.117.182.109) (Ping timeout: 384 seconds)
L1684[22:28:10] ⇨ Joins: McJty (~jorrit@d8d8721d2.access.telenet.be)
L1685[22:29:01] ⇨ Joins: killjoy1 (~killjoy@71.65.228.225)
L1686[22:29:03] ⇨ Joins: cpup (~cpup@32.218.115.160)
L1687[22:29:36] ⇦ Quits: killjoy (~killjoy@71.65.228.225) (Ping timeout: 206 seconds)
L1688[22:30:24] <killjoy1> I hadn't used this alt in so long it expired
L1689[22:30:41] <kenzierocks> riperoni
L1690[22:33:22] ⇨ Joins: illy (uid69226@id-69226.charlton.irccloud.com)
L1691[22:33:55] ⇨ Joins: octylFractal (webchat@ip98-182-24-67.sb.sd.cox.net)
L1692[22:34:13] ⇦ Quits: octylFractal (webchat@ip98-182-24-67.sb.sd.cox.net) (Client Quit)
L1693[22:45:31] ⇨ Joins: mallrat208 (~mallrat20@107-145-175-135.res.bhn.net)
L1694[22:53:32] ⇦ Quits: mallrat208 (~mallrat20@107-145-175-135.res.bhn.net) (Quit: Leaving)
L1695[22:55:30] ⇦ Quits: Lathanael|Away (~Lathanael@p549601DB.dip0.t-ipconnect.de) (Ping timeout: 183 seconds)
L1696[22:56:34] ⇦ Quits: auenf (David@DC-24-199.bpb.bigpond.com) (Remote host closed the connection)
L1697[22:57:32] ⇨ Joins: auenf (David@DC-24-199.bpb.bigpond.com)
L1698[22:57:34] ⇨ Joins: Lathanael|Away (~Lathanael@p549615D9.dip0.t-ipconnect.de)
L1699[22:58:41] ⇨ Joins: Kaiyouka (~IdiotNono@c-75-71-231-133.hsd1.co.comcast.net)
L1700[23:00:27] ⇨ Joins: Doty1154 (~Doty1154@c-73-189-164-179.hsd1.ca.comcast.net)
L1701[23:05:26] ⇨ Joins: secknv (~secknv@2001:8a0:6c73:3001:856d:b759:19d8:30f6)
L1702[23:11:59] ⇨ Joins: npe|office (~NPExcepti@bps-gw.hrz.tu-chemnitz.de)
L1703[23:17:59] ⇨ Joins: blood_ (unknown@ool-4574115b.dyn.optonline.net)
L1704[23:22:48] *** Darkevilmac is now known as DarkevilAway
L1705[23:27:35] ⇨ Joins: AstralSorcerer (~AstralSor@128.151.114.13)
L1706[23:31:29] <blood_> williewillus: im troubleshooting a bug with Botania/Sponge protection, can you tell me how I can attach a bore lens to a mana blaster
L1707[23:33:37] ⇦ Quits: Brokkoli (~Brokkoli@p5b23c07c.dip0.t-ipconnect.de) (Quit: Die Sprache der Politik ist daf�r gemacht, dass L�gen wahr klingen und das T�ten angemessen wirkt. (George Orwell))
L1708[23:35:20] ⇦ Quits: Kaiyouka (~IdiotNono@c-75-71-231-133.hsd1.co.comcast.net) (Ping timeout: 198 seconds)
L1709[23:35:51] ⇦ Quits: Cojo (~Cojo@cpe-2606-A000-4C46-8D00-4156-6A71-27F0-A9C5.dyn6.twc.com) (Quit: If we wish to explore, if we wish to see what's over the next hill, wonders unfold before us; all we have to do is want it enough.)
L1710[23:38:29] ⇨ Joins: Abastro (~Abastro@119.206.230.176)
L1711[23:44:34] ⇦ Quits: cpup (~cpup@32.218.115.160) (Ping timeout: 183 seconds)
L1712[23:48:43] ⇦ Quits: LexLap2 (~LexManos@50-196-5-249-static.hfc.comcastbusiness.net) (Ping timeout: 183 seconds)
L1713[23:49:05] ⇨ Joins: LexLap2 (~LexManos@50-196-5-249-static.hfc.comcastbusiness.net)
L1714[23:49:05] MineBot sets mode: +o on LexLap2
L1715[23:49:51] ⇦ Quits: McJty (~jorrit@d8d8721d2.access.telenet.be) (Quit: Leaving)
<<Prev Next>> Scroll to Top