<<Prev Next>> Scroll to Bottom
Stuff goes here
L1[00:12:22] ⇨ Joins: npe|office (~NPExcepti@bps-gw.hrz.tu-chemnitz.de)
L2[00:14:44] ⇨ Joins: Hunterz (~hunterz@2001:af0:8000:1c01:6af7:28ff:fe37:5d6a)
L3[00:23:00] ⇨ Joins: elan_oots (~elan_oots@104-186-40-156.lightspeed.iplsin.sbcglobal.net)
L4[00:26:47] ⇦ Quits: blood (unknown@ool-45734b88.dyn.optonline.net) ()
L5[00:40:52] ⇦ Quits: elan_oots (~elan_oots@104-186-40-156.lightspeed.iplsin.sbcglobal.net) (Remote host closed the connection)
L6[00:47:03] *** PaleOff is now known as PaleoCrafter
L7[01:21:59] <barteks2x> On one hand I really like PR #3979 (https://github.com/MinecraftForge/MinecraftForge/pull/3879)... o the other hand... I would need to rewrite nearly all the code in LightingEngine if it gets merged, and I don't have a clear idea for how it can be done without 100-bit data type
L8[01:22:24] <quadraxis> one day i'll stop clicking those channel links
L9[01:35:45] <ben_mkiv> is there kinda multitasking in java so that 2 methods run at the same time?
L10[01:36:21] <PaleoCrafter> Java does have threading, yes
L11[01:36:47] <ben_mkiv> but does minecraft use it?
L12[01:38:24] <PaleoCrafter> somewhat. Chunks are "pre-rendered" on a separate thread, for instance
L13[01:38:31] <PaleoCrafter> networking also happens separately
L14[01:38:39] <PaleoCrafter> but basically all game logic is single-threaded
L15[01:38:47] <ben_mkiv> thanks, my problem is that my item acts weired when getting charged by wireless charger in the armorslot
L16[01:38:53] <ben_mkiv> while it works fine in baubles slot or normal inventory
L17[01:39:08] <ben_mkiv> maybe some kind of client/server desync then?!
L18[01:39:54] <PaleoCrafter> possibly
L19[01:39:57] <ben_mkiv> the problem seems to be connected to the fact that im using power in the onUpdate() method of my item
L20[01:40:06] <ben_mkiv> as when i only consume every 2nd tick it kinda charges
L21[01:41:05] <ben_mkiv> the wireless charger from enderio calls player.inventoryContainer.detectAndSendChanges();
L22[01:41:11] <ben_mkiv> which probably forces a client/server sync?
L23[01:44:24] <mezz> detect and send changes is where the server decides if something has changed and it should send a packet to the client to tell it
L24[01:45:03] <ben_mkiv> thanks
L25[01:45:11] <ben_mkiv> and onUpdate for Items is called client and server side?
L26[01:45:13] ⇨ Joins: Ipsis (~Ipsis@82-69-71-184.dsl.in-addr.zen.co.uk)
L27[01:45:16] <ben_mkiv> each tick
L28[01:45:23] <mezz> yes
L29[01:45:34] <ben_mkiv> then i wonder where they could desync at all :/
L30[01:45:35] ⇨ Joins: Cornelia (~Nel@c-75-71-231-133.hsd1.co.comcast.net)
L31[01:46:13] <ben_mkiv> and why it looks like its working when i dont consume energy each tick (which everytime updates the items nbt)
L32[01:46:14] <mezz> this is a hard thing to wrap your head around at first, but you should treat the server as the logical game, and the client is just visual stuff.
L33[01:46:15] ⇦ Parts: Ordinastie (~Ordinasti@bronyville.me) (Leaving))
L34[01:46:22] ⇨ Joins: Ordinastie (~Ordinasti@bronyville.me)
L35[01:46:59] <ben_mkiv> thats easy for me, i wrote server/client stuff before, but not for mc
L36[01:47:03] <mezz> when you are looking at a machine on the client, it is just a husk with lights and buttons. the real machinery is happening on the server, and the server just sends the minimal info to the client
L37[01:47:15] <mezz> okay that's good to know
L38[01:47:30] <ben_mkiv> i want to consume the power clientside, too. to avoid syncing all the time
L39[01:47:47] <ben_mkiv> uhm, but client uses same tickrate as server, right?!
L40[01:47:55] <mezz> if you fake something on the client like that, you should still send an update from the server which overrides it
L41[01:48:08] <mezz> yes the tick rate is the same
L42[01:48:40] <mezz> the server must be the dominant authority in all things though, treat "consuming power on the client" as just predicting what will happen
L43[01:49:06] <ben_mkiv> yep, thats what i want to do, as said to keep sync packages at low rate
L44[01:49:16] <ben_mkiv> so they just do the same on client/server
L45[01:49:38] <mezz> if you have a gui open, feel free to update one packet every tick. a player can only have one gui open
L46[01:50:17] <mezz> it's only worth worrying about low rates for stuff like machines where there might be 100s all the time
L47[01:50:53] <mezz> but for guis, the main concern is maintaining the illusion that that the client is perfectly client and up to date :)
L48[01:51:06] <mezz> is perfectly correct and up to date*
L49[01:52:17] <ben_mkiv> as the user is only able to see the charge when inventory is open, that would work for my case
L50[01:52:31] <ben_mkiv> item doesnt consume power when in main inventory
L51[01:52:41] <mezz> cool
L52[01:53:38] <ben_mkiv> so i would just add the inventory sync call like enderio has it, and make my consumepower stuff a serverside override
L53[01:53:46] <ben_mkiv> so it wouldnt be called clientside
L54[01:53:48] <PaleoCrafter> dammit, just had a confusion due someone meaning the book "It" rather than the pronoun ._.
L55[01:54:30] <mezz> sounds good
L56[01:57:14] <mezz> when you say "serverside override" it makes me nervous though. what method are you using to make sure it only runs on the server?
L57[01:57:44] <ben_mkiv> @SideOnly(Side.SERVER)
L58[01:57:53] <mezz> ok you cannot do that
L59[01:57:53] <ben_mkiv> before i override onUpdate() of the item
L60[01:58:03] <ben_mkiv> yea, it does nothing now xD
L61[01:58:15] <ben_mkiv> oh wait
L62[01:58:19] <ben_mkiv> in baubles it still works
L63[01:58:25] <ben_mkiv> but in armorslot it wont consume power at all
L64[01:58:36] <ben_mkiv> but therefor it charges xD
L65[01:58:42] <ben_mkiv> fudge this...
L66[01:58:49] <mezz> you want something like if (!world.isRemote) { //do server stuff }
L67[01:59:15] <mezz> using SideOnly server really messes with things, especially singleplayer
L68[01:59:28] <mezz> you should basically never need to use it
L69[01:59:31] <ben_mkiv> ok, so only call the inventorysync serverside after consuming power
L70[02:02:42] <ben_mkiv> oh wait, now it works, but only when i close inventory gui once...
L71[02:02:52] <ben_mkiv> i might have a clue of whats going on
L72[02:04:26] ⇦ Quits: Neal (~Neal@47.146.41.184) (Ping timeout: 383 seconds)
L73[02:07:05] <ben_mkiv> so now when moving the item from inventory to armorslot, i have to close the inventory once to see that the item is charging
L74[02:07:46] <ben_mkiv> does the client inventory sync to server on closing it?
L75[02:08:08] <ben_mkiv> or for every change that is made
L76[02:09:20] <mezz> client actions like clicks are sent immediately
L77[02:11:41] <mezz> I'm off to sleep, good night o/
L78[02:11:48] <ben_mkiv> gn8 and thanks for help :)
L79[02:17:12] <ben_mkiv> got it working, even tho i dont understand what was going on -.-
L80[02:17:36] <ben_mkiv> but now it only consumes energy serverside and sends a sync to the client
L81[02:23:21] ⇨ Joins: Noppes (~Noppes@ip56530f2e.direct-adsl.nl)
L82[02:26:53] ⇨ Joins: gigaherz|work (~gigaherz@84.89.63.25)
L83[02:27:59] ⇦ Quits: Dimtree (~dimtree@2002:4b6d:9995:0:3fc5:69d6:2cbe:9704) (Quit: Peace)
L84[02:29:54] ⇨ Joins: SparkVGX (~SparkVGX@121.99.203.245)
L85[02:32:52] ⇨ Joins: Dimtree (~dimtree@2002:4b6d:9995:0:3fc5:69d6:2cbe:9704)
L86[02:45:19] ⇦ Quits: Larry1123 (Larry1123@irc.larry1123.net) (Ping timeout: 383 seconds)
L87[02:51:31] ⇨ Joins: Javaschreiber (~Thunderbi@88-209-32-73.nga.highspeed-baumann.de)
L88[03:01:35] ⇨ Joins: darkstone (~blackgem@ip72-204-2-70.fv.ks.cox.net)
L89[03:01:40] <darkstone> Hello.
L90[03:01:48] <darkstone> Can I get support here for Forge, or do I have to go somewhere else still?
L91[03:02:08] <ben_mkiv> ask your question, either someone answers or not^
L92[03:02:11] <Backslash> darkstone, ask your question and if someone has time he will answer ;)
L93[03:02:29] <darkstone> Thanks!
L94[03:02:52] <darkstone> So, I'm having a problem with the Forge version for Minecraft 1.10.2.
L95[03:03:06] <darkstone> It's the newest version that iChun's Portal Gun is updated to, so it's kinda necessary that I use this version.
L96[03:03:21] <darkstone> However, though it worked fine on my computer (without a hitch, etc) it's borking on my friend's.
L97[03:03:39] <darkstone> Both of us are Win7 64 bit, using the exact same Java version, exact same mods, exact same Forge installer.
L98[03:04:14] <darkstone> But my friend's Java 'stops working' and Windows 'can't find a solution' (as always) about the same point in the logs every time.
L99[03:04:32] <darkstone> I tried switching it to Java 6, which is also on the computer for a different project, and it ran fine - but of course, the mods need java 8.
L100[03:04:56] <darkstone> Anyone have an idea what could be the problem? I've been pounding Google into the ground with searches and trying things, moving mods around, etc for an hour.
L101[03:05:30] <xaero> "Java 'stops working' and Windows 'can't find a solution' (as always) about the same point in the logs every time." - it's necessary to expand on this
L102[03:05:46] <darkstone> I'll try, but the logs kinda went with the computer which went to another room.
L103[03:06:38] <darkstone> okay, checking my own logs I came up with the points it crashed on friend's.
L104[03:06:48] <darkstone> With mods in the folder, it always crashed at: "[01:53:31] [Forge Version Check/INFO] [ForgeVersionCheck]: [Forge] Found status: AHEAD Target: null" or right after it.
L105[03:07:14] <darkstone> WITHOUT mods in the folder, it was slightly different: crashed at "[01:53:45] [Client thread/INFO]: Created: 512x512 textures-atlas"
L106[03:08:06] <darkstone> Mods btw were Forestry (an unstable version for 1.10.2), Portal Gun and iChunUtil by iChun. All for 1.10.2 and working fine on my computer.
L107[03:08:35] <Backslash> darkstone, upload logs to pastebin and dont post them in pieces in the irc. Its impossible to find problems this way.
L108[03:08:59] <darkstone> I do not HAVE the logs. Friend left the room with the computer and is going to bed. I could go ask for it but I dunno how well THAT'S gonna go.
L109[03:09:05] <darkstone> Gimme a sec to finish my sandwich.
L110[03:09:05] <gigaherz|work> darkstone: what do you use as a launcher?
L111[03:09:19] <gigaherz|work> the modern vanilla launchers all come with their own java runtime included
L112[03:09:21] <darkstone> The older Minecraft launcher. No matter what I do I can't make use of that nwer thing
L113[03:09:28] <gigaherz|work> okay then
L114[03:09:34] <gigaherz|work> there's a known issue with newer versions of the runtime
L115[03:09:38] <gigaherz|work> and one of the libraries mc uses
L116[03:09:52] <darkstone> the Java runtime you mean?
L117[03:09:54] <gigaherz|work> something like, anything newer than jre 1.8.0_51
L118[03:10:09] <darkstone> aha
L119[03:10:10] <darkstone> I have 180
L120[03:10:13] <gigaherz|work> will crash if the computer uses an intel graphics card
L121[03:10:24] <gigaherz|work> but not with nvidia or amd
L122[03:10:27] <darkstone> Which friend's probably does. It's a laptopotato.
L123[03:10:27] <gigaherz|work> IIRC
L124[03:10:34] <gigaherz|work> yes then it's probably running into that issue
L125[03:10:35] <darkstone> Mine's nvidia so that makes sense.
L126[03:10:45] <gigaherz|work> if you update to the latest version of the old launcher
L127[03:10:51] <gigaherz|work> or to the new launcher
L128[03:10:54] <gigaherz|work> it should fix itself
L129[03:11:06] <darkstone> I'm a LITTLE confused
L130[03:11:14] <darkstone> This is with the non-Minecraft java versions?
L131[03:11:23] <darkstone> I.e., those that don't come with the new launcher.
L132[03:11:28] <gigaherz|work> hm?
L133[03:11:37] <darkstone> Well
L134[03:11:50] <darkstone> We're throwing around mention of several different Java copies at 3:13 AM my time so
L135[03:11:55] <gigaherz|work> oh
L136[03:11:58] <darkstone> I have no idea which one you're saying has the problem and which doesn't
L137[03:12:28] <gigaherz|work> any launcher exe released in the past year or 2
L138[03:12:40] <gigaherz|work> creates a runtime folder next to it, with a working JRE
L139[03:13:11] <gigaherz|work> https://minecraft.net/en-us/download/alternative
L140[03:13:24] <darkstone> ahh
L141[03:13:25] <gigaherz|work> you can get the launcher from there
L142[03:13:33] <darkstone> could I potentially fetch that jre and use it externally?
L143[03:13:38] <gigaherz|work> yes
L144[03:13:38] <darkstone> We tend to launch Minecraft from cmd
L145[03:13:41] <darkstone> thanks :D
L146[03:14:47] <darkstone> I sadly won't be able to test this until tomorrow
L147[03:15:04] <darkstone> If you see a storm cloud approaching tomorrow, it's me under it
L148[03:15:52] ⇦ Quits: Javaschreiber (~Thunderbi@88-209-32-73.nga.highspeed-baumann.de) (Quit: Javaschreiber)
L149[03:16:29] <darkstone> thanks
L150[03:18:01] <gigaherz|work> lol
L151[03:18:04] <gigaherz|work> and np
L152[03:18:38] <ben_mkiv> darkstone, you may want to take a look on multimc :>
L153[03:18:49] <ben_mkiv> imho best launcher out there
L154[03:19:16] ⇨ Joins: Larry1123 (Larry1123@irc.larry1123.net)
L155[03:19:40] <ben_mkiv> provides function to install forge/litemodloader, enable/disable mods, define java stuff for each minecraftinstance
L156[03:19:51] <darkstone> nice!
L157[03:21:18] <darkstone> lol how did I run out of memory with 8gb machine
L158[03:21:33] <SparkVGX> very easily in this day and age
L159[03:22:22] <darkstone> yeaaah so far not happy with the 1.10.2 versions of these mods.
L160[03:23:47] <darkstone> Anyone want a NullPointerException? I have a good number of 'em here.
L161[04:04:54] ⇨ Joins: h5h77 (~h5h77@2a02:8108:4b40:907:922b:34ff:feae:b38b)
L162[04:23:42] ⇦ Quits: Larry1123 (Larry1123@irc.larry1123.net) (Ping timeout: 186 seconds)
L163[04:26:21] ⇨ Joins: Larry1123 (Larry1123@irc.larry1123.net)
L164[04:37:06] <masa> can a model element start below 0 or go over 16 in the model json?
L165[04:37:21] <masa> 16.01 seems to work at least... not sure if that's valid though
L166[04:37:41] <Andrio> The range is actually [-16, 32] I believe.
L167[04:37:46] <masa> I need an overlay quad basically
L168[04:37:54] <masa> oh okay, cool
L169[04:38:08] <Andrio> I've had models for redstone wire that extends above the block space.
L170[04:38:16] <Andrio> And mine cart rails.
L171[04:39:44] <masa> yeah, -0.01 seems to work
L172[04:39:49] ⇦ Quits: Larry1123 (Larry1123@irc.larry1123.net) (Ping timeout: 198 seconds)
L173[04:40:01] <masa> cool, this thing works then
L174[04:44:04] <masa> uhh, what... why does the block hilight box not render over my custom model... O_o
L175[04:47:41] <Ordinastie> it never did ?
L176[04:47:51] <masa> ?
L177[04:47:54] <masa> https://masa.dy.fi/tmp/minecraft/enderutilities/2017-09-25_12.47.35.png
L178[04:48:09] <Ordinastie> oh
L179[04:48:37] <Ordinastie> what layer ?
L180[04:48:43] <masa> notice how the hilight box renders on top of the "overlay model" (the colored corner) on the right, but not over the base of the model
L181[04:50:28] <masa> the base model should be on the SOLID layer, and the overlay is on CUTOUT
L182[04:51:41] <Ordinastie> yeah, that's odd
L183[04:54:44] <gigaherz|work> it may be a side-effect of how the multi-layer models work?
L184[04:55:04] <gigaherz|work> hmmm
L185[04:55:09] <gigaherz|work> is the block's returned layer CUTOUT?
L186[04:55:12] <gigaherz|work> or SOLID?
L187[04:55:17] <masa> hmm, wait, I have a bug in the layer stuff... it rendes on all layers atm
L188[04:55:31] <Ordinastie> that's probably why then
L189[04:55:41] <Ordinastie> translucent layer blocking it
L190[04:55:42] <gigaherz|work> wait you aren't using the forge-provided multi-layer model? then nevermind ;P
L191[05:25:29] ⇨ Joins: KGS (~KGS@h-158-174-9-50.NA.cust.bahnhof.se)
L192[05:30:55] ⇦ Quits: SparkVGX (~SparkVGX@121.99.203.245) (Read error: Connection reset by peer)
L193[05:53:53] ⇨ Joins: Larry1123 (Larry1123@irc.larry1123.net)
L194[06:01:21] ⇦ Quits: KGS (~KGS@h-158-174-9-50.NA.cust.bahnhof.se) (Ping timeout: 186 seconds)
L195[06:02:21] ⇦ Quits: Larry1123 (Larry1123@irc.larry1123.net) (Ping timeout: 204 seconds)
L196[06:09:41] ⇨ Joins: Larry1123 (Larry1123@irc.larry1123.net)
L197[06:21:55] ⇦ Quits: Larry1123 (Larry1123@irc.larry1123.net) (Ping timeout: 198 seconds)
L198[07:11:56] ⇨ Joins: gigaherz_ (~gigaherz@84.89.63.25)
L199[07:13:48] ⇨ Joins: Larry1123 (Larry1123@irc.larry1123.net)
L200[07:14:12] ⇦ Quits: gigaherz|work (~gigaherz@84.89.63.25) (Ping timeout: 204 seconds)
L201[07:14:49] ⇦ Quits: RichardG (~richardg8@201.37.252.36) (Ping timeout: 204 seconds)
L202[07:21:15] ⇨ Joins: Nedelosk (~Nedelosk@ip-109-90-74-164.hsi11.unitymediagroup.de)
L203[07:22:17] ⇦ Quits: gigaherz_ (~gigaherz@84.89.63.25) (Remote host closed the connection)
L204[07:22:45] ⇨ Joins: gigaherz|work (~gigaherz@84.89.63.25)
L205[07:38:16] ⇦ Quits: MCPBot_Reborn (~MCPBot_Re@mcpbot.bspk.rs) (Remote host closed the connection)
L206[07:38:44] ⇨ Joins: MCPBot_Reborn (~MCPBot_Re@mcpbot.bspk.rs)
L207[07:40:48] <P3pp3rF1y> Anyone has a clue what could be causing this setupDecW issue? https://hastebin.com/bejuhecaro.vbs
L208[07:41:15] <P3pp3rF1y> I don't see any more details in info or debug, but can share those as well
L209[07:42:03] <gigaherz|work> can you show your build.gradle?
L210[07:42:21] <P3pp3rF1y> https://github.com/P3pp3rF1y/Reliquary/blob/1.12.x/build.gradle
L211[07:43:08] <P3pp3rF1y> I am pretty sure that I was able to run setupDecW last time I made change there
L212[07:43:20] <P3pp3rF1y> as otherwise I wouldn't be able to port the mod to 1.12
L213[07:43:29] <gigaherz|work> yeah no idea
L214[07:43:40] <gigaherz|work> that build.gradle is way more complex than I can parse in my head ;P
L215[07:43:53] <gigaherz|work> maybe a question for #forgegradle if that still exists ;p
L216[07:44:59] <P3pp3rF1y> yeah probably, doesn't seem to be very active though
L217[07:46:47] <MCPBot_Reborn> [TEST CSV] Pushing snapshot_20170925 mappings to Forge Maven.
L218[07:46:50] <MCPBot_Reborn> [TEST CSV] Maven upload successful for mcp_snapshot-20170925-1.12.zip (mappings = "snapshot_20170925" in build.gradle).
L219[07:47:01] <MCPBot_Reborn> Semi-live (every 10 min), Snapshot (daily ~8:50 EST), and Stable (committed) MCPBot mapping exports can be found here: http://export.mcpbot.bspk.rs/
L220[07:47:43] <Ordinastie> P3pp3rF1y, does --stacktrace show more ?
L221[07:51:11] ⇦ Quits: cpup (~cpup@32.218.113.5) (Ping timeout: 200 seconds)
L222[07:52:50] ⇨ Joins: cpup (~cpup@32.218.113.5)
L223[07:53:19] <P3pp3rF1y> I don't feel like it does https://hastebin.com/ajacemitov.cs
L224[07:53:59] <P3pp3rF1y> similar with debug and info, loads more stuff, but pretty much starts running decompileMc and runs into the exception
L225[07:54:40] <P3pp3rF1y> it however works on another project, but I fail to see a difference there, because same versions (gradle/forgegradle/forge) and same mappings don't work
L226[07:57:38] <ben_mkiv> btw. gigaherz i somehow fixed my item charging problem by only consuming energy serverside
L227[07:57:51] <ben_mkiv> also looks like consuming energy clientside wasnt even necessary for rendering
L228[07:59:13] <ben_mkiv> so a simple if(world.isRemote) return; fixed it -.-
L229[08:11:35] ⇨ Joins: malte0811 (~malte@185.134.128.197)
L230[08:17:33] <gigaherz|work> heh
L231[08:18:52] <ben_mkiv> but i still have no idea what happened :D
L232[08:19:28] <ben_mkiv> consumed energy on both sides, and the wireless charger should have synced them by calling player.inventoryContainer.detectAndSendChanges();
L233[08:19:54] <gigaherz|work> it may be that since the client stack has also changed, mc gets confused?
L234[08:20:05] <ben_mkiv> possible
L235[08:20:40] <ben_mkiv> as i store the energy in the items NBT
L236[08:20:45] <ben_mkiv> maybe thats confusing it
L237[08:21:23] <ben_mkiv> anyways i like it more that only one side has to do the stuff for the same result
L238[08:22:29] ⇨ Joins: Javaschreiber (~Thunderbi@88-209-32-73.nga.highspeed-baumann.de)
L239[08:23:39] ⇦ Quits: quadraxis (~quadraxis@cpc77293-basf12-2-0-cust699.12-3.cable.virginm.net) (Ping timeout: 200 seconds)
L240[08:26:24] ⇦ Quits: Hunterz (~hunterz@2001:af0:8000:1c01:6af7:28ff:fe37:5d6a) (Quit: Leaving.)
L241[08:26:58] ⇨ Joins: Brokkoli (~Brokkoli@p5B23CD11.dip0.t-ipconnect.de)
L242[08:46:40] ⇦ Quits: npe|office (~NPExcepti@bps-gw.hrz.tu-chemnitz.de) (Remote host closed the connection)
L243[09:00:30] ⇦ Quits: z0ttel (~z0ttel@reuenthal.z0ttel.com) (Quit: No Ping reply in 180 seconds.)
L244[09:01:14] ⇦ Quits: ben_mkiv (~ben_mkiv@p4fed5fbd.dip0.t-ipconnect.de) (Ping timeout: 200 seconds)
L245[09:11:10] ⇨ Joins: z0ttel (~z0ttel@reuenthal.z0ttel.com)
L246[09:25:56] ⇨ Joins: Raycoms (~Raycoms@2804:14d:baa0:8d78:3690:fea5:eb51:dcd1)
L247[09:28:21] <Raycoms> Hi there
L248[09:28:42] <Raycoms> Checking if a chunk is loaded is heavy or can I run that through a loop for like 100 locations easily?
L249[09:29:23] ⇦ Quits: Davnit (~Davnit@72-189-115-20.res.bhn.net) (Ping timeout: 186 seconds)
L250[09:36:50] <gigaherz|work> Raycoms: it's not "heavy" but also not "lightweight"
L251[09:37:10] <Raycoms> Heavier than distanceSq? =D
L252[09:37:13] <gigaherz|work> if you run it 100 times once, it's ok, if you run it 100 times per tick, it may be a bit much
L253[09:37:19] <gigaherz|work> most definitely
L254[09:37:28] <gigaherz|work> distanceSq is literally just x*x + y*y + z*z
L255[09:37:41] ⇨ Joins: cpup- (~cpup@32.218.116.158)
L256[09:38:31] ⇦ Quits: cpup (~cpup@32.218.113.5) (Ping timeout: 204 seconds)
L257[09:38:57] <Raycoms> Okay thanks =)
L258[09:39:31] ⇨ Joins: cpup (~cpup@32.218.116.158)
L259[09:41:49] ⇦ Quits: gigaherz|work (~gigaherz@84.89.63.25) ()
L260[09:42:46] ⇦ Quits: CoderPuppy (~cpup@32.218.113.5) (Ping timeout: 383 seconds)
L261[09:44:44] ⇨ Joins: vrackfall (~chatzilla@cable-192.222.193.235.electronicbox.net)
L262[09:45:19] <vrackfall> H'llo someone here???
L263[09:46:32] ⇨ Joins: SubThread (~SubThread@185-157-160-44.pool.ovpn.com)
L264[09:47:58] ⇨ Joins: Artsicle (webchat@207.174.251.15)
L265[09:49:23] ⇦ Parts: Artsicle (webchat@207.174.251.15) ())
L266[09:51:34] ⇨ Joins: Artsicle (webchat@207.174.251.15)
L267[09:52:28] ⇦ Quits: Artsicle (webchat@207.174.251.15) (Client Quit)
L268[09:53:20] ⇦ Quits: Javaschreiber (~Thunderbi@88-209-32-73.nga.highspeed-baumann.de) (Quit: Javaschreiber)
L269[09:53:35] ⇨ Joins: sinkillerj (~sinkiller@nc-67-232-11-148.dhcp.embarqhsd.net)
L270[09:56:39] <ghz|afk> vrackfall: jsut ask the question
L271[09:56:48] <ghz|afk> so that others have a chance to see it and can think of an answer
L272[09:58:43] <vrackfall> Ho, ok, so the thing is, this is a modding question
L273[10:00:29] <ghz|afk> this is a modding channel :P
L274[10:00:39] <ghz|afk> so you are in the right place!
L275[10:04:13] ⇨ Joins: killjoy1 (~killjoy@2606:a000:1118:8030:9d52:ce96:d1fb:6c50)
L276[10:06:39] ⇨ Joins: ben_mkiv (~ben_mkiv@p4FED5FBD.dip0.t-ipconnect.de)
L277[10:10:17] <vrackfall> Ok, perfect, didn't know, tough that was the LHoM that was tke modding channel
L278[10:10:34] ⇦ Quits: cpup (~cpup@32.218.116.158) (Ping timeout: 200 seconds)
L279[10:10:47] ⇦ Quits: cpup- (~cpup@32.218.116.158) (Ping timeout: 186 seconds)
L280[10:11:31] <vrackfall> So the question is: I need help to finish the remake of a very special mode.
L281[10:12:40] <ben_mkiv> dont we all?
L282[10:13:12] <vrackfall> Yup, so
L283[10:13:49] <vrackfall> The problem is, I'm using a Forge event, that is called ModelBakeEvent I think, into a void. And this void is calling a class that contains the model.
L284[10:14:33] ⇨ Joins: Artsicle (webchat@207.174.251.15)
L285[10:16:05] ⇨ Joins: cpup (~cpup@32.218.116.202)
L286[10:16:06] ⇨ Joins: Davnit (~Davnit@72-189-115-20.res.bhn.net)
L287[10:16:25] <malte0811> By "void" you mean something like "public void onModelBake(ModelBakeEvent e)"? That's usually called a method. Void is the return type
L288[10:16:44] ⇨ Joins: CoderPuppy (~cpup@32.218.116.202)
L289[10:16:48] ⇨ Joins: Davnit_ (~Davnit@72-189-115-20.res.bhn.net)
L290[10:17:07] <vrackfall> Oh, ok, yup I mean that
L291[10:17:26] <malte0811> And where is the problem?
L292[10:17:34] <vrackfall> So as Isaid this void is calling a class
L293[10:18:09] <vrackfall> Into this class theres another method, but it's only variable is ENumFacing
L294[10:18:11] <malte0811> You can't really call a class. Maybe make a gist/pastebin of the code?
L295[10:18:27] ⇦ Quits: Artsicle (webchat@207.174.251.15) (Ping timeout: 180 seconds)
L296[10:18:47] <vrackfall> Oh ok, I said call, but it's maybe another name for what I want to do
L297[10:19:00] <vrackfall> ** Sending code on gist **
L298[10:19:00] <ghz|afk> even more important to show your code
L299[10:19:05] <ghz|afk> you can use gist or pastebin
L300[10:19:16] ⇦ Quits: Davnit (~Davnit@72-189-115-20.res.bhn.net) (Ping timeout: 186 seconds)
L301[10:20:58] <vrackfall> Oh fuck the code is on my other computer, wait
L302[10:21:17] <ghz|afk> welp ;p
L303[10:24:15] <busti> How do I make a tileentity recieve game ticks nowadays?
L304[10:24:29] <malte0811> implement ITickable
L305[10:26:27] <busti> Thank you. I was not sure if it was the correct way to do it. I read something on the Forums about making it tick only once per second or something. Is there something that gives me that feature? I would like to save cpu time if possible...
L306[10:27:50] <ghz|afk> no, but you can use world.getTotalWorldtime() % 20
L307[10:28:04] <ghz|afk> or have an internal cooldown
L308[10:28:08] <ghz|afk> so like
L309[10:28:26] <vrackfall> So, it's keyboard buttons are broken and the mouse usb is broken too
L310[10:28:26] <ghz|afk> if(--cooldown > 0) return; do work; cooldown = 20;
L311[10:28:30] <vrackfall> Crap
L312[10:28:55] <vrackfall> And I couldn,t use my bluetooth mouse on it
L313[10:29:53] <ghz|afk> you could get the HDD out of it and plug it to your current computer (unless you are on a laptop and you don't have a sata-to-usb adapter)
L314[10:29:59] <busti> Thanks for the suggestion, but that defies the purpose. I want to form a multiblock and wanted to avoid checking for it being formed 20 times per second. But a null check is probably as efficient as cheching a variable % 20 == 0
L315[10:30:29] <ghz|afk> busti: are the other blocks of the multiblock yours also?
L316[10:30:32] <ghz|afk> or are you using vanilla stuffs?
L317[10:30:36] <vrackfall> Hue I'm on my laptop for now, and my other computer is a tower
L318[10:30:53] <ghz|afk> vrackfall: I always keep a sata adapter around for cases like that ;P
L319[10:30:56] <ben_mkiv> remotedesktop :>
L320[10:31:09] <ben_mkiv> or just use the keyboard, mouses are overrated
L321[10:31:28] <ghz|afk> [17:32] (vrackfall): So, it's keyboard buttons are broken [...]
L322[10:31:52] <ben_mkiv> busti if all of the modblocks are yours you could implement a check on blockplace/break for your blocks
L323[10:32:03] <ben_mkiv> that way you only have the check when something is changed
L324[10:32:07] <ghz|afk> ^ yep that's wht I asked ;p
L325[10:32:11] ⇨ Joins: h404bi (~h404bi@119.129.117.230)
L326[10:32:12] <ghz|afk> if you use vanilla blocks
L327[10:32:19] ⇦ Quits: killjoy1 (~killjoy@2606:a000:1118:8030:9d52:ce96:d1fb:6c50) (Read error: Connection reset by peer)
L328[10:32:19] <ghz|afk> a good way is to have a "hammer" type item
L329[10:32:22] <ghz|afk> that triggers the assembly
L330[10:32:44] <busti> Yes they are, but the problem lies more in teading the multiblock across multiple chunks
L331[10:32:59] <ben_mkiv> if i made a mod, i would permit that :P
L332[10:33:01] <busti> *reading (from nbt)
L333[10:33:11] <ghz|afk> my multiblocks have one single master block
L334[10:33:14] <ghz|afk> that holds the data
L335[10:33:18] <ghz|afk> and the rest are just slaves
L336[10:33:25] <ghz|afk> that forward stuff to the master
L337[10:34:17] <vrackfall> No key works on the keyboard (it was in the basement because you had to get some orange juice on it at the time). And my friend has ride with his car on the USB plug of the mouse
L338[10:34:19] <busti> We plan on doing that as well, but the problem is that it could potentially stretch across a LOT of chunks...
L339[10:34:36] <vrackfall> LOOOOOOOLL don't ask me how this happened
L340[10:34:41] <ghz|afk> so it's not just a multiblock
L341[10:34:41] <busti> But yeah onTick works I guess.
L342[10:34:45] <ghz|afk> it's a megastructure ;P
L343[10:34:54] <busti> It is going to be a conveyor belt
L344[10:35:00] <ghz|afk> ahh
L345[10:35:40] <ghz|afk> wouldn't it make more sense to have a "short" limit like 16 or 32 long, and then have a new conveyor start?
L346[10:35:53] <ghz|afk> IRL they work like that ;P
L347[10:35:58] <vrackfall> So I'm trying to plug the laptop on the tower harddrive, should I do that with USB plug???
L348[10:36:18] <busti> We only store the Items and their offsets in a shared object and increment the overall offset every tick to be efficient
L349[10:36:30] <busti> That might be an idea ?
L350[10:36:48] <ghz|afk> vrackfall: what?
L351[10:37:02] <ben_mkiv> srsly for the sake of servers dont allow such large structures
L352[10:37:08] <busti> Thank you ghz|afk
L353[10:37:16] <ben_mkiv> they tend to break on servers, as chunks run with different tick speeds or not at all
L354[10:37:29] <vrackfall> Should I use Usb to connect m laptop to the computer harddrive?
L355[10:37:38] <busti> ben_mkiv: The plan is to only tick the master block anyways
L356[10:37:49] <ghz|afk> vrackfall: this is the hard drive: http://store.supermicro.com/media/catalog/product/cache/1/image/9df78eab33525d08d6e5fb8d27136e95/h/d/hdd-t1000-wd1003fbyz_front_2.jpg
L357[10:38:03] <ghz|afk> when I say an usb adapter, I mean this kind: https://images-na.ssl-images-amazon.com/images/I/41RlR-Q1siL._SL500_AC_SS350_.jpg
L358[10:38:09] <ben_mkiv> you dont want to render stuff on the belts?
L359[10:38:52] <vrackfall> OK ok I don't have that I think, maybe in the basement
L360[10:39:07] <ghz|afk> if you haven't bought one, you probably don't
L361[10:39:14] <ghz|afk> they don't give those for free ;P
L362[10:39:21] <vrackfall> I'm goging to fing that
L363[10:39:48] <vrackfall> Yup but maybe with my backup hard drive
L364[10:39:50] <ben_mkiv> i have a bay for sataharddisks :>
L365[10:40:17] <ben_mkiv> https://sgcdn.startech.com/005329/media/products/gallery_large/HSB100SATBK.E.jpg
L366[10:40:26] <ghz|afk> I used to have an external one like http://aluratek.com/media/catalog/product/cache/1/image/9df78eab33525d08d6e5fb8d27136e95/u/s/usb_3-0-external-sata-hard-drive-dual-duplicator-front-drives-inserted_1.jpg
L367[10:40:28] <ghz|afk> but it sucked badly
L368[10:40:37] <ben_mkiv> and some thing like ghz linked for the 2,5" ones
L369[10:40:50] <ghz|afk> so the last one I got
L370[10:40:53] ⇨ Joins: Hunterz (~hunterz@62.182.234.189)
L371[10:40:56] <ghz|afk> is UASP
L372[10:41:09] <ghz|afk> (USB-attached SCSI)
L373[10:42:02] <ben_mkiv> so i'm not the only one who suffered from this crappy sata <=> usb interfaces
L374[10:42:16] <ghz|afk> yeah
L375[10:42:19] <ben_mkiv> havent even used it 5 times before it broke
L376[10:42:38] <Lord_Ralex> i have one of those things as well, i rarely use it though, it did clone drives fine
L377[10:42:41] <ghz|afk> there was a lot of cheap crap devices
L378[10:42:42] <ben_mkiv> probably wasnt hotswap safe, even tho they adverted it
L379[10:42:43] <ghz|afk> probably still are
L380[10:42:49] <ghz|afk> but now you can find generic UASP ones
L381[10:42:51] <ghz|afk> that work quite well
L382[10:43:04] <ghz|afk> since UASP removes the responsibility from the device
L383[10:43:22] <ghz|afk> all it does is extract scsi commands from the usb packets
L384[10:43:29] <ghz|afk> and pack scsi replies back into usb packets
L385[10:43:43] <ben_mkiv> i went for some esata thing, so no more usb for me :X
L386[10:43:51] <ghz|afk> I tried esata
L387[10:44:03] <ghz|afk> but esata without an external power adapter doesn't really work
L388[10:44:08] <ben_mkiv> https://sgcdn.startech.com/005329/media/products/gallery_large/ESATAPLATE2.Main.jpg
L389[10:44:20] <ghz|afk> and me current case doesn't even have eSATA anymore
L390[10:44:21] <ben_mkiv> this and some selfmade adapter from internal 5V to external connector
L391[10:44:25] <ghz|afk> USB3.0 has displaced it
L392[10:48:46] <vrackfall> OH feew, yesterday I send my code on discord to friend but it was in the wrong discussion
L393[10:49:03] <vrackfall> So I don't need anymore to acess my other computer
L394[10:49:14] <ghz|afk> heh
L395[10:49:19] <ghz|afk> it is a good time to suggest
L396[10:49:24] <ghz|afk> you should get a github repository
L397[10:49:28] <ghz|afk> and upload it
L398[10:49:32] <ghz|afk> or if you don't want the code public
L399[10:49:38] <ghz|afk> a bitbucket private repository
L400[10:50:25] <vrackfall> Ok, thanks
L401[10:50:54] ⇨ Joins: cpup- (~cpup@32.218.117.23)
L402[10:51:15] ⇨ Joins: Javaschreiber (~Thunderbi@88-209-32-73.nga.highspeed-baumann.de)
L403[10:51:46] ⇦ Quits: cpup (~cpup@32.218.116.202) (Ping timeout: 198 seconds)
L404[10:53:33] ⇦ Quits: CoderPuppy (~cpup@32.218.116.202) (Ping timeout: 198 seconds)
L405[10:54:18] ⇨ Joins: cpup (~cpup@32.218.117.23)
L406[10:57:42] <vrackfall> @ghz THe code, please don't take it for your own
L407[10:57:47] <vrackfall> https://gist.github.com/vrackfall/64222c6b3d8216cb380862ad83ac422c
L408[10:58:04] <ghz|afk> don't worry
L409[10:58:09] <ben_mkiv> xD
L410[10:58:53] <vrackfall> Do you see what is it's goal?
L411[10:59:09] <ghz|afk> can't say I do
L412[10:59:12] <ghz|afk> can you try to explain?
L413[10:59:16] <ghz|afk> although I will have to leave soon
L414[10:59:24] <ghz|afk> so maybe someone else will have to help you instead
L415[11:00:26] <vrackfall> Ok, so I'm remaking completly the noCUbes mod to MC 1.11.2, without using ASM, and with using a stric minimum of code from the guy that created NoCubes
L416[11:01:05] <ben_mkiv> what is nocubes?
L417[11:01:29] <vrackfall> ben_mkiv Google is your friend
L418[11:02:44] <vrackfall> And now into the getQuads method, the problem is I need to access the World, BlockPos and another thing that I don't remember but I only have access to the EnumFacing class, any idea?
L419[11:03:28] <malte0811> Do you know about extended block states?
L420[11:03:41] <vrackfall> Hue no
L421[11:04:15] <malte0811> But you know normal block states?
L422[11:04:23] <vrackfall> Yup
L423[11:04:35] <malte0811> Extended ones are only for rendering
L424[11:04:49] <malte0811> but don't need a finite list of possible states
L425[11:05:15] <malte0811> IUnlistedProperty is one of the relevant classes here
L426[11:05:27] <vrackfall> Also, the thing is I can't use EnumFacing to acess the BlockPos because it must be the global pos of the block
L427[11:05:53] <malte0811> I know
L428[11:06:51] <malte0811> The IE wires are an example of extended states and custom models, but they may not be the easiest to understand since they are completely undocumented
L429[11:07:28] <vrackfall> Ok, so should I use something else?
L430[11:08:42] <malte0811> Actually, I see you already have a custom model, so it should be fine, mostly. I'll send you the relevant lines in a minute
L431[11:09:27] <vrackfall> Ok
L432[11:09:33] <ghz|afk> vrackfall: I don't have time to go into detail, but I don't believe you will be ableto use the model bake event for this
L433[11:09:35] <ben_mkiv> actually IE is opensource, so it could be worse :>
L434[11:09:38] <malte0811> https://github.com/BluSunrize/ImmersiveEngineering/blob/master/src/main/java/blusunrize/immersiveengineering/common/blocks/metal/BlockConnector.java#L67-L89, plus some of the code this refers to
L435[11:09:44] <ghz|afk> since the shape of the block depends on the position in the world
L436[11:09:59] <ghz|afk> in fact, I'm not sure you can even do it at all without injecting code into the rendering system
L437[11:11:23] <malte0811> getExtendedState gets both pos and world as a parameter, so it should be possible IMO
L438[11:11:47] <ghz|afk> for his own block, yes
L439[11:11:52] <vrackfall> Ok thanks, I'm wathing what you made
L440[11:11:57] <ghz|afk> but if he wants to edit the model for vanilla materials...
L441[11:12:30] <malte0811> Couldn't he override the whole block?
L442[11:13:27] <vrackfall> The models would be overridden for vanilla and mods blocks
L443[11:14:30] <ghz|afk> malte0811: I suppose
L444[11:14:36] <ben_mkiv> wouldnt it be enough to override the rendering method?
L445[11:14:54] <malte0811> You'll probably need to inject code if you want to support modded blocks
L446[11:16:08] <vrackfall> I don't know, go look at the ClientProxy to see how it's work, and you will see that it's working for maybe every blocks of the game
L447[11:21:44] <malte0811> The problem is that you need getExtendedState in the block class to pass the model coords or anything like that
L448[11:22:45] ⇨ Joins: p455w0rd (p455w0rd@c-98-220-249-33.hsd1.in.comcast.net)
L449[11:23:44] <vrackfall> Ok, maybe I should make a team to finsih the mod, do you want to be his second member?
L450[11:29:12] <malte0811> I don't have enough time for my ideas as it is... So unfortunately no
L451[11:31:08] <vrackfall> Ok, for now I'm reinstalling my forge workspace on my laptop, but after I'll be trying to fix my code
L452[11:31:55] ⇦ Quits: psxlover (psxlover@athedsl-384709.home.otenet.gr) (Ping timeout: 200 seconds)
L453[11:34:02] ⇨ Joins: McJty (~jorrit@ptr-9197ufpe6rr1vo74j40.18120a2.ip6.access.telenet.be)
L454[11:36:19] ⇨ Joins: m5w (~matthew@lawn-128-61-10-55.lawn.gatech.edu)
L455[11:38:51] <m5w> Hello. Is it possible to subscribe more than one mod to the same event bus? I'd like to deny all decoration events for tall grass but allow all others to be handled normally (perhaps by another mod, such as Realistic Terrain Generation).
L456[11:39:12] ⇨ Joins: psxlover (psxlover@athedsl-384709.home.otenet.gr)
L457[11:40:04] <m5w> I'll use exceptions for an analogy: can you "catch" an event and re-"throw" it to the bus?
L458[11:40:20] ⇦ Quits: psxlover (psxlover@athedsl-384709.home.otenet.gr) (Read error: Connection reset by peer)
L459[11:40:44] <barteks2x> if you don't cancel the event, all mods that subsctibe to it will get the event
L460[11:41:23] *** PaleoCrafter is now known as PaleOff
L461[11:41:29] <m5w> ok, great.
L462[11:44:56] ⇨ Joins: psxlover (psxlover@athedsl-384709.home.otenet.gr)
L463[11:46:46] ⇦ Quits: h5h77 (~h5h77@2a02:8108:4b40:907:922b:34ff:feae:b38b) (Quit: Leaving)
L464[11:47:22] ⇦ Quits: sinkillerj (~sinkiller@nc-67-232-11-148.dhcp.embarqhsd.net) (Ping timeout: 186 seconds)
L465[11:48:33] ⇦ Quits: Raycoms (~Raycoms@2804:14d:baa0:8d78:3690:fea5:eb51:dcd1) (Remote host closed the connection)
L466[11:56:43] ⇦ Quits: m5w (~matthew@lawn-128-61-10-55.lawn.gatech.edu) (Quit: WeeChat 1.4)
L467[11:57:40] ⇨ Joins: m5w (~matthew@lawn-128-61-10-55.lawn.gatech.edu)
L468[12:01:37] ⇨ Joins: sinkillerj (~sinkiller@nc-67-232-11-148.dhcp.embarqhsd.net)
L469[12:01:49] ⇦ Quits: sinkillerj (~sinkiller@nc-67-232-11-148.dhcp.embarqhsd.net) (Remote host closed the connection)
L470[12:04:46] ⇦ Quits: m5w (~matthew@lawn-128-61-10-55.lawn.gatech.edu) (Quit: WeeChat 1.4)
L471[12:04:55] ⇨ Joins: Hgrebnednav (~Hgrebnedn@d8d872a6e.access.telenet.be)
L472[12:05:12] ⇦ Quits: vrackfall (~chatzilla@cable-192.222.193.235.electronicbox.net) (Ping timeout: 198 seconds)
L473[12:06:02] ⇨ Joins: m5w (~matthew@2600:1005:b052:3194:444:2d15:2ed0:906)
L474[12:09:22] ⇦ Quits: m5w (~matthew@2600:1005:b052:3194:444:2d15:2ed0:906) (Client Quit)
L475[12:09:33] ⇦ Quits: h404bi (~h404bi@119.129.117.230) (Read error: Connection reset by peer)
L476[12:10:45] ⇨ Joins: m5w (~matthew@lawn-128-61-10-55.lawn.gatech.edu)
L477[12:12:21] ⇨ Joins: h404bi (~h404bi@119.129.117.230)
L478[12:15:09] ⇨ Joins: Hgreb (~Hgrebnedn@d8D872A6E.access.telenet.be)
L479[12:19:08] ⇨ Joins: Neal (~Neal@47.146.41.184)
L480[12:28:58] ⇦ Quits: m5w (~matthew@lawn-128-61-10-55.lawn.gatech.edu) (Quit: WeeChat 1.4)
L481[12:35:12] ⇦ Quits: Javaschreiber (~Thunderbi@88-209-32-73.nga.highspeed-baumann.de) (Quit: Javaschreiber)
L482[12:37:15] ⇦ Quits: h404bi (~h404bi@119.129.117.230) (Ping timeout: 186 seconds)
L483[12:50:02] ⇦ Parts: malte0811 (~malte@185.134.128.197) ())
L484[13:05:26] ⇨ Joins: Raycoms (~Raycoms@200.135.87.95)
L485[13:06:11] <Raycoms> Hey, does: world.isAreaLoaded(pos, 10) guarantee that any position around the radius of 10 is loaded even it might be in another chunk than "pos" ?
L486[13:07:22] <McJty> In case of doubt look at the source :-)
L487[13:09:18] <McJty> And the source says yes
L488[13:14:55] ⇨ Joins: KGS (~KGS@h-158-174-9-50.NA.cust.bahnhof.se)
L489[13:16:12] <Raycoms> Thanks
L490[13:17:53] ⇦ Quits: Hgreb (~Hgrebnedn@d8D872A6E.access.telenet.be) (Quit: Leaving)
L491[13:19:50] ⇨ Joins: TomyLobo (~TomyLobo@2a02:8109:87c0:20c:e478:f3df:741b:efd4)
L492[13:21:12] <barteks2x> that's kind of the whole point of isAreaLoaded... it checks if an area in blocks around a point is loaded
L493[13:21:31] <barteks2x> specifically, all chunks that intersect the area
L494[13:21:36] <Raycoms> Yeah I was discussing with someone that, but got told it doesn't do that, so I wanted to get a third opinion
L495[13:21:51] ⇦ Quits: McJty (~jorrit@ptr-9197ufpe6rr1vo74j40.18120a2.ip6.access.telenet.be) (Quit: Leaving)
L496[13:28:55] <barteks2x> I want to write a unit test for light propagator... and I'm trying to figure out a way to test unspreading light
L497[13:29:09] <barteks2x> there is no way I'm manually setting a spread light pattern
L498[13:30:07] <barteks2x> any idea how it could be done?
L499[13:34:22] <ajb> why is manually setting it a problem?
L500[13:34:32] <barteks2x> because there is a lot of it to set
L501[13:35:13] <barteks2x> somewhere between 30000 and 65000 in common cases
L502[13:35:24] <ajb> use a loop?
L503[13:35:56] <barteks2x> it's a diagonal cube shape, the shape you get when you place a torch
L504[13:36:10] <ajb> octohedron?
L505[13:36:15] <barteks2x> yes
L506[13:36:33] <barteks2x> making a loop to create it is near equivalent to writing the code that I'm trying to test
L507[13:37:09] <ajb> you're trying to test your own code?
L508[13:37:12] <barteks2x> yes
L509[13:37:21] <ajb> if so, break it down into smaller units and test each one individually
L510[13:37:58] <barteks2x> It's already the smallest testable thing. It's the thing that spreads out light when you place a torch, and unspreads it when you remove atorch
L511[13:38:08] <barteks2x> that's what I'm trying to test. I'm rewriting this part of vanilla
L512[13:38:57] <barteks2x> and I already have tests for almost everything
L513[13:39:07] <barteks2x> except of removing light source
L514[13:39:25] <ajb> removing light source should be easy to test
L515[13:39:43] <barteks2x> it's not because you need to start with light values you getwhen you place a torch
L516[13:39:43] <ajb> just have a world with only one light source and remove it. if there's any light anywhere, you have a bug...
L517[13:39:58] <barteks2x> you need to crerate the light source and spread the light first
L518[13:40:12] <barteks2x> and to spread the light I use exactly the same code that I'm trying to test
L519[13:40:15] <ajb> that's a separate test
L520[13:40:25] <ajb> if that one passes you don't need to test it again, just run it and assume it works
L521[13:40:46] <barteks2x> I know how to test it, but I have no way to first get a world with only one light source that already has the light spread out
L522[13:41:03] <barteks2x> uh... but then I can't test unspreading idependently
L523[13:41:22] <barteks2x> so if spreading fails, I can't test unspreading
L524[13:41:42] <ajb> true enough, but if spreading fails then fix it first
L525[13:41:53] <ajb> then you can test unspreading...
L526[13:42:36] <barteks2x> easier said than done with code like this https://gist.github.com/69c192dcf03b4cc08552fe8014cf36ec
L527[13:42:50] <ajb> that's a big function
L528[13:43:09] <barteks2x> have you seen World.checkLightFor?
L529[13:43:15] <barteks2x> it does the same thing, just more broken
L530[13:43:44] <Ordinastie> does it have to be that complicated ?
L531[13:44:04] <barteks2x> I tried to make it simpler
L532[13:44:09] <barteks2x> I already simplified it
L533[13:44:22] <barteks2x> it's already simpler than vanilla one
L534[13:45:12] <ajb> hmm let me see if i understand
L535[13:45:55] <ajb> there's two steps in here
L536[13:46:08] <barteks2x> but good luck separating them into function
L537[13:46:11] <ajb> one seems to decrease the light
L538[13:46:38] <barteks2x> following light spreading backwards to clear light
L539[13:46:52] <barteks2x> well, forwards, but setting light to 0
L540[13:47:16] <ajb> the other one lights it all again?
L541[13:48:01] <ajb> what state is kept between the two?
L542[13:48:32] <barteks2x> when you remove a torch the first one removed the light values
L543[13:48:46] <barteks2x> the second part continues from the edges spreading light from other torches into that area
L544[13:49:02] <ajb> hmm
L545[13:49:06] <barteks2x> the queue is iterated over again, that's what resetIndex does
L546[13:49:24] <ajb> what does the first one do when you add a torch?
L547[13:49:30] <barteks2x> nothing
L548[13:49:43] <ajb> why? (how does it know to do nothing?)
L549[13:50:05] <barteks2x> because the light source strength increased
L550[13:50:14] <barteks2x> and the first part checks if it decreased
L551[13:50:30] <barteks2x> if (blocks.getLightFor(type, pos) > emitted) {
L552[13:50:48] <ajb> hmm okay let me recheck my assumptions
L553[13:51:12] <ajb> if the light source is brighter than before, you simply add the extra light?
L554[13:51:19] <barteks2x> yes
L555[13:51:24] <ajb> if it's darker, you have to clear all the light and recalculate it from all sources?
L556[13:51:38] <barteks2x> just clear all the light previously spread from that source
L557[13:51:56] <barteks2x> that's also what vanilla does in world.checkLightFor but good luck understanding THAT
L558[13:52:18] <ajb> what does it mean to "clear" the light
L559[13:52:25] <ajb> i mean, there's a light max brightness
L560[13:53:15] <barteks2x> first, there are 2 kinds of light values: raw emitted light and stored light. It just setsthe stored light to 0 and lets the next loop propagate it back
L561[13:54:31] <barteks2x> anyway, what I wanted is a way to test the part that clears the light. That after removing already existing light source there is complete darkness
L562[13:54:54] <barteks2x> I will probably manually create "world" with light source with value 3 already spread out
L563[13:56:46] <ajb> all you can really do is make a world, light it, and then visually check it is okay
L564[13:57:05] <ajb> once you've done that, save the world lit and unlit, and then compare it with your code output
L565[13:58:48] <barteks2x> It's in unit tests. I specifically don't use vanilla World class here
L566[13:58:57] <barteks2x> so I can create dummy implementations of things
L567[13:59:14] <ajb> that's fine
L568[13:59:48] <ajb> once you've confirmed manually that the code works once, you can just check that the output has not changed
L569[14:01:19] <barteks2x> I'm far from getting it working ingame
L570[14:01:26] <barteks2x> and this code actually is never used for blocklight
L571[14:01:35] <barteks2x> it's used for skylight which is a whole new level of mess
L572[14:01:59] <barteks2x> that I'm in the middle of rewriting for the fourth or so time
L573[14:02:06] <ajb> well, i don't know how you can write a unit test if you can't manually confirm the code works...
L574[14:02:58] <barteks2x> https://gist.github.com/28095ee0035478cd528bff71f54280c1
L575[14:03:40] <barteks2x> hamcrest matcher for checking lighting consistency
L576[14:04:35] ⇨ Joins: vrackfall (~chatzilla@cable-192.222.193.235.electronicbox.net)
L577[14:05:18] <barteks2x> Unit tests are mostly sanity checks, if they succeed, I will then test ingame to see if i missed anything
L578[14:06:06] <ajb> there's a school of thought that says unit tests should test for specific corner cases only
L579[14:06:58] <barteks2x> there is also a thing called TDD that says you should write unit tests before writing any other code
L580[14:07:10] <ajb> but in this case, you can't
L581[14:07:35] <ajb> because the output is too complex to analyze in isolation
L582[14:07:44] <barteks2x> I can't really find one single right way to use unit tests, so I use them the way that I find useful
L583[14:08:04] <barteks2x> and MC lighting isn't too complex to analyze in isolation
L584[14:08:19] <ajb> in TDD, arent you supposed to write the tests before the code itself?
L585[14:08:19] <Ordinastie> TDD is good on paper but in practice, it's not really viable imo
L586[14:08:35] <barteks2x> And I'm not saying I';m even trying to
L587[14:09:08] <barteks2x> Also, all my unit tests do test for some specific case, but due to how the internals work a single error causes many tests to fail
L588[14:09:30] <ajb> i would do it like this: write the code, don't write any tests. if i see a lighting glitch, write a test that reproduces it, and then fix it, but keep the test
L589[14:09:36] <barteks2x> and next test after this one will be for FirstLightProcessor, the thing that updates lighting after generating a new 16x16x16 section
L590[14:10:35] ⇦ Quits: Neal (~Neal@47.146.41.184) (Ping timeout: 198 seconds)
L591[14:11:15] <ajb> you can also break down what you're testing for. like, instead of testing that the whole of the output is exactly correct or not, you can do stuff like "i placed a torch in this chunk, it should affect the light values in the neighbour chunk, so if the light values there did not change at all, then fail"
L592[14:11:29] <barteks2x> the problem with your approach is that real-world situations are usually so insanely complex that isolating them to reproducible small tests cses is near damn impossible
L593[14:11:43] <ajb> you say that but i see light glitches all the time
L594[14:12:08] <ajb> mainly of the type i just refered to above :)
L595[14:12:09] <barteks2x> in my mod or in vanilla?
L596[14:12:14] <ajb> in vanilla
L597[14:13:20] <barteks2x> I also have a very strict rules for behavior when interacting with other light source, that vanilla doesn't have
L598[14:13:24] <barteks2x> this needs unit tests
L599[14:13:32] <barteks2x> there is no real way to test it ingame
L600[14:13:44] <ajb> what's the point of it then?
L601[14:13:55] <ajb> if player can't tell whether it works or not?
L602[14:14:14] <barteks2x> it's possible to notice only when some blocks aren't updated yet
L603[14:14:24] <barteks2x> my version doesn't have any of the vanilla self-correcting behavior
L604[14:14:41] <ajb> well, could you take a brute force approach for the unit tests?
L605[14:14:52] <ajb> force every single block to update
L606[14:14:52] <barteks2x> which is?
L607[14:15:04] <ajb> then compare result to the actual algorithm
L608[14:15:16] <ajb> it would be slow, but you don't use unit tests while playing, so that does not matter
L609[14:15:38] <ajb> brute force approach may be simpler to code then, and more likely to be correct
L610[14:15:41] <barteks2x> tis is my example test https://gist.github.com/d28c680c0bd3d4cd8db9298eb1e67e9a
L611[14:17:57] <barteks2x> or this a more compelex one https://gist.github.com/9a35bb18893b79a630441abe46535961
L612[14:27:28] ⇨ Joins: Subaraki (~Subaraki@239.ip-158-69-59.net)
L613[14:27:35] ⇨ Joins: Raqbit (~Raqbit@239.ip-158-69-59.net)
L614[14:28:17] <barteks2x> not as bad as I expected https://gist.github.com/80d41bd1b5235e29f318c1dd1b43e549
L615[14:29:58] ⇦ Quits: Nedelosk (~Nedelosk@ip-109-90-74-164.hsi11.unitymediagroup.de) (Ping timeout: 200 seconds)
L616[14:34:53] ⇨ Joins: RichardG (~richardg8@201.37.252.36)
L617[14:34:54] MineBot sets mode: +v on RichardG
L618[14:35:39] ⇦ Quits: vrackfall (~chatzilla@cable-192.222.193.235.electronicbox.net) (Ping timeout: 198 seconds)
L619[14:45:45] ⇦ Quits: psxlover (psxlover@athedsl-384709.home.otenet.gr) (Read error: Connection reset by peer)
L620[14:49:07] ⇨ Joins: psxlover (psxlover@athedsl-384709.home.otenet.gr)
L621[15:18:04] ⇦ Quits: Raycoms (~Raycoms@200.135.87.95) (Quit: Leaving)
L622[15:22:44] ⇨ Joins: PolarizedIons (~Polarized@239.ip-158-69-59.net)
L623[15:35:40] ⇨ Joins: h404bi (~h404bi@119.129.117.230)
L624[15:42:08] ⇦ Quits: Ipsis (~Ipsis@82-69-71-184.dsl.in-addr.zen.co.uk) (Ping timeout: 204 seconds)
L625[15:43:43] ⇦ Quits: TomyLobo (~TomyLobo@2a02:8109:87c0:20c:e478:f3df:741b:efd4) (Ping timeout: 198 seconds)
L626[15:43:43] ⇦ Quits: SubThread (~SubThread@185-157-160-44.pool.ovpn.com) (Quit: Leaving)
L627[15:43:46] ⇨ Joins: MonkeyTyrant (~MonkeyTyr@173.212.73.164)
L628[15:48:00] ⇦ Quits: MonkeyTyrant (~MonkeyTyr@173.212.73.164) (Client Quit)
L629[15:53:43] ⇨ Joins: armctec (~Thunderbi@186.204.253.165)
L630[15:56:15] ⇦ Quits: Hgrebnednav (~Hgrebnedn@d8d872a6e.access.telenet.be) (Ping timeout: 198 seconds)
L631[15:56:16] ⇦ Quits: h404bi (~h404bi@119.129.117.230) (Ping timeout: 186 seconds)
L632[15:57:49] ⇦ Quits: Noppes (~Noppes@ip56530f2e.direct-adsl.nl) (Read error: Connection reset by peer)
L633[16:18:45] ⇨ Joins: founderio (~founderio@200116b828844f00e511fe275884c3b6.dip.versatel-1u1.de)
L634[16:34:36] ⇦ Quits: Hunterz (~hunterz@62.182.234.189) (Quit: Leaving.)
L635[16:39:33] ⇨ Joins: shambling (~proto@97-89-242-134.static.plbg.ny.charter.com)
L636[16:39:49] <shambling> today is the day of the weird random crashes from mod updates
L637[16:39:49] <shambling> lol
L638[16:42:38] <shambling> looks like a foamfix incompat with something
L639[16:42:48] <shambling> lets update that too shal lwe :P
L640[16:43:30] ⇦ Quits: foxy (~gravityfo@96-40-172-22.dhcp.mtpk.ca.charter.com) (Ping timeout: 186 seconds)
L641[16:44:47] *** Santa|afk is now known as SatanicSanta
L642[16:45:57] ⇨ Joins: foxy (~gravityfo@96-40-172-22.dhcp.mtpk.ca.charter.com)
L643[16:46:46] <shambling> guess its the compression mod, oh well
L644[16:48:14] ⇦ Quits: shambling (~proto@97-89-242-134.static.plbg.ny.charter.com) (Quit: Leaving)
L645[16:57:18] ⇦ Quits: founderio (~founderio@200116b828844f00e511fe275884c3b6.dip.versatel-1u1.de) (Quit: Leaving.)
L646[17:03:24] *** diesieben|away is now known as diesieben07
L647[17:06:34] <diesieben07> did forgegradle break again? I am getting a hunk target failures with setupDecompWorkspace
L648[17:17:15] <diesieben07> maybe I should check github first, next time.
L649[17:31:30] <busti> Is there a class commonly used throughout Minecraft / Forge for storing positions in 3D Space?
L650[17:31:46] <ghz|afk> BlockPos for world grid coordinates
L651[17:32:02] <ghz|afk> Vec3d for flating point positions
L652[17:33:09] <busti> Ah, that was its name. Why did I even forget in the first place. Thanks gigaherz :]
L653[17:34:25] <ghz|afk> floating*
L654[17:37:09] <ajb> hi ghz|afk
L655[17:38:20] <ajb> i did some more investigation on optifine and found that it can't use the "default" values of properties that are filled by getActualState
L656[17:38:49] <ajb> even though they exist in getBlockState with wrong values, it can't even see those wrong values
L657[17:39:11] <ajb> so i conclude it either doesn't use getBlockState, or there is some way it can tell that those values have not been filled in yet
L658[17:41:44] <ghz|afk> that would make no sense
L659[17:41:50] <ajb> why?
L660[17:41:50] <ghz|afk> unless it compares them with .getDefaultState()
L661[17:41:59] <ghz|afk> but why go out of the way to do that?
L662[17:42:06] <ghz|afk> it would seem counter-productive
L663[17:42:23] <ajb> i dont know, but these are the results that i have observed
L664[17:42:31] <ghz|afk> sure
L665[17:42:38] <ghz|afk> just pointing out that it's confusing ;p
L666[17:42:49] <ajb> haha, yes, it is
L667[17:44:13] <ajb> i can imagine it doing something like 1. create a new default block state for the block. 2. fill in the value it's looking for, 3 getMetaFromState, 4. remember the meta value and compare that directly to the arrays
L668[17:44:52] <ajb> thus short circuiting all the layers of abstraction
L669[17:46:42] <ajb> so block states are immutable so step 1 and 2 are really 1 step
L670[17:48:46] <ajb> what does getExtendedState do?
L671[17:49:16] <diesieben07> it's like getActualState, but can return an extended blockstate and is completely client-only
L672[17:49:34] <ajb> what is an extended block state?
L673[17:49:35] <diesieben07> an extended blockstate can have unlisted properties, which means they can have any object as their value
L674[17:49:48] <LexMobile> !gf field_175242_a
L675[17:50:00] <diesieben07> you can use this to pass arbitrary objects to custom model implementations
L676[17:50:22] <diesieben07> keep in mind however that the model rendering happens on another thread, so the object you use should be immutable or immutable-like
L677[17:50:49] <ajb> this sounds like it is not at all related to what i'm doing
L678[17:51:06] <diesieben07> not sure what you are doing, so idk :D
L679[17:51:25] <ajb> trying to figure out how optifine's block matching code works
L680[17:51:33] <ajb> without being able to actually see it
L681[17:51:56] <ghz|afk> apparently there's some issue with the way optifine computes the blockstate properties in order to choose which "id" it passes to the shaders
L682[17:52:05] <ghz|afk> they don't always match what's expected
L683[17:52:25] <ajb> it isn't just used for shaders btw
L684[17:52:33] <ajb> it's used in other places too
L685[17:52:48] <ajb> it's a generic "block matching" algorithm
L686[17:52:48] <ghz|afk> ah
L687[17:52:55] <ajb> used in several config files
L688[17:53:21] <ajb> the "remap these block IDs for shaders" config file is just one :)
L689[17:54:40] <ghz|afk> if itw aqs me doing the block matching
L690[17:54:47] <ghz|afk> I'd have a block predicate builder
L691[17:55:00] <ghz|afk> composited from property predicates
L692[17:55:01] <ghz|afk> like
L693[17:55:17] <ghz|afk> if you say match "stone{variant=andesite}"
L694[17:55:47] <ghz|afk> it would create a predicate that matches "block == stone && state.getValue(variant) == andesite"
L695[17:56:03] <ghz|afk> and then run that at runtime as needed
L696[17:56:08] <ghz|afk> (maybe with some kind of cache)
L697[17:56:23] <ghz|afk> if it was me doing the block matching **
L698[17:57:46] <ajb> that's exactly what it has
L699[17:58:06] <ajb> but it has limits that aren't clearly defined
L700[17:58:28] <ajb> so i am trying to understand exactly what they are by a process of elimination
L701[17:59:17] <ajb> the syntax for that example would be stone:variant=andesite
L702[17:59:37] <ajb> and that example would work correctly
L703[18:00:13] <ghz|afk> heh
L704[18:00:26] <ajb> furnace:facing=east also works correctly
L705[18:00:29] <ghz|afk> I went for the syntax that vanilla minecraft uses for commandblocks
L706[18:00:56] <ajb> but ic2:te:facing=down does not, even though when you call getBlockState on the block, you get facing=down
L707[18:01:18] <ghz|afk> hmmm
L708[18:01:22] <ghz|afk> "ic2:te"
L709[18:01:28] <ajb> when you call getActualState you'll get, for example facing=east instead, and that also does not work
L710[18:01:29] <ghz|afk> maybe it's the extra ":" that confuses it? ;P
L711[18:01:32] <ajb> no, it isn't
L712[18:01:43] <ajb> you can also say minecraft:furnace:facing=east and it will work
L713[18:02:07] <ghz|afk> nevermind then ;p
L714[18:02:12] <ghz|afk> but yeah it's getting late
L715[18:02:14] <ghz|afk> gotta sleep
L716[18:02:15] <ghz|afk> night!
L717[18:02:18] * ghz|afk poofs
L718[18:02:19] <ajb> night :)
L719[18:03:00] *** diesieben07 is now known as diesieben|away
L720[18:04:26] ⇨ Joins: gravityfox (~gravityfo@96-40-172-22.dhcp.mtpk.ca.charter.com)
L721[18:08:43] ⇦ Quits: foxy (~gravityfo@96-40-172-22.dhcp.mtpk.ca.charter.com) (Ping timeout: 383 seconds)
L722[18:10:20] ⇦ Quits: cpup (~cpup@32.218.117.23) (Ping timeout: 200 seconds)
L723[18:10:28] ⇨ Joins: cpup (~cpup@32.218.119.170)
L724[18:11:11] ⇦ Quits: cpup- (~cpup@32.218.117.23) (Ping timeout: 198 seconds)
L725[18:15:54] ⇨ Joins: CoderPuppy (~cpup@32.218.119.170)
L726[18:17:46] ⇨ Joins: foxy (~gravityfo@96-40-172-22.dhcp.mtpk.ca.charter.com)
L727[18:19:01] ⇦ Quits: gravityfox (~gravityfo@96-40-172-22.dhcp.mtpk.ca.charter.com) (Ping timeout: 186 seconds)
L728[18:21:57] ⇨ Joins: Akai (sid40324@id-40324.charlton.irccloud.com)
L729[18:23:43] ⇦ Quits: ben_mkiv (~ben_mkiv@p4FED5FBD.dip0.t-ipconnect.de) (Ping timeout: 198 seconds)
L730[18:27:31] ⇦ Quits: CoderPuppy (~cpup@32.218.119.170) (Ping timeout: 186 seconds)
L731[18:27:31] ⇦ Quits: cpup (~cpup@32.218.119.170) (Ping timeout: 186 seconds)
L732[18:31:48] *** SatanicSanta is now known as Santa|afk
L733[18:33:30] ⇨ Joins: cpup (~cpup@32.218.119.208)
L734[18:34:04] ⇨ Joins: CoderPuppy (~cpup@32.218.119.208)
L735[18:34:48] ⇦ Quits: Subaraki (~Subaraki@239.ip-158-69-59.net) (Ping timeout: 204 seconds)
L736[18:34:56] ⇦ Quits: PolarizedIons (~Polarized@239.ip-158-69-59.net) (Ping timeout: 186 seconds)
L737[18:35:26] ⇦ Quits: Raqbit (~Raqbit@239.ip-158-69-59.net) (Ping timeout: 204 seconds)
L738[18:37:24] ⇨ Joins: PolarizedIons (~Polarized@239.ip-158-69-59.net)
L739[18:38:12] ⇨ Joins: Subaraki (~Subaraki@239.ip-158-69-59.net)
L740[18:38:23] ⇨ Joins: Raqbit (~Raqbit@239.ip-158-69-59.net)
L741[18:46:06] ⇦ Quits: cpup (~cpup@32.218.119.208) (Ping timeout: 200 seconds)
L742[18:46:27] ⇦ Quits: CoderPuppy (~cpup@32.218.119.208) (Ping timeout: 200 seconds)
L743[18:51:37] ⇨ Joins: cpup (~cpup@32.218.119.251)
L744[18:52:14] ⇨ Joins: CoderPuppy (~cpup@32.218.119.251)
L745[18:55:06] ⇦ Quits: armctec (~Thunderbi@186.204.253.165) (Quit: armctec)
L746[18:55:12] *** Santa|afk is now known as SatanicSanta
L747[19:04:39] ⇨ Joins: cpup- (~cpup@32.218.112.51)
L748[19:05:01] ⇨ Joins: m5w (~matthew@lawn-128-61-12-40.lawn.gatech.edu)
L749[19:05:32] ⇦ Quits: m5w (~matthew@lawn-128-61-12-40.lawn.gatech.edu) (Client Quit)
L750[19:05:41] ⇨ Joins: m5w (~matthew@lawn-128-61-12-40.lawn.gatech.edu)
L751[19:06:15] ⇦ Quits: cpup (~cpup@32.218.119.251) (Ping timeout: 186 seconds)
L752[19:06:42] ⇦ Quits: CoderPuppy (~cpup@32.218.119.251) (Ping timeout: 198 seconds)
L753[19:12:13] ⇨ Joins: cpup (~cpup@32.218.112.51)
L754[19:16:48] ⇨ Joins: CoderPuppy (~cpup@32.218.112.72)
L755[19:17:28] ⇦ Quits: cpup (~cpup@32.218.112.51) (Ping timeout: 200 seconds)
L756[19:19:33] ⇦ Quits: cpup- (~cpup@32.218.112.51) (Ping timeout: 204 seconds)
L757[19:23:00] ⇨ Joins: cpup (~cpup@32.218.112.72)
L758[19:31:57] ⇨ Joins: Neal (~Neal@47.146.41.184)
L759[19:32:30] ⇦ Quits: Subaraki (~Subaraki@239.ip-158-69-59.net) (Read error: Connection reset by peer)
L760[19:32:39] ⇦ Quits: Raqbit (~Raqbit@239.ip-158-69-59.net) (Read error: Connection reset by peer)
L761[19:33:01] ⇦ Quits: PolarizedIons (~Polarized@239.ip-158-69-59.net) (Read error: -0x1: UNKNOWN ERROR CODE (0001))
L762[19:40:16] ⇨ Joins: Subaraki (~Subaraki@239.ip-158-69-59.net)
L763[19:40:26] ⇨ Joins: Raqbit (~Raqbit@239.ip-158-69-59.net)
L764[20:00:18] ⇦ Quits: Brokkoli (~Brokkoli@p5B23CD11.dip0.t-ipconnect.de) (Ping timeout: 383 seconds)
L765[20:21:36] ⇦ Quits: KGS (~KGS@h-158-174-9-50.NA.cust.bahnhof.se) (Ping timeout: 186 seconds)
L766[20:22:25] *** SatanicSanta is now known as Santa|afk
L767[20:24:22] <ajb> i'm trying to port a mod to 1.12. it add an item and a recipe, so i'm trying to make it use a json recipe
L768[20:25:15] <ajb> i wrote the json file, put it in assets/modname/recipes and deleted the old recipe code from the java source
L769[20:25:24] <ajb> unfortunately it does not work
L770[20:25:34] <ajb> the item shows up in game, but the recipe does not work
L771[20:26:19] <ajb> when it tries to parse my json file it says "com.google.gson.JsonParseException: Missing data for item 'minecraft:dirt'"
L772[20:26:36] <ajb> (i changed the recipe to use nothing but dirt just to test)
L773[20:28:50] <ajb> hmmmmmmmmm it works with "minecraft:gravel"
L774[20:28:55] <ajb> never mind then
L775[20:51:04] ⇦ Quits: Cornelia (~Nel@c-75-71-231-133.hsd1.co.comcast.net) (Ping timeout: 183 seconds)
L776[20:51:07] ⇨ Joins: blood (unknown@ool-45734b88.dyn.optonline.net)
L777[20:54:05] ⇦ Quits: Wastl2_ (~Wastl2@x4e34f366.dyn.telefonica.de) (Ping timeout: 204 seconds)
L778[20:55:15] ⇦ Quits: armed_troop (~armedtroo@pool-71-175-52-228.phlapa.fios.verizon.net) (Ping timeout: 200 seconds)
L779[20:56:42] ⇨ Joins: Wastl2 (~Wastl2@x4e34e50e.dyn.telefonica.de)
L780[21:06:22] ⇨ Joins: armed_troop (~armedtroo@pool-71-175-52-228.phlapa.fios.verizon.net)
L781[21:09:48] ⇨ Joins: Cornelia (~Nel@c-75-71-231-133.hsd1.co.comcast.net)
L782[21:12:34] <Hink> im trying to get a gui button with a custom texture and it's not rendering properly
L783[21:12:34] <Hink> https://gist.github.com/h1nk/d71020d431c5a2c5353d44a9a3a0cf4d
L784[21:13:09] <Hink> https://i.imgur.com/1rw18PW.png
L785[21:14:58] <ajb> so it's supposed to have some kind of mouseover effect?
L786[21:15:21] <Hink> yes
L787[21:15:28] <Hink> hence the 20 px by 40px texture
L788[21:15:51] <Hink> i based it off https://gist.github.com/h1nk/1961183096b3ae4708177ebd52e1cfb0
L789[21:16:01] <ajb> so it's not cropping the texture to the expected size?
L790[21:16:13] <ajb> so you get the mouseover image underneath?
L791[21:17:14] <Hink> here's what it looks like right now https://i.imgur.com/nA0uskT.png
L792[21:17:32] ⇨ Joins: Brokkoli (~Brokkoli@p2e5b1cd2.dip0.t-ipconnect.de)
L793[21:18:10] <ajb> according to the docs the args are minU, minV, maxU, maxV
L794[21:18:25] <ajb> so last arg should be this.height+i
L795[21:19:23] <ajb> it should work correctly when the mouse is not over it though
L796[21:19:59] <Hink> yeah
L797[21:20:06] <Hink> where am i missing this argument?
L798[21:20:18] <ajb> this.drawTexturedModelRect
L799[21:20:46] <Hink> this.drawTexturedModalRect(this.xPosition, this.yPosition, 0, i, this.width, this.height + i);
L800[21:20:47] <Hink> ?
L801[21:21:14] <ajb> i believe so, based on how the arguments are named, and assuming i am looking at the correct version
L802[21:21:25] <ajb> of course this will do nothing when i = 0
L803[21:21:30] <Hink> that results in this happening https://gfycat.com/IdlePleasedAmericanindianhorse
L804[21:21:47] <ajb> well it looks the same
L805[21:21:52] <ajb> but what about when mouse over?
L806[21:23:00] <Hink> even if i remove the logic for the hover it still does the same thing with a static texture
L807[21:23:06] ⇦ Quits: nallar (~nallar@cpc16-cani3-2-0-cust33.14-2.cable.virginm.net) (Quit: ZNC - http://znc.in)
L808[21:23:38] <ajb> what if you specify all the arguments manually
L809[21:23:49] <ajb> 0, 0, 20, 20
L810[21:24:15] <ajb> to me it looks like it is stretching the texture and only rendering the top left portion of it
L811[21:24:47] ⇨ Joins: nallar (~nallar@cpc16-cani3-2-0-cust33.14-2.cable.virginm.net)
L812[21:25:18] <ajb> hmm
L813[21:25:43] <Hink> hmm
L814[21:26:57] <Hink> i think its rendering a massive texture
L815[21:29:01] <ajb> i'm looking at the built in GuiButtonImage
L816[21:29:51] <ajb> it does not use drawTexturedModalRect the way i thought it should be used
L817[21:30:18] <ajb> last two arguments really are the width and height
L818[21:31:17] <Hink> yes
L819[21:31:23] <Hink> hence why it became tall
L820[21:31:52] <ajb> ah k, you didn't show that screenshot
L821[21:32:17] <ajb> if you make the button really big, does it show more of the texture? and is it your texture?
L822[21:32:37] <ajb> alternatively what happens if you draw a pink pixel in the top left of your texture?
L823[21:33:49] <Hink> lets see
L824[21:36:29] <Hink> https://gfycat.com/SameScarceHoiho https://i.imgur.com/FAhytJx.png
L825[21:36:34] <Hink> wtf
L826[21:36:37] <Hink> it's massive
L827[21:36:40] <ajb> yes
L828[21:36:57] <ajb> can you try just drawing 1 pixel, so we can see how stretched it is?
L829[21:37:08] <ajb> that might give a clue who is stretching it
L830[21:37:47] <ajb> i have a feeling the texture is being stretched to a square
L831[21:38:02] <ajb> so the single pixel will be rendered twice as wide as it is tall
L832[21:38:13] <ajb> then your texture coordinates end up wrong somehow
L833[21:38:53] <ajb> it actually looks like 3:1 in the first screenshot
L834[21:43:20] <Hink> there seems to be some sort of scaling issue
L835[21:43:21] <Hink> https://i.imgur.com/akJsWM8.png
L836[21:43:33] <Hink> that a one pixel red square in the top of the texture
L837[21:43:50] <Hink> maybe the texture is somehow 20x?
L838[21:44:26] <Hink> is there some scale thing im missing here and accidentally making the button 20 times its size
L839[21:44:35] <ajb> i think i know what is happening
L840[21:44:43] <ajb> it's not 20x
L841[21:44:52] <ajb> it's actually 20/250 and 40/250
L842[21:45:18] <ajb> your texture is 20x40, gl texture coordinates are floats between 0 and 1.0
L843[21:45:37] <ajb> so 0,0 to 1.0,1.0 would show the whole texture
L844[21:45:38] <Hink> yeah but im using the method that is ints
L845[21:45:50] <Hink> https://i.imgur.com/l23oVHY.png
L846[21:46:00] <ajb> yes, but it still has to convert to floats to send to the GPU
L847[21:46:05] <Hink> oh
L848[21:46:16] <ajb> so, if you go to the implementation of that function
L849[21:46:27] <ajb> well, when i do that, i'm on a different version
L850[21:46:54] <Hink> yeah it casts to floating points
L851[21:47:00] <ajb> but what it does is take the integer coorinates and multiplies them by 0.00390625F
L852[21:47:10] <ajb> which = divide by 250.0
L853[21:47:23] <Hink> yes
L854[21:47:26] <Hink> yes it does
L855[21:47:40] <Hink> what a mess
L856[21:47:41] <Hink> https://i.imgur.com/c1yFOkm.png
L857[21:47:41] <Hink> lol
L858[21:47:51] <ajb> so 20/250.0 = 0.08, 0.08*20 = 1.6 pixels
L859[21:48:25] <ajb> and for y you get 6.4 pixels
L860[21:48:37] <ajb> which is exactly the amount of your texture which gets rendered
L861[21:48:46] <ajb> i have no idea how this is *supposed* to work
L862[21:48:51] <ajb> but that's why you see what you see :)
L863[21:49:29] <ajb> sorry for y it's 3.2... 40 * (20/250)
L864[21:51:48] <ajb> so... what you'll need to do is take each integer texture coordinate, multiply by 250, then divide by the corresponding texture size
L865[21:53:46] <ajb> it will work out to this.drawTexturedModalRect(this.xPosition, this.yPosition, 0, 0.5*i, 1.0, 0.5);
L866[21:54:31] <ajb> hmm sorry, that should be this.drawTexturedModalRect(this.xPosition, this.yPosition, 0, 125*i, 250, 125);
L867[21:55:35] <ajb> this whole thing is crazy, but it's even more crazy that they used 250 and not a power of two
L868[21:56:35] <ajb> if i try to look into the code that actually calls this it's still obfuscated
L869[21:58:32] <ajb> basically it looks like this code will only work in a sensible way if all the textures are always 250x250
L870[22:02:17] <Hink> you must mean 256 because all the widgets are 256 by 256
L871[22:02:25] <ajb> maybe
L872[22:02:50] ⇨ Joins: quadraxis (~quadraxis@cpc77293-basf12-2-0-cust699.12-3.cable.virginm.net)
L873[22:02:51] <ajb> haha of course, 1/250 = 0.004 obviously :)
L874[22:03:02] <ajb> 1/256.0 = 0.00390625F
L875[22:03:07] <ajb> so it is a power of two after all
L876[22:04:05] <Hink> yeah, i was thinking 250 would be weird
L877[22:04:20] <ajb> so that kinda makes sense
L878[22:05:17] <ajb> it explains why hi res texture packs work too, if they've followed this everywhere
L879[22:05:55] <Hink> frickin uv coordinate and floating points
L880[22:06:12] <ajb> this is why nobody sensible writes games using raw opengl code
L881[22:06:31] <ajb> a good engine will hide all this
L882[22:06:34] * darkstone watches people seemingly run into the crazy rendering system of Minecraft, and nods solenmly
L883[22:09:45] ⇨ Joins: McJty (~jorrit@ptr-9197ufp7poavmolkniq.18120a2.ip6.access.telenet.be)
L884[22:10:58] ⇦ Quits: Sangar (~Sangar@2001:41d0:2:b7b9::) (Ping timeout: 204 seconds)
L885[22:10:58] ⇦ Quits: bochen415 (~bochen415@2a03:b0c0:1:a1::25e:e001) (Ping timeout: 204 seconds)
L886[22:12:17] ⇨ Joins: bochen415 (~bochen415@2a03:b0c0:1:a1::25e:e001)
L887[22:15:13] ⇨ Joins: Sangar (~Sangar@2001:41d0:2:b7b9::)
L888[22:24:44] ⇦ Quits: Lathanael|Away (~Lathanael@p54960BA1.dip0.t-ipconnect.de) (Ping timeout: 186 seconds)
L889[22:28:49] <darkstone> Is it normal that 1.10.2's Forge logs something about launchwrapper-1.12.jar?
L890[22:31:10] ⇨ Joins: Lathanael|Away (~Lathanael@p54960392.dip0.t-ipconnect.de)
L891[22:34:51] ⇦ Quits: m5w (~matthew@lawn-128-61-12-40.lawn.gatech.edu) (Quit: WeeChat 1.4)
L892[22:47:37] <LexMobile> yes, different projects have different version numbers...
L893[22:48:11] <darkstone> so you're saying this jar is referring to one of the mods I have installed, not Forge or Minecraft itself.
L894[22:49:49] <LexMobile> No...
L895[22:49:52] <LexMobile> Its a library
L896[22:50:00] <LexMobile> used by both Vanilla, and Forge to run.
L897[23:20:20] ⇦ Quits: McJty (~jorrit@ptr-9197ufp7poavmolkniq.18120a2.ip6.access.telenet.be) (Quit: Leaving)
L898[23:27:33] <Corosus> ugghh, AABB.expand become AABB.grow and AABB.addCoord became AABB.expand and i didnt notice, which is why a lot of my stuff is broken without me realizing
L899[23:27:57] <Corosus> method signature the same, i wonder if theres a way to detect these kind of mcp naming changes and alert you so theres no stealthy breaks
L900[23:29:20] <mezz> yeah that one caught a lot of people and spawned a lot of discussion https://www.reddit.com/r/feedthebeast/comments/6yi8l0/psa_modders_axisalignedbb_method_renames_causing/
L901[23:30:06] <Corosus> ah neat
L902[23:30:42] <Corosus> yeah i found like 10 cases where im using the wrong one
L903[23:30:54] <mezz> dang
L904[23:30:57] <mezz> yeah that's nasty
L905[23:31:24] <Corosus> i probably would have gone insane with mini issues if it didnt break tornado entity grabbing entirely, a big bug
L906[23:31:48] <mezz> gotta spread the word about it
L907[23:32:37] <Corosus> o7
L908[23:34:00] <darkstone> Corosus: tornado?
L909[23:34:07] <darkstone> what mod may this be? it sounds interesting
L910[23:34:09] <Corosus> the mighty spinny
L911[23:34:24] <Corosus> https://mods.curse.com/mc-mods/minecraft/237746-weather-storms-tornadoes
L912[23:35:17] <darkstone> nice
L913[23:35:32] <darkstone> Particle-based rain and snow - wow, how do you handle that? I'd think there'd be a lot of lag.
L914[23:36:32] <Corosus> built in renderer is fairly efficient, does decent for a few thousand, i have a WIP shader based renderer that can do 100k no problem even on my 5 year old gpu
L915[23:36:41] <darkstone> nice!
L916[23:36:50] <darkstone> I'll look into that. My mom plays and I think she'd love more advanced weather
L917[23:37:06] <Corosus> :>
L918[23:37:07] <darkstone> Does the waterfall sound happen underground too?
L919[23:37:15] <darkstone> I.e. all down-wards flowing water
L920[23:38:24] <darkstone> Also, was there a version for 1.10.2? to go with Portal Gun
L921[23:38:34] <darkstone> and Dragon Mounts also is still 1.10.2 Ithink...
L922[23:38:54] <Corosus> i recal it does
L923[23:39:08] <Corosus> actually id better make sure that still works...
L924[23:39:24] <darkstone> hehe
L925[23:39:46] <Corosus> yay it does
L926[23:40:10] <darkstone> hmmm
L927[23:40:21] <darkstone> There are two 1.10.2 jars here, a 'beta' and a release, but their dates are confusing
L928[23:40:22] <Corosus> and yeah theres a 1.10.2
L929[23:40:28] <darkstone> which should I get?
L930[23:40:42] <Corosus> hmm
L931[23:40:55] <Corosus> i should have marked the latest release
L932[23:40:56] <Corosus> doing that now
L933[23:41:35] <Corosus> bam
L934[23:41:40] * darkstone F5
L935[23:42:10] <Corosus> if you are downloading directly from site, get coroutil too
L936[23:42:31] <darkstone> Okay
L937[23:43:02] <darkstone> Does a specific version of that go with a specific one of these two 1.10.2 jars? Sorry for all the questions
L938[23:43:19] <darkstone> I usually have to go through a lot more trouble to get a version I want lol
L939[23:44:42] <darkstone> Like, I'd assume most recent for 1.10.2 on both except, one is a beta.
L940[23:45:35] <Corosus> latest of both for 1.10.2 should do fine
L941[23:45:35] * darkstone quiets
L942[23:45:39] <darkstone> so the beta?
L943[23:45:39] <Corosus> was afk
L944[23:45:43] <Corosus> latest release heh
L945[23:46:01] <darkstone> okay
L946[23:46:29] <darkstone> sorry, my brain is not working 100% tonight
L947[23:47:34] <Corosus> ah, TIL mods.curse.com lags behind for changes minecraft.curseforge.com
L948[23:47:40] <Corosus> one shows release one shows beta lol
L949[23:48:40] <Corosus> oh god, ZA has bugs related to the mcp naming issue too
L950[23:48:44] <Corosus> UPDATES FOR ALL
L951[23:50:28] <darkstone> bugs in a jar
L952[23:50:41] * darkstone dodges tomatos
L953[23:51:39] <tterrag> Corosus: that's why CF is better :P
L954[23:52:05] <Corosus> i wish theyd merge already
L955[23:52:13] <Corosus> double the comments, double the fun
L956[23:53:54] <darkstone> Corosus: I'm confused, are the storms only client-side?
L957[23:54:41] <Corosus> its fully multiplayer
L958[23:54:49] <Corosus> does magic to make everyone see the same more or less
L959[23:56:11] <darkstone> excellent!
<<Prev Next>> Scroll to Top