<<Prev Next>> Scroll to Bottom
Stuff goes here
L1[00:04:46] ⇦ Quits: cpup (~cpup@32.218.115.132) (Ping timeout: 204 seconds)
L2[00:06:43] ⇨ Joins: Mitchellbrine (uid38456@id-38456.ealing.irccloud.com)
L3[00:11:55] ⇨ Joins: Hgrebnednav_ (~Hgrebnedn@d8D872A6E.access.telenet.be)
L4[00:12:00] ⇨ Joins: cpup (~cpup@32.218.115.132)
L5[00:17:30] ⇦ Quits: Hgreb (~Hgrebnedn@d8d872a6e.access.telenet.be) (Ping timeout: 383 seconds)
L6[00:21:51] ⇦ Quits: Cornelia (~Nel@c-75-71-231-133.hsd1.co.comcast.net) (Ping timeout: 200 seconds)
L7[00:28:28] ⇨ Joins: Hunterz (~hunterz@62.182.234.189)
L8[00:36:58] *** TTFTCUTS is now known as TTFT|Away
L9[00:37:49] *** SatanicSanta is now known as Santa|afk
L10[00:49:19] ⇨ Joins: Doty1154 (~Doty1154@2601:648:8000:134f:9145:94b4:c65:d7fb)
L11[00:51:55] ⇦ Quits: Umbraco (~Umbraco@113x37x12x233.ap113.ftth.ucom.ne.jp) (Ping timeout: 200 seconds)
L12[01:00:51] <quadraxis> what did people think about https://github.com/MinecraftForge/MinecraftForge/issues/4124? should I make a PR, or not needed?
L13[01:08:29] ⇨ Joins: Umbraco (~Umbraco@113x37x12x233.ap113.ftth.ucom.ne.jp)
L14[01:13:55] <mezz> quadraxis, I'm looking at it right now
L15[01:14:07] <mezz> honestly it's hard for me to see what they even intended to do there...
L16[01:14:58] <mezz> are they trying to show a different toast every 5 seconds?
L17[01:15:57] <quadraxis> the toast is supposed to be up for 5 seconds
L18[01:16:10] <quadraxis> and it should show the whole list of items in that time
L19[01:16:15] <mezz> so they want it to cycle through all the values in 5 seconds, ok
L20[01:16:29] <mezz> that's really... easy
L21[01:17:24] <mezz> hm
L22[01:17:46] <mezz> there aren't enough milliseconds in 5 seconds to display everything when we have more than 5000 displaying
L23[01:18:07] <mezz> so I guess we can just cap it... the whole idea is silly
L24[01:18:51] ⇦ Quits: Uristqwerty (~chatzilla@modemcable128.165-177-173.mc.videotron.ca) (Ping timeout: 201 seconds)
L25[01:18:55] <kashike> extending the time not an option?
L26[01:19:19] <mezz> there's a bunch of 5000L hard-coded and I don't want to blow up the patch too big
L27[01:19:23] <quadraxis> doing max(value, 1) is proabably the easiest fix
L28[01:20:03] <mezz> I'm thinking min(5000, this.recipesOutputs.size()) for the denominator
L29[01:20:12] <mezz> so it'll show the first 5000?
L30[01:20:12] <tterrag> mezz: I think just using 5000D would fix it
L31[01:20:19] <tterrag> instead of 5000L
L32[01:20:24] <tterrag> it's already downcasted to int
L33[01:20:32] <kashike> "a bunch"
L34[01:20:34] <kashike> 2
L35[01:20:37] <kashike> :P
L36[01:20:39] <mezz> gross, but that might work
L37[01:20:51] <quadraxis> how would the % work in that case
L38[01:21:02] <tterrag> modulo works fine with floating point
L39[01:23:00] ⇦ Quits: Doty1154 (~Doty1154@2601:648:8000:134f:9145:94b4:c65:d7fb) (Read error: Connection reset by peer)
L40[01:23:56] ⇦ Quits: cpup (~cpup@32.218.115.132) (Ping timeout: 204 seconds)
L41[01:25:26] <mezz> a / (b / c) == a * c / b
L42[01:25:57] <mezz> I think that would be the right way to write it
L43[01:26:00] <quadraxis> yes the way it's written is dumb
L44[01:26:20] ⇨ Joins: cpup (~cpup@32.218.115.132)
L45[01:26:39] <quadraxis> it's done 'backwards' due to the integer division
L46[01:30:57] <mezz> I think it should still work fine if we reorder it
L47[01:31:02] <quadraxis> basically: (delta / 5000) * size
L48[01:31:12] <mezz> yeah
L49[01:31:37] <quadraxis> and then made to be a valid index for get()
L50[01:31:39] <mezz> I think (delta * size) / 5000 is best for int division
L51[01:34:07] <mezz> maybe get overflow if we have a billion recipes but I'm not sure we care as long as it's not crashing
L52[01:34:43] <kashike> if there's a billion recipes the sanity of mod developers/modpack developers should be questioned
L53[01:34:48] <mezz> heh
L54[01:35:54] <McJty> You can do that calculation with long
L55[01:35:59] <McJty> And then convert the end result to int
L56[01:36:01] ⇨ Joins: Ipsis (~Ipsis@82-69-71-184.dsl.in-addr.zen.co.uk)
L57[01:36:05] <mezz> yeah
L58[01:37:46] <mezz> going to do a sanity test and then push the fix
L59[01:38:34] <McJty> For some weird reason my Lost City mod got several reports of people crashing in RecipeToast
L60[01:38:42] <McJty> Claiming it to be caused by the worldgen
L61[01:38:50] <McJty> As that mod doesn't even have items or blocks. Let alone recipes :-)
L62[01:38:55] <mezz> that's extremely weird
L63[01:40:48] <mezz> I got a bug report today from someone with 100s of mods, saying JEI caused the server to crash on a certain version of forge. dunno how they got to that conclusion...
L64[01:41:40] <kashike> it's obviously JEI's fault
L65[01:41:43] <kashike> who else could it be?
L66[01:42:34] ⇨ Joins: iari (~iari___@evana.futhark24.org)
L67[01:43:34] ⇦ Quits: Hgrebnednav_ (~Hgrebnedn@d8D872A6E.access.telenet.be) (Ping timeout: 204 seconds)
L68[01:46:37] ⇦ Quits: KnightMiner (~KnightMin@adsl-75-5-73-47.dsl.emhril.sbcglobal.net) (Quit: Leaving)
L69[01:51:54] ⇦ Quits: McJty (~jorrit@94-224-152-129.access.telenet.be) (Quit: Leaving)
L70[02:00:03] <MCPBot_Reborn> [TEST CSV] Pushing snapshot_20170708 mappings to Forge Maven.
L71[02:00:07] <MCPBot_Reborn> [TEST CSV] Maven upload successful for mcp_snapshot-20170708-1.12.zip (mappings = "snapshot_20170708" in build.gradle).
L72[02:00:17] <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/
L73[02:01:03] ⇨ Joins: Unh0ly_Tigg (~Robert@c-24-21-196-226.hsd1.or.comcast.net)
L74[02:03:44] <Unh0ly_Tigg> So, I tried to launch a dev environment, with forge 2395, mcp snapshot 20170704, and I got an error "java.lang.ClassNotFoundException: net.minecraftforge.fml.common.Loader" I'm fairly certain that I set up forge correctly...
L75[02:04:07] <Unh0ly_Tigg> Does anyone know what might be going on?
L76[02:04:13] <TechnicianLP> mdk?
L77[02:04:29] <TechnicianLP> anyways: did you try refreshing the gradle project?
L78[02:04:52] <Unh0ly_Tigg> manually updated my build.gradle with the new versions of forge/forgegradle/mcp, and everything compiles fine
L79[02:05:17] <Unh0ly_Tigg> I'm currently re-running the eclipse gradle task, to make sure that's not something I missed.
L80[02:05:34] <TechnicianLP> if you changed versions, you have to rerun setupDecompWOrkspace
L81[02:05:42] <Unh0ly_Tigg> I had already done that.
L82[02:06:12] <Unh0ly_Tigg> I must have forgotten to run the eclipse task.
L83[02:06:37] <Unh0ly_Tigg> actually
L84[02:06:46] <Unh0ly_Tigg> it's erroring out because of ASM...
L85[02:06:55] <Unh0ly_Tigg> "Caused by: java.lang.NoSuchMethodError: org.objectweb.asm.Handle.isInterface()Z"
L86[02:07:08] <Unh0ly_Tigg> in the Remapper...
L87[02:07:42] <quadraxis> asm version?
L88[02:07:50] <Unh0ly_Tigg> eclipse says 5.2
L89[02:08:30] <quadraxis> is there an asm version given in the stacktrace
L90[02:08:44] <Unh0ly_Tigg> stacktrace says 5.2
L91[02:08:50] <quadraxis> hmm
L92[02:08:52] <TechnicianLP> can we have to log is a better question ...
L93[02:09:34] <Unh0ly_Tigg> https://gist.github.com/Unh0lyTigg/4282081c5259a76c24858e5b38ff7c5b
L94[02:12:34] <Unh0ly_Tigg> it's saying that ASMs own code is referring to code that ASM doesn't have...
L95[02:13:23] <kashike> at org.objectweb.asm.ClassReader.a(Unknown Source) ~[asm-5.0.4.jar:5.0.4]
L96[02:13:28] <kashike> two asm jars on classpath? :p
L97[02:13:34] <kashike> s/jars/versions
L98[02:13:38] <Unh0ly_Tigg> -_-
L99[02:14:39] <Unh0ly_Tigg> I have a library called rembulan referred to in my dependencies, it implements Lua 5.3 by compiling lua code to java bytecode.
L100[02:14:41] <Unh0ly_Tigg> with asm...
L101[02:15:00] <kashike> there you go
L102[02:15:50] <Unh0ly_Tigg> and removing the 5.0.4 asm from the classpath fixed it.
L103[02:15:53] <Unh0ly_Tigg> Thanks guys
L104[02:18:24] <TechnicianLP> i hope you know what youre doing ... (at least if the lua is untrusted ...)
L105[02:18:45] ⇨ Joins: Cornelia (~Nel@c-75-71-231-133.hsd1.co.comcast.net)
L106[02:20:58] <Unh0ly_Tigg> it will be sandboxed.
L107[02:21:43] <TechnicianLP2> by the jvm?
L108[02:21:49] <Unh0ly_Tigg> by me.
L109[02:21:55] <kashike> have fun with that
L110[02:22:22] <Unh0ly_Tigg> the way the library works, I just have to remove certain tables, and poof lua has no file access.
L111[02:23:03] <Unh0ly_Tigg> as it is, if you want to refer to lua in other neighboring files, you have to tell the library how to find those files.
L112[02:23:51] <Unh0ly_Tigg> https://github.com/mjanicek/rembulan has all the library code (it's not my library)
L113[02:24:35] <TechnicianLP2> iirc computercraft "chrooted" its computers (and had pretty much changed al default libs)
L114[02:24:54] <Unh0ly_Tigg> yeah, that's the sort of thing I plan to do.
L115[02:25:16] <Unh0ly_Tigg> at least to the degree that I need to sandbox it.
L116[02:27:57] ⇨ Joins: Noppes (~Noppes@ip56530f2e.direct-adsl.nl)
L117[02:33:40] ⇦ Quits: Mitchellbrine (uid38456@id-38456.ealing.irccloud.com) (Quit: Connection closed for inactivity)
L118[02:38:11] <Unh0ly_Tigg> Alright, while trying to load up a debug mode world, I get an error of "java.lang.ClassCastException: net.minecraftforge.fml.common.network.handshake.FMLHandshakeMessage$ServerHello cannot be cast to net.minecraftforge.fml.common.network.handshake.FMLHandshakeMessage$ModList" I really don't like the look of that.
L119[02:40:11] ⇨ Joins: c64cosmin (kiwiirc@79.114.70.53)
L120[02:40:59] ⇦ Quits: Upthorn (~ogmar@108-204-125-173.lightspeed.frokca.sbcglobal.net) (Read error: Connection reset by peer)
L121[02:41:13] ⇨ Joins: Upthorn (~ogmar@108-204-125-173.lightspeed.frokca.sbcglobal.net)
L122[02:43:10] ⇦ Quits: c64cosmin (kiwiirc@79.114.70.53) (Client Quit)
L123[02:57:08] <TechnicianLP> is there a way to use a BitSet in conjunction with objects registered to a registry? (i could upcast the IFOrgeRegistry i get from the Builder to get access to the getID functions - but that seems off ....)
L124[02:58:02] <tterrag> do you mean downcast?
L125[02:58:25] <tterrag> also, if you need to access the IDs, you're probably doing it wrong
L126[03:08:22] ⇦ Quits: smbarbour (~smbarbour@c-73-211-171-154.hsd1.il.comcast.net) (Read error: Connection reset by peer)
L127[03:08:42] ⇨ Joins: Hgrebnednav_ (~Hgrebnedn@ptr-908g3orwgp3d6kwd1cf.18120a2.ip6.access.telenet.be)
L128[03:08:48] ⇦ Quits: Upthorn (~ogmar@108-204-125-173.lightspeed.frokca.sbcglobal.net) (Read error: Connection reset by peer)
L129[03:09:03] ⇨ Joins: Upthorn (~ogmar@108-204-125-173.lightspeed.frokca.sbcglobal.net)
L130[03:12:42] <TechnicianLP> TLDR: i want to use a bitset as every player needs to have a boolean for each object registered to the registry - therefore i need some way to uniquely identify them (ids dont have to be consistent across restarts though) - ForgeRegistry has unique ids, IForgeRegistry is returned by the builder -> upcast (or is there a better way ...)
L131[03:14:02] <Ordinastie> registries are not really for that
L132[03:14:10] <Ordinastie> why do you want to use one ?
L133[03:16:12] <TechnicianLP> well i could use a HashMap<ResourceLocation, <Type>> instead ...
L134[03:32:33] ⇦ Quits: Shawn|i7-Q720M (~shawn156@c-71-205-36-210.hsd1.co.comcast.net) (Read error: Connection reset by peer)
L135[03:48:58] ⇦ Quits: cpup (~cpup@32.218.115.132) (Ping timeout: 204 seconds)
L136[03:54:15] ⇦ Quits: iari (~iari___@evana.futhark24.org) (Ping timeout: 201 seconds)
L137[04:01:53] ⇨ Joins: Nedelosk (~Nedelosk@ip-178-203-0-245.hsi10.unitymediagroup.de)
L138[04:04:43] ⇦ Quits: TechnicianLP2 (~AndChat59@p4FE1C061.dip0.t-ipconnect.de) (Quit: Bye)
L139[04:28:27] ⇨ Joins: c64cosmin (kiwiirc@79.114.70.53)
L140[04:46:34] <ghz|afk> has anyone encountered in 1.12 a situation where pistons (or some other block) disappear and become "air", xcept you can't place anything where that empty space is?
L141[04:50:19] <ghz|afk> ah wait
L142[04:50:25] <ghz|afk> there's a mod in this pack that replaces pistons
L143[04:50:28] <ghz|afk> I'll get rid of it
L144[04:57:17] <ghz|afk> didn't fix it, so I went and /setblock'd them back into existance
L145[04:57:33] <ghz|afk> no idea what was in those blocks, but it was invisible and had no collider and wasn't replaceable
L146[04:57:52] <TechnicianLP> could it have been dummyblocks?
L147[04:58:24] <ghz|afk> I suppose, but I would expect a creative player to be able to interact with them
L148[05:03:42] ⇦ Quits: Nedelosk (~Nedelosk@ip-178-203-0-245.hsi10.unitymediagroup.de) (Ping timeout: 204 seconds)
L149[05:20:02] ⇨ Joins: Nedelosk (~Nedelosk@ip-178-203-0-245.hsi10.unitymediagroup.de)
L150[05:21:22] *** PaleOff is now known as PaleoCrafter
L151[05:24:21] ⇦ Quits: afdw (~afdw@80.80.195.13) (Ping timeout: 200 seconds)
L152[05:25:27] <capitalthree> I just made the best minecraft mod, I am happy with myself.
L153[05:25:41] <ghz|afk> what does it do?
L154[05:25:45] <capitalthree> well second best after flamingo I guess
L155[05:26:03] <capitalthree> ghz|afk: it's what I've been working my ass off on for the last week... makes it so that dropped items do various things when despawning
L156[05:26:11] <ghz|afk> ah
L157[05:26:25] <ghz|afk> like those mods with self-planting saplings?
L158[05:26:45] ⇨ Joins: KGS (~KGS@h-158-174-9-249.NA.cust.bahnhof.se)
L159[05:27:03] <capitalthree> that does happen, yeah
L160[05:27:10] <capitalthree> but if anything it's a side-effect
L161[05:27:17] <capitalthree> it's more for accidentally griefing yourself
L162[05:27:23] <capitalthree> if you dig a tunnel with a full inventory, it fills itself back in
L163[05:28:16] <Unh0ly_Tigg> Well
L164[05:28:19] <capitalthree> it's largely for amusement but I could see it being a fun challenge
L165[05:28:31] <capitalthree> an incentive to make sure you are careful to pick stuff up
L166[05:28:48] <Unh0ly_Tigg> you just convinced me to never install that mod, because I never want that particular incident to happen...
L167[05:29:19] <capitalthree> haha
L168[05:29:24] <capitalthree> all that silliness is turned off by default
L169[05:29:33] <capitalthree> normally it's a mod for configuring dropped item despawn timers
L170[05:29:36] <capitalthree> so you should still install it!
L171[05:29:40] <capitalthree> https://minecraft.curseforge.com/projects/lingering-loot
L172[05:30:14] <Unh0ly_Tigg> Why would I need to configure despawn timers?
L173[05:30:47] <capitalthree> well the default config, for example, makes blocks mined by a player or dropped from a mob killed by a player, last longer than other ones
L174[05:30:56] <capitalthree> and stuff from player death lasts an hour before despawning
L175[05:31:17] <capitalthree> I find it a good way to reduce the time pressure to get your stuff, without lagging the server with too many dropped items
L176[05:32:22] <capitalthree> and the various conditions are customizable, so eg you could make everything use the vanilla default timer except on player death, or whatnot
L177[05:32:25] <Unh0ly_Tigg> if I could configure 1 thing in regards to dropped items, where those items are there not due to players, I'd make it so that chickens never lay eggs, and remove tallgrass and flowers from generating drops when their supporting blocks have been removed due to terrain gen.
L178[05:32:33] <Unh0ly_Tigg> 2 things*
L179[05:33:02] <capitalthree> well one thing you can do is keep everything at the default 5 minute timer, but put eggs and feathers on the crap tier and give it an even lower timer
L180[05:33:05] <capitalthree> like 1 minute
L181[05:33:53] <Unh0ly_Tigg> I'd also make it so the inventory system works like diablo 3 when it comes to player death (you keep your items, but anything that can take damage, takes 10% damage)
L182[05:33:59] <capitalthree> I dunno if there would be a way to detect items dropped right at terrain gen but that's an interesting idea
L183[05:34:20] <capitalthree> if I can figure out how to distinguish those items, then I would be interested in adding that as another configurable timer, and you can set it to 0 if you want them to insta-despawn
L184[05:34:43] <capitalthree> lingering loot isn't about player respawn behavior but I think there are mods that do that
L185[05:35:05] <Unh0ly_Tigg> I'm just tired of going around, and seeing seeds and whatnot sitting there because "hey, this would be a good place to put a water pool"
L186[05:35:25] <capitalthree> hehe... you must be easily annoyed
L187[05:35:50] <capitalthree> oh and lingering loot also gives items a visual indication when they are about to despawn
L188[05:35:52] <Unh0ly_Tigg> I've been seeing it because people don't order their terraingen handlers right.
L189[05:36:07] <capitalthree> ahh so you don't mean from vanilla?
L190[05:36:19] <Unh0ly_Tigg> no, vanilla doesn't have that issue.
L191[05:36:33] <Unh0ly_Tigg> because in that regard, vanilla does it better than mods do.
L192[05:36:38] <capitalthree> ok
L193[05:36:46] <capitalthree> but it does still generate hovering sand no? xD
L194[05:37:04] ⇨ Joins: afdw (~afdw@80.80.200.219)
L195[05:37:04] <Unh0ly_Tigg> I want to be able to restructure the terraingen system, so that folliage *always* happens last.
L196[05:37:21] <capitalthree> anyways you don't have to like my mod... hopefully somebody somewhere will :P
L197[05:37:35] <capitalthree> I just feel so free now that I put out a release. I've been coding too obsessively
L198[05:37:41] <Unh0ly_Tigg> hovering sand is fine, it's terrain being removed, causing folliage to drop items, when it could have been prevented.
L199[05:37:43] <capitalthree> on the hardcore mode features that most people won't even want to turn on xD
L200[05:37:49] <capitalthree> because it's funny to watch
L201[05:38:05] <capitalthree> why is hovering sand fine?
L202[05:38:22] <Unh0ly_Tigg> because it doesn't generate un-needed entities
L203[05:38:39] <Unh0ly_Tigg> all those items that get dropped, use up tick time...
L204[05:39:20] <Unh0ly_Tigg> also, going through the world with a magnet, and all of a sudden having my inventory full of random seeds and flowers and whatnot.
L205[05:39:35] ⇨ Joins: MonkeyTyrant (~MonkeyTyr@blk-212-75-47.eastlink.ca)
L206[05:39:37] <capitalthree> sounds nice to me. free flowers and seeds...
L207[05:40:36] <Unh0ly_Tigg> I'm fine with just going and breaking them manually to get seeds and flowers. I'm not fine with just finding them laying on the ground, because of miss-ordered terraingen events firing.
L208[05:41:42] ⇦ Quits: MonkeyTyrant (~MonkeyTyr@blk-212-75-47.eastlink.ca) (Client Quit)
L209[05:48:17] ⇦ Quits: Unh0ly_Tigg (~Robert@c-24-21-196-226.hsd1.or.comcast.net) (Read error: Connection reset by peer)
L210[05:51:33] ⇨ Joins: Unh0ly_Tigg (~Robert@c-24-21-196-226.hsd1.or.comcast.net)
L211[05:51:55] <Unh0ly_Tigg> welp, internet dropped for a minute there.. -_-
L212[05:52:15] <kashike> rip
L213[05:56:21] ⇦ Quits: Unh0ly_Tigg (~Robert@c-24-21-196-226.hsd1.or.comcast.net) (Ping timeout: 201 seconds)
L214[06:03:32] *** MrKick|Away is now known as MrKickkiller
L215[06:17:00] <capitalthree> well unh0ly does have me curious now, is there a way to detect the age of a chunk since generation?
L216[06:17:20] <capitalthree> if so I could detect items that break from generation and remove them
L217[06:21:22] ⇨ Joins: Unh0ly_Tigg (~Robert@c-24-21-196-226.hsd1.or.comcast.net)
L218[06:21:30] <Unh0ly_Tigg> ugh
L219[06:21:36] <Unh0ly_Tigg> my modem sucks
L220[06:22:04] <capitalthree> oh hey
L221[06:31:33] ⇨ Joins: Cast0077 (~Cast0077@24-151-30-78.dhcp.nwtn.ct.charter.com)
L222[06:48:52] ⇨ Joins: Brokkoli (~Brokkoli@p5B23C80C.dip0.t-ipconnect.de)
L223[07:01:04] ⇦ Quits: Backslash_ (~Backslash@ip-178-200-132-119.hsi07.unitymediagroup.de) (Quit: Leaving)
L224[07:03:14] ⇨ Joins: Backslash (~Backslash@ip-178-200-132-119.hsi07.unitymediagroup.de)
L225[07:07:14] ⇦ Quits: h5h77 (~h5h77@2a02:8108:4b40:907:922b:34ff:feae:b38b) (Remote host closed the connection)
L226[07:07:47] ⇦ Quits: Meronat (uid190493@id-190493.highgate.irccloud.com) (Quit: Connection closed for inactivity)
L227[07:11:21] ⇨ Joins: Hubry (~Hubry@pip9.t19.ds.pwr.wroc.pl)
L228[07:20:45] <ghz|afk> ah nice
L229[07:20:51] <ghz|afk> saw this article linked from a tweet
L230[07:20:52] <ghz|afk> https://timreview.ca/article/416
L231[07:20:57] <ghz|afk> has a nice "license compatibility diagram"
L232[07:30:06] ⇦ Quits: MCDis (~MCDis@68.ip-158-69-220.net) ()
L233[07:30:19] ⇨ Joins: MCDis (~MCDis@68.ip-158-69-220.net)
L234[07:30:33] ⇨ Joins: cpup (~cpup@32.218.118.13)
L235[07:35:53] ⇦ Quits: cpup- (~cpup@32.218.115.132) (Ping timeout: 383 seconds)
L236[07:35:57] <ghz|afk> hahahaha oops.
L237[07:36:07] <ghz|afk> I "deactivated" my villager breeder by mistake
L238[07:36:18] <ghz|afk> by removing all the white-coats
L239[07:36:22] <ghz|afk> and killing all the non-farmers
L240[07:36:25] <ghz|afk> problem is
L241[07:36:34] <ghz|afk> all the farmers have full inventories -- they can't catch the food others throw
L242[07:41:00] ⇦ Quits: Nedelosk (~Nedelosk@ip-178-203-0-245.hsi10.unitymediagroup.de) (Read error: Connection reset by peer)
L243[07:41:10] ⇦ Quits: KGS (~KGS@h-158-174-9-249.NA.cust.bahnhof.se) (Ping timeout: 186 seconds)
L244[07:43:51] ⇨ Joins: CoderPuppy (~cpup@32.218.118.29)
L245[07:44:01] <TechnicianLP> yay for the unused "const" keyword ...
L246[07:47:31] <ghz|afk> hm?
L247[07:47:41] ⇦ Quits: Hunterz (~hunterz@62.182.234.189) (Remote host closed the connection)
L248[07:47:43] <ghz|afk> ah, java has a reserved "const" keyword they never used?
L249[07:47:58] ⇦ Quits: cpup (~cpup@32.218.118.13) (Ping timeout: 383 seconds)
L250[07:48:15] <PaleoCrafter> yep, similar to goto
L251[07:48:21] <TechnicianLP> basically yes ...
L252[07:48:29] <ghz|afk> that's silly...
L253[07:48:33] <capitalthree> I wish we had goto!
L254[07:48:45] <ghz|afk> they use "final" to mean both "can't inherit" and "can't write"
L255[07:48:51] <ghz|afk> while they have const already as a reserved keyword?
L256[07:49:03] <TechnicianLP> label32: capitalthree we have gotot!; break label32;
L257[07:49:30] <capitalthree> I thought break only breaks to the *end* of a named block
L258[07:49:51] <ghz|afk> well
L259[07:49:54] <ghz|afk> there's two uses of goto:
L260[07:49:58] <ghz|afk> 1. ensuring cleanup on exist
L261[07:50:00] <ghz|afk> exit*
L262[07:50:12] <ghz|afk> 2. breaking/continuing outer loops in a nested loop
L263[07:50:20] <ghz|afk> #1 is solved by finally
L264[07:50:29] <ghz|afk> #2 by labeled breaks/continues
L265[07:52:57] <capitalthree> 1 is handled by finally blocks
L266[07:53:03] <capitalthree> wait
L267[07:53:07] <capitalthree> I should read all the stuff before opening my mouth
L268[07:53:08] <capitalthree> xD
L269[07:53:34] <ghz|afk> XD
L270[07:54:33] <capitalthree> anyways yeah... basically my ideal goto, would only go forwards, and wouldn't let you skip over a variable declaration or initial assignment
L271[07:54:57] <capitalthree> you're right that it's not necessary
L272[07:55:04] <capitalthree> but if those rules are imposed I don't think it would get out of hand
L273[07:55:15] <capitalthree> and makes some things slightly shorter :P
L274[07:55:20] <ghz|afk> well C# has proper fully-fledged goto
L275[07:55:22] <ghz|afk> and it works just fine
L276[07:55:30] <ghz|afk> I haven't seen much code abusing it
L277[07:55:45] <PaleoCrafter> have you seen much code *using* it? :P
L278[07:55:50] <capitalthree> I should learn the C#
L279[07:55:57] <ghz|afk> not much no ;P
L280[07:56:19] <ghz|afk> capitalthree: yup
L281[07:56:23] <ghz|afk> best language ever, IMO
L282[07:56:26] <ghz|afk> or rather
L283[07:56:29] <capitalthree> it seems pretty good
L284[07:56:41] <ghz|afk> best imperative-objectoriented high-level language
L285[07:56:46] <capitalthree> hehe
L286[07:56:59] <capitalthree> so what is your favorite jvm language?
L287[07:57:07] <TechnicianLP> java!
L288[07:57:12] <ghz|afk> haven't looked at alternatives
L289[07:57:20] <ghz|afk> I just write java
L290[07:57:25] <capitalthree> fair enough
L291[07:57:29] <capitalthree> java works
L292[07:57:35] <ghz|afk> but like
L293[07:57:40] <capitalthree> kotlin is sexy :P
L294[07:57:43] <ghz|afk> the two most people talk about...
L295[07:57:46] <ghz|afk> kotlin has "fun" as a keyword
L296[07:57:49] <ghz|afk> so it's off the list
L297[07:57:51] <capitalthree> XD
L298[07:58:01] <capitalthree> fun hater
L299[07:58:03] <ghz|afk> and the other one... I can't even remember the name right now
L300[07:58:06] <capitalthree> scala
L301[07:58:10] <ghz|afk> that
L302[07:58:12] <ghz|afk> it's too functional
L303[07:58:14] <capitalthree> I also want to try a mod in ceylon
L304[07:58:30] <TechnicianLP> what do you guys think of go? (on of my friends keeps recommending it to me ....)
L305[07:58:31] <capitalthree> scala is *idiomatically* functional but you can write java in scala basically
L306[07:58:41] <capitalthree> TechnicianLP: it's a toy. it does not support generics
L307[07:58:59] <ghz|afk> TechnicianLP: well it uses "func", so that's ok
L308[07:59:16] <capitalthree> ok I can't handle this nonsense this late at night xD
L309[07:59:18] <capitalthree> goodnght
L310[07:59:30] <ghz|afk> that's all I know about it
L311[07:59:38] <capitalthree> that's all you seem to concern yourself with
L312[07:59:38] <ghz|afk> so i can't give a proper opinion about the language itself
L313[08:00:58] <PaleoCrafter> judging the language simply based on that keyword is really just weird xD
L314[08:01:23] <PaleoCrafter> like... you don't even notice the "fun" anymore when you get used to it
L315[08:01:26] <ghz|afk> it's really just a joke
L316[08:01:39] <ghz|afk> there are other things that keep me away from it
L317[08:01:48] <ghz|afk> #1 is simply Ican't be bothered to learn a new langauge right now
L318[08:01:58] <ghz|afk> so I make excuses
L319[08:02:09] <TechnicianLP> ^ same for me
L320[08:02:34] <ghz|afk> the truth is, I'd just want java to adopt more C# or C++ concepts into it
L321[08:02:47] <PaleoCrafter> it's slowly getting there :P
L322[08:02:56] <ghz|afk> starting with variable inference, valuetypes, and tuple (de)construction
L323[08:02:57] <capitalthree> is that not what kotlin is o_o ffs
L324[08:03:12] <capitalthree> oh well for the latter two you'd want scala I guess
L325[08:03:50] <PaleoCrafter> Kotlin does have destructuring
L326[08:03:56] <capitalthree> oh cool
L327[08:04:01] * TechnicianLP mixes names and spits out "scatlin"
L328[08:04:03] <capitalthree> with when?
L329[08:04:18] <PaleoCrafter> https://kotlinlang.org/docs/reference/multi-declarations.html
L330[08:04:26] <Unh0ly_Tigg> I want pseudo operator overload so that things like "list += element" does the same thing as "list.add(element)"
L331[08:04:31] <Unh0ly_Tigg> in java
L332[08:04:33] <PaleoCrafter> not sure if it's name-based or only for data classes
L333[08:04:36] <capitalthree> Unh0ly_Tigg: kotlin does that
L334[08:04:46] <capitalthree> anyways it's understandable to not want to learn a new language, but keep your mind open, because you might be surprised how easy it is to learn kotlin from knowing java.
L335[08:04:52] <Unh0ly_Tigg> capitalthree, "in java"
L336[08:05:07] <capitalthree> Unh0ly_Tigg: kotlin is a drop-in replacement for java
L337[08:05:14] <ghz|afk> one funny thing is
L338[08:05:24] <ghz|afk> I don't like when languages use "name: type" ordering
L339[08:05:27] <capitalthree> Unh0ly_Tigg: I want a pony but I want it to be my cat. don't just give me a pony, that's cheating
L340[08:05:34] <ghz|afk> but I'm the first one to use that when typing a formal description
L341[08:05:35] <Unh0ly_Tigg> I know that, but I want all jvm based languages to be able to support it natively.
L342[08:05:51] <ghz|afk> I think the reason is, when I write a formal description, I want readability
L343[08:05:54] <ghz|afk> but when I code, I want to be done quick
L344[08:06:09] <capitalthree> Unh0ly_Tigg: well I don't know what's stopping oracle but I'm not waiting around, the better java exists today
L345[08:06:25] <capitalthree> ghz|afk: what's quicker than omitting most of your ascriptions?
L346[08:06:51] <capitalthree> did you just admit that you find kotlin and scala more readable but you don't care?
L347[08:07:11] <ghz|afk> I guess
L348[08:07:38] <Unh0ly_Tigg> the main reason operator overloading doesn't exist in java (javac compiles string addition to use StringBuilder) is because the original language designers didn't want it.
L349[08:08:29] ⇨ Joins: Raycoms (~Raycoms@2804:d57:1b08:b00:d2fa:5cd2:eba4:9a53)
L350[08:08:46] <Raycoms> Is there a way to obtain information about all players which were on the server until now?
L351[08:09:17] <capitalthree> Unh0ly_Tigg: the thing is, having a predefined set of operators that proxy to a predefined set of methods, isn't operator overloading
L352[08:09:48] <capitalthree> well hmm kotlin's page calls it operator overloading I guess
L353[08:09:56] <capitalthree> but it's nothing like scala where any symbol can be turned into anything
L354[08:09:57] <Unh0ly_Tigg> Raycoms, there *is* a folder somewhere on the server that contains all the player inventory data files, you might be able to scape the file names for uuids.
L355[08:10:16] <ghz|afk> let's say there's 3 levels of operator overloading
L356[08:10:19] <Unh0ly_Tigg> Raycoms, it might be somewhere in the world savedata.
L357[08:10:29] <ghz|afk> the basic level, is just syntax sugar for "add" etc methods using standard names
L358[08:10:37] <capitalthree> the operators in kotlin have fixed semantics and you just get to define them. which is quite nice because it keeps things simple and consistent but still gives a lot of flexibility to make prettier code
L359[08:10:37] <Raycoms> But isn't there any method, I mean minecraft reads it somehow as well. So a file reader shouldn't be necessary?
L360[08:10:45] <ghz|afk> the intermediate level, uses symbols like "operator +"
L361[08:11:07] <ghz|afk> and the advanced level, allows arbitrary symbols as names for methods
L362[08:11:17] <ghz|afk> and allows calling those symbols with infix/prefix notation
L363[08:11:17] <capitalthree> so level 1 is kotlin, level 3 is scala
L364[08:11:26] <ghz|afk> and level 2 is C++ and C#
L365[08:12:05] <ghz|afk> it's understandable for any compiler programmer to never want to ever touch any level 3 syntax
L366[08:12:23] <ghz|afk> (it's a mess when there's arbitrary precedence ordering)
L367[08:12:25] <capitalthree> Raycoms: if I knew details I'd help, but if nobody knows offhand, just try to examine how minecraft interacts with those files
L368[08:12:27] <Unh0ly_Tigg> I want level 1, but with the operator keyword from level 2, so you can control when a method is an operator overload.
L369[08:12:39] <capitalthree> and then find the best place to hook into the code to get the info you want without doing file i/o yourself
L370[08:13:00] <immibis> though then you have to remember if the * operator is called mul or mult or multiply
L371[08:13:03] ⇦ Quits: immibis (~chatzilla@122-59-207-252.jetstream.xtra.co.nz) (Quit: ChatZilla 0.9.92-rdmsoft [XULRunner 35.0.1/20150122214805])
L372[08:13:07] <ghz|afk> Unh0ly_Tigg: java would use annotations then?
L373[08:13:17] <ghz|afk> @Operator public int add(A, B)
L374[08:13:37] <Unh0ly_Tigg> I would want this to be a modifier on the method.
L375[08:13:41] <Unh0ly_Tigg> not an annotation
L376[08:13:46] <ghz|afk> this in turn would allow IDEs to use external annotations
L377[08:13:53] <capitalthree> I disagree, there should be no special declaration that it's an operator
L378[08:13:54] <ghz|afk> to add that feature to 3rdparty / old classes
L379[08:14:02] <capitalthree> a + b should be straight-up syntactic sugar for a.add(b), end of
L380[08:14:33] <capitalthree> a's type either has a .add accepting b's type, or not
L381[08:14:36] <ghz|afk> that's my feeling too, capitalthree
L382[08:14:39] <capitalthree> if so, it's used, if not, compile error
L383[08:14:43] <PaleoCrafter> list + item feels weird though
L384[08:14:53] <Unh0ly_Tigg> list += item
L385[08:15:02] <capitalthree> list :: item
L386[08:15:13] <PaleoCrafter> item :: list if anything :P
L387[08:15:23] <capitalthree> isn't it item : list?
L388[08:15:30] <PaleoCrafter> it is
L389[08:15:36] <Unh0ly_Tigg> vertex *= matrix
L390[08:15:41] <ghz|afk> result = [ list... , item ] / [ item, list... ]
L391[08:15:50] <Unh0ly_Tigg> or matrix *= vertex, to be more accurate
L392[08:15:58] ⇨ Joins: MWisBest (~MWisBest@140.74-213-213.cellcom.com)
L393[08:16:02] <ghz|afk> that's how coffeescript does splicing
L394[08:16:32] <capitalthree> PaleoCrafter: anyways sometimes prepend isn't what you want but yeah
L395[08:17:09] <capitalthree> point is, there are a lot of very easy solutions so these problems that get a lot of mileage
L396[08:17:17] <PaleoCrafter> of course, but : is cons is prepend :P
L397[08:17:22] <capitalthree> oracle has been very slow to bother with making improvements to the language
L398[08:17:32] <capitalthree> so that's why I'm happier on other jvm langs
L399[08:17:42] <capitalthree> but you guys *are* getting improvements on java, and you have the other langs to thank for that too
L400[08:17:56] <capitalthree> so even if you stay on java, you should be happy scala exists, because that pressure is probably why you have lambdas :P
L401[08:18:09] ⇦ Quits: Noppes (~Noppes@ip56530f2e.direct-adsl.nl) (Ping timeout: 200 seconds)
L402[08:18:31] ⇨ Joins: Unnoen (~Unnoen@60-242-93-115.static.tpgi.com.au)
L403[08:20:40] <Unnoen> I don't suppose this would be a place to ask for some help with modding?
L404[08:20:49] <TechnicianLP> ASK!
L405[08:20:51] <PaleoCrafter> it is exactly the place to ask for help :P
L406[08:20:55] <TechnicianLP> -caps
L407[08:21:28] <Unnoen> New to Java, not to programming. To get into it I thought I'd make a simple mod that would take an item and spit out all the raw materials needed.
L408[08:21:32] <Raycoms> I want to get all gameProfiles of all players which have been online since the server wa created
L409[08:21:44] <Unh0ly_Tigg> was there something changed in 1.12, where if a block only has 1 property, it automatically uses registry_name#variant=value instead of registry_name#property_name=value ?
L410[08:21:59] <Unnoen> Trying to find out how to get the ingredients of an item, can't seem to find much help
L411[08:21:59] <PaleoCrafter> not that I know of
L412[08:22:12] <Unh0ly_Tigg> CraftingManager
L413[08:22:25] <Unh0ly_Tigg> search list of IRecipe instances
L414[08:23:01] <Raycoms> FMLCommonHandler.instance().getMinecraftServerInstance().getPlayerList().getAllProfiles() works for offline players?
L415[08:23:12] <Unh0ly_Tigg> downcast to recipe types, that should allow you to find inputs to recipes
L416[08:23:24] <capitalthree> Unnoen: that's not as easy as you think
L417[08:23:35] <Unnoen> Alright, I'll have a look into that then, thanks a tonne
L418[08:23:49] <capitalthree> basically the recipes are just a non-organized pile of rules for taking ingredients, matching, and creating an output
L419[08:23:52] <Unnoen> Yeah I know it might not be so easy with recursion and fun stuff
L420[08:24:03] <capitalthree> you're going to have to analyze the recipes in order to build a dependency graph
L421[08:24:10] <Unnoen> Ahh. I see.
L422[08:24:19] <capitalthree> not saying you can't do it, but it's not straightforward and there will be weird edge cases
L423[08:24:34] <capitalthree> a lot of attempts have been made to do autocrafting mods that figure out what recipes to do to get a result
L424[08:24:40] <capitalthree> and i've seen some cool attempts but nothing perfect
L425[08:24:51] <capitalthree> so if you do a good job on this kind of analysis it could be *very* useful for cool mods
L426[08:24:55] <Unnoen> I'm fine with a few edge cases, It's really just something to do to get my head around MC modding and Java
L427[08:25:06] <capitalthree> it will be a fun project if it doesn't overwhelm you
L428[08:25:13] <capitalthree> also have you heard of kotlin?
L429[08:25:25] <Unnoen> Can't say I have
L430[08:25:33] <capitalthree> it's a jvm language that is basically like better java with less boilerplate
L431[08:25:36] <Unh0ly_Tigg> Raycoms, what version of minecraft are you on? because in 1.12, PlayerList doesn't have a getAllProfiles method
L432[08:25:37] <capitalthree> and more nice features that other languages have
L433[08:25:57] <capitalthree> with perfect compatibility with java, so minecraft modding in it is painless
L434[08:26:01] <Unnoen> Ooooh, might have a look into it
L435[08:26:09] <capitalthree> it has type inferrence if you're used to that
L436[08:26:10] <TechnicianLP> capital: i think he should get to know java before he tries alternative jvmlanguages ...
L437[08:26:12] <capitalthree> what languages do you come from?
L438[08:26:19] <capitalthree> TechnicianLP: he's not new to programming :P
L439[08:26:43] <Unh0ly_Tigg> "New to Java, not to programming." to be correct.
L440[08:26:44] <capitalthree> ultimately you'll be learning java at the same time
L441[08:26:53] <capitalthree> you can't do much minecraft modding without reading through the minecraft source code
L442[08:27:02] <Unnoen> I come from mostly scripting/high-level but have dabbled in many
L443[08:27:02] <capitalthree> but writing kotlin is much more pleasant :D
L444[08:27:23] <Raycoms> 1.10 atm
L445[08:28:00] <ghz|afk> auto-crafting on 1.12 is probably a lot easier than any older version
L446[08:28:00] <Unnoen> I think I might stick to Java for now
L447[08:28:08] <ghz|afk> exclusing custom recipes with dynamic outputs, of course
L448[08:28:11] <ghz|afk> escluding*
L449[08:28:20] <capitalthree> ahh did the recipe system improve?
L450[08:28:28] <ghz|afk> IRecipe now has getIngredients()
L451[08:28:34] <capitalthree> oh nice.
L452[08:28:36] <PaleoCrafter> I don't see anything wrong with only learning to *write* a different JVM language and only learning to understand Java
L453[08:28:37] <ghz|afk> so *any* recipe can provide its inputs
L454[08:28:38] <Unnoen> Yeah I heard that the recipe system for 1.12 was a lot better
L455[08:28:53] <Unnoen> Oh, it just has a straight method to get ingredients?
L456[08:28:58] <ghz|afk> yup
L457[08:29:00] <capitalthree> PaleoCrafter: people also have an irrational fear of polyglot situations
L458[08:29:03] <Unh0ly_Tigg> I recently saw something about how to add new recipe types and reference them in json, something about a factories.json file, does anyone know where I might re-find this information?
L459[08:29:15] <ghz|afk> returns a list of Ingredient object
L460[08:29:21] <ghz|afk> where each ingredient has getMatchingStacks
L461[08:29:23] <Raycoms> Unh0ly_Tigg only seems to list online players
L462[08:29:23] <PaleoCrafter> https://gist.github.com/LexManos/2a11d4f7aa9d680d861dae4faf9dcfa6 Unh0ly_Tigg
L463[08:29:28] <ghz|afk> to get the list of ItemStacks it can accept
L464[08:29:28] <Unnoen> I was going to develop for 1.10 as my server runs that but maybe I should just go to 1.12 then
L465[08:29:32] <ghz|afk> XD
L466[08:29:35] <ghz|afk> try 1.12 first
L467[08:29:45] <PaleoCrafter> capitalthree, well, it *is* a lot nicer to have everything nice and tidy in one language :P
L468[08:29:45] <ghz|afk> it's going to be a much more pleasant experience
L469[08:29:51] <Unnoen> Yeah, should always dev for the latest version
L470[08:30:02] <ghz|afk> I have a WIP magic mod
L471[08:30:04] <ghz|afk> Elements of Power
L472[08:30:06] <capitalthree> PaleoCrafter: yeah but it should be kotlin and not java
L473[08:30:15] <ghz|afk> which allows deconstructing items into the basic magical essences
L474[08:30:19] <ghz|afk> (one-way operation)
L475[08:30:20] * TechnicianLP thinks th opposite
L476[08:30:25] <Raycoms> We dev for 1.10 - 1.12, so we dev in 1.10 and then port forward
L477[08:30:28] <Unh0ly_Tigg> PaleoCrafter, that's close, but what I saw didn't mention having multiple recipes in the same json file.
L478[08:30:30] <ghz|afk> and up to 1.11
L479[08:30:35] <ghz|afk> I had a big pile of mess
L480[08:30:51] <ghz|afk> for handling ShapedRecipes, ShapelessRecipes, ShapedOreRecipe, ShapelessOreRecipe
L481[08:30:52] <ghz|afk> separately
L482[08:30:56] <ghz|afk> with reflection involved
L483[08:30:58] <PaleoCrafter> capitalthree, it should really be Scala, but can't have everything I guess :P
L484[08:31:00] <ghz|afk> and manually handling oreDictionary
L485[08:31:07] <ghz|afk> I deleted everything
L486[08:31:09] <PaleoCrafter> Unh0ly_Tigg, multiple recipes in the same JSON aren't a thing
L487[08:31:13] <Unnoen> Reflection and ASM still elude me
L488[08:31:15] <ghz|afk> and replaced it with one single method to get all the inputs
L489[08:31:15] <capitalthree> PaleoCrafter: yeah good point :P
L490[08:31:29] <ghz|afk> like 2000 lines of code turned into 100ish
L491[08:31:31] <Unnoen> I don't want to even touch those until I have a better understanding
L492[08:31:39] <ghz|afk> yeps then 1.12 is your better choice
L493[08:31:43] <Unh0ly_Tigg> PaleoCrafter, oh, thought the _constants.json was something else...
L494[08:31:45] <capitalthree> PaleoCrafter: I'm not that demanding... at the end of the day, once java gets proper type inferrence, I'll stop grumbling when I work in java code
L495[08:31:45] <ghz|afk> because before 1.12, you'd have had to use reflection.
L496[08:31:54] <PaleoCrafter> ah, no, the constants are just for defining reusable ingredients
L497[08:32:11] <ghz|afk> hey btw people
L498[08:32:14] <ghz|afk> is there some parachute mod?
L499[08:32:20] <ghz|afk> I mean, a good one
L500[08:32:26] <capitalthree> we have elytra now :o
L501[08:32:27] <ghz|afk> that lets you control falling speed and direction
L502[08:32:37] <ghz|afk> not just some random slowfall-as-an-item
L503[08:32:50] <ghz|afk> I have OpenGliders installed
L504[08:32:57] <ghz|afk> but you can't "dive"
L505[08:33:04] <ghz|afk> there's no way to choose to fall faster
L506[08:33:17] <capitalthree> Unnoen: don't touch asm if you can possibly help it
L507[08:33:21] <Unh0ly_Tigg> will I still have to manually sync custom recipe types S->C?
L508[08:33:26] <PaleoCrafter> https://minecraft.curseforge.com/projects/parachutemod first result ¯\_(ツ)_/¯
L509[08:33:39] <ghz|afk> Unh0ly_Tigg: forge WANTS to do s->c sync
L510[08:33:42] <ghz|afk> but not yet
L511[08:33:44] <Unnoen> Yeah I know, ASM is evil, etc etc :P
L512[08:34:03] <Unh0ly_Tigg> ok, I'd love for that to be implemented while we're still in 1.12.
L513[08:34:10] <capitalthree> Unnoen: can I plug my mods? :P I have a server backup mod and a mod for controlling dropped item despawn timers, that you might like if you are a server admin
L514[08:34:17] <Unh0ly_Tigg> instead of waiting for 1.13
L515[08:34:29] <ghz|afk> PaleoCrafter: I suspect this is going to be inthe "slowfall as an item" category
L516[08:34:34] <ghz|afk> but I'm going to check
L517[08:34:48] <PaleoCrafter> ghz|afk, there also is my WIP magic mod which allows you to slow your fall given there's metal under you xD
L518[08:34:54] ⇨ Joins: armctec (~Thunderbi@177.140.144.214)
L519[08:35:03] <Unnoen> Sure, at the moment I'm content with the config of the server but you never know when something breaks and you need a backup
L520[08:35:24] <ghz|afk> PaleoCrafter: well my wip magic mod has a "cushion" spell which you can throw downward to create a cloud of soft material that slows you down progressively
L521[08:35:28] <Unnoen> (as in mod backup - I do have backups on the server. That would be silly)
L522[08:35:40] <PaleoCrafter> heh
L523[08:35:48] <ghz|afk> but this is a rustic experience
L524[08:35:53] <ghz|afk> I don't want magic in it just yet
L525[08:35:55] <capitalthree> https://minecraft.curseforge.com/projects/btfu-continuous-rsync-incremental-backup
L526[08:36:07] <capitalthree> ahh well this backs up the entire server... mods, configs, world
L527[08:36:14] <capitalthree> and https://minecraft.curseforge.com/projects/lingering-loot
L528[08:36:27] <capitalthree> (also both are open source, one in scala, one in kotlin, if you are curious :P)
L529[08:36:34] <Unnoen> I have a cronjob that does a full backup every day and an incremental every 2 hours
L530[08:36:49] <capitalthree> BTFU takes incremental backups very 5 minutes and prunes them logarithmically
L531[08:36:57] <capitalthree> *every
L532[08:37:10] <capitalthree> and they're hardlinked snapshot-style backups
L533[08:37:12] <Unnoen> Might have a looky at it, thanks
L534[08:37:16] <capitalthree> welcome!
L535[08:37:29] <ghz|afk> PaleoCrafter: reading more into it, seems the parachute has steering, maybe that's a decent mod after all... installing it
L536[08:37:49] <capitalthree> I'm still confused how what ghz|afk described is different from elytra
L537[08:37:55] <PaleoCrafter> yep, just looking at the images suggests that at least a little effort has gone into it
L538[08:38:06] <Unh0ly_Tigg> I need to figure out a mod to allow me to locally save basic chunk data from multiplayer servers, so that I can personally save maps.
L539[08:38:36] <ghz|afk> [15:32] (capitalthree): we have elytra now :o
L540[08:38:41] <capitalthree> oooh I saw one once Unh0ly_Tigg
L541[08:38:42] <ghz|afk> elytra will be mine one day
L542[08:38:46] <ghz|afk> but this is a rustic playthrough
L543[08:38:51] <ghz|afk> I haven't killed a single enderman yet
L544[08:39:06] ⇦ Quits: armctec (~Thunderbi@177.140.144.214) (Client Quit)
L545[08:39:11] <capitalthree> ahhh so what you want is a *cheaper* parachute!
L546[08:39:28] <ghz|afk> it's not about price, it's about risk of death trying to acquire it
L547[08:39:52] <ghz|afk> the cost of entry for elytra is WAY too high for me ;P
L548[08:40:00] <capitalthree> aw I see
L549[08:40:12] <capitalthree> Unh0ly_Tigg: http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/2520465-1-12-1-11-1-10-1-8-9-world-downloader-mod-create
L550[08:40:18] <capitalthree> awesomely this is still being maintained it seems!
L551[08:40:20] <capitalthree> and open source :D
L552[08:40:36] <Unnoen> 4xstring, 3xwool in a recipe should be a basic parachute that just slows falling so you take no damage
L553[08:40:54] <Raycoms> https://pastebin.com/KXTJv0D1 why doesn't this here work if the player is offline?
L554[08:40:56] ⇨ Joins: z0ttel (~z0ttel@reuenthal.z0ttel.com)
L555[08:40:58] <Raycoms> It works great when he is online
L556[08:41:01] <Unnoen> different coloured wool then change the parachute colours. magic
L557[08:41:48] <Unh0ly_Tigg> capitalthree, while that mod looks like it does what I'd want it to, I don't want to do base edits, or use liteloader.
L558[08:42:02] <capitalthree> oh dang I didn't notice that part
L559[08:42:18] <capitalthree> fair enough Unh0ly_Tigg. the good news is it's open source so it might be possible to port to forge
L560[08:42:21] <capitalthree> I dunno
L561[08:42:31] <capitalthree> later I'll try it and see if it's hard to combine with forge
L562[08:43:35] ⇦ Quits: quadraxis (~quadraxis@cpc77293-basf12-2-0-cust699.12-3.cable.virginm.net) (Ping timeout: 186 seconds)
L563[08:45:40] ⇨ Joins: cpup (~cpup@32.218.118.182)
L564[08:46:30] ⇦ Quits: Unnoen (~Unnoen@60-242-93-115.static.tpgi.com.au) (Quit: Leaving)
L565[08:46:40] <ghz|afk> ehm
L566[08:46:45] <ghz|afk> this parachute mod is WAY too fancy
L567[08:46:53] <ghz|afk> also seems to have infinite flight XD
L568[08:47:00] <ghz|afk> press spacebar -> fly up
L569[08:47:16] ⇦ Quits: CoderPuppy (~cpup@32.218.118.29) (Ping timeout: 204 seconds)
L570[08:47:19] <Unh0ly_Tigg> lol, didn't disable it while in the air...
L571[08:47:38] <ghz|afk> tyhe mod supposedly has a concept of hot air currents
L572[08:47:40] <ghz|afk> when on top of lava
L573[08:47:44] ⇨ Joins: Unnoen (~Unnoen@60-242-93-115.static.tpgi.com.au)
L574[08:47:47] <ghz|afk> but it seems like everything is hot air or something
L575[08:49:43] ⇦ Quits: Unnoen (~Unnoen@60-242-93-115.static.tpgi.com.au) (Client Quit)
L576[08:49:51] <ghz|afk> it's not a bad mod
L577[08:49:55] <ghz|afk> but it feels completely out of place
L578[08:50:00] <Unh0ly_Tigg> so, custom block class, has enum property with name "type", game wants to use "variant" as property name... how do I fix this?
L579[08:50:05] <ghz|afk> it has a HUD with compass and stuff in it
L580[08:50:12] <Unh0ly_Tigg> and please don't say IStateMapper
L581[08:50:25] <ghz|afk> Unh0ly_Tigg: hm?
L582[08:51:16] <ghz|afk> can you show your property declaration?
L583[08:52:01] <Unh0ly_Tigg> https://gist.github.com/Unh0lyTigg/2427ae584f8bac4bd90d7a089bb15a2b
L584[08:52:27] <ghz|afk> and the statemapper is looking for variant?
L585[08:52:48] <Unh0ly_Tigg> let me run the client to get the error and stacktrace
L586[08:53:30] <Unh0ly_Tigg> ...
L587[08:53:39] <Unh0ly_Tigg> it's using the vanilla stone variant names...
L588[08:53:42] <Unh0ly_Tigg> not mine.
L589[08:53:45] <ghz|afk> uhm
L590[08:54:32] <Unh0ly_Tigg> Exception loading model for variant modid:stone#variant=stone for blockstate "modid:stone[variant=stone]"
L591[08:55:00] <Unh0ly_Tigg> there's also smooth_diorite, and whatnot
L592[08:55:10] *** TTFT|Away is now known as TTFTCUTS
L593[08:55:17] <PaleoCrafter> does it display correctly in the debug screen?
L594[08:55:27] <Unh0ly_Tigg> debug screen?
L595[08:55:57] <Unh0ly_Tigg> oh
L596[08:56:26] <Unh0ly_Tigg> well, I had this working in 1.11.2, but porting to 1.12 seemed to mess it up.
L597[08:57:20] <PaleoCrafter> you didn't accidentally import the Vanilla class, did you? :P
L598[08:57:49] <Unh0ly_Tigg> WHY HAST THOU FORSAKEN ME?! argh
L599[08:58:31] <Unh0ly_Tigg> umm, "net.minecraftforge.fml.common.network.handshake.FMLHandshakeMessage$ServerHello cannot be cast to net.minecraftforge.fml.common.network.handshake.FMLHandshakeMessage$ModList" well then
L600[08:59:42] <Unh0ly_Tigg> so, fixed the import.
L601[08:59:53] <Unh0ly_Tigg> no more missing variant errors
L602[09:00:18] <ghz|afk> lol
L603[09:01:06] <Unh0ly_Tigg> and the blocks aren't showing up in the creative tab I have set up...
L604[09:01:26] <ghz|afk> are you replacing vanilla stone?
L605[09:01:34] <Unh0ly_Tigg> nope
L606[09:01:45] <ghz|afk> ah so you just happen to have the same class name
L607[09:01:46] <ghz|afk> ;P
L608[09:01:52] <Unh0ly_Tigg> BlockStone
L609[09:01:55] <Unh0ly_Tigg> yeah...
L610[09:02:33] <Unh0ly_Tigg> the wonders of wildcard imports
L611[09:03:40] ⇨ Joins: Noppes (~Noppes@ip56530f2e.direct-adsl.nl)
L612[09:03:50] <ghz|afk> lol Shadow of Mordor is still 4eur, AND can be played free until the end of sunday
L613[09:04:01] <ghz|afk> they REALLY want people to try out the original game and but the new one
L614[09:04:02] <ghz|afk> XD
L615[09:04:21] <ghz|afk> and buy*
L616[09:05:21] <Unh0ly_Tigg> with @ObjectHolder isn't it supposed to be that if I use it on a type, it affects all uses of it on fields within that type to implicitly be the domain used in the type's annotation?
L617[09:05:51] <ghz|afk> wat?
L618[09:06:07] <ghz|afk> OH you mean if you put @ObjectHolder on a class ,it fills in the fields
L619[09:06:11] <ghz|afk> maybe, I haven ever used it that way
L620[09:06:18] <ghz|afk> maybe it broke with the registry rewrite
L621[09:06:45] ⇨ Joins: CoderPuppy (~cpup@32.218.119.15)
L622[09:06:56] ⇨ Joins: mcmaur (~mcmaur@93.37.55.197)
L623[09:07:19] <Raycoms> Is there a way to give a block a random recipe?
L624[09:08:06] <ghz|afk> random in what sense?
L625[09:08:21] <Unh0ly_Tigg> well, according to a simple log of the class name of the value of the block field, it is the right instance.
L626[09:08:33] <Unh0ly_Tigg> so, @ObjectHolder still works.
L627[09:08:48] <Raycoms> I have a set of textures, I want those textures to be used randomly everytime the state is placed
L628[09:09:58] <Unh0ly_Tigg> there was something about one of the options for grass, that allows the top face to be in different rotations, might be able to use that.
L629[09:10:09] <ghz|afk> Raycoms: ah so not random recipe, but random texture
L630[09:10:11] <ghz|afk> yes that's possible
L631[09:10:28] <Raycoms> oh sorry, I have to much things in my brain
L632[09:10:34] <Raycoms> yes random texture, my goodness
L633[09:10:39] <PaleoCrafter> just look at the grass blockstates definition, yeah
L634[09:10:40] <ghz|afk> I can't tell you exactly how, but I have seen it ;P
L635[09:11:58] <PaleoCrafter> you may provide multiple models per variant by just wrapping them in an array
L636[09:12:47] <Raycoms> at the grass blockstate or at the grass model? The blockstate is quite simple
L637[09:13:02] ⇦ Quits: cpup (~cpup@32.218.118.182) (Ping timeout: 383 seconds)
L638[09:15:09] <PaleoCrafter> it *is* simple :P
L639[09:16:37] <Raycoms> because the grass blockstate doesn't tell anything about the texture
L640[09:16:38] <Raycoms> or random
L641[09:17:12] <PaleoCrafter> see that "snowy=false" variant?
L642[09:17:43] <PaleoCrafter> it's an array of objects rather than just an object, the game will choose a definition randomly
L643[09:17:55] <PaleoCrafter> it doesn't do anything about the texture because it literally just rotates the model
L644[09:19:12] <Raycoms> so It randomly assigns the "snowy variant" to vary it?
L645[09:19:32] <Raycoms> So if I have 7 different textures, I need 7 variants?
L646[09:21:13] <Unh0ly_Tigg> when a variant (unique set of property values) is an array of model references, instead of just 1 reference, then it picks randomly.
L647[09:21:59] <Unh0ly_Tigg> I know why my block isn't showing up in inventory...
L648[09:22:26] <Unh0ly_Tigg> I never put @SubscribeEvent on the method I use to register items...
L649[09:22:47] <Raycoms> Hmm but I have to store those values in metadata if I want it to have the same texture on restart right?
L650[09:22:54] <Raycoms> So facing + 7 values doesn't fit in there
L651[09:23:10] <PaleoCrafter> no
L652[09:23:26] <PaleoCrafter> the random texture is based on the position in-world
L653[09:23:46] <PaleoCrafter> iirc
L654[09:24:59] <Raycoms> I'm so confused right now
L655[09:25:12] <PaleoCrafter> ...
L656[09:25:40] <Raycoms> Like if I just offer various variants it will choose any of them at random?
L657[09:25:46] <PaleoCrafter> yes
L658[09:28:11] ⇦ Quits: Ipsis (~Ipsis@82-69-71-184.dsl.in-addr.zen.co.uk) (Ping timeout: 200 seconds)
L659[09:28:46] <Raycoms> https://pastebin.com/vwWNzT8i that's what I have until now, if I want several textures for the blockrackfullsingle variant I have to make a model with differen texture for each?
L660[09:33:41] <Raycoms> I have this texture "2": "minecolonies:blocks/rack/shelfTexture1", (from 1-7) I want it random
L661[09:33:48] ⇦ Quits: portablejim (~portablej@n1-41-149-115.bla2.nsw.optusnet.com.au) (Remote host closed the connection)
L662[09:34:39] ⇨ Joins: howtonotwin (~howtonotw@173-219-99-170.com.sta.suddenlink.net)
L663[09:34:52] <howtonotwin> A fully defined variant in a list inherits from the defaults block
L664[09:35:49] <howtonotwin> Put anything common in the defaults and then do variants: { iwantthisrandom: [{ textures: {}}, { textures: {}}] }
L665[09:36:59] <howtonotwin> Oh sorry I misread... Just do variants: blockrackfullsingle: [{ model: xxx, textures: ... }, etc.]
L666[09:37:34] <Raycoms> I remove the texture part of the model then?
L667[09:37:38] <Raycoms> or does it override it?
L668[09:37:48] <howtonotwin> overrides
L669[09:38:21] <Raycoms> If the model is the same for all do I have to write model everytime anyway?
L670[09:38:32] <howtonotwin> yes
L671[09:39:24] <howtonotwin> Also I suggest using saner texture variable names
L672[09:39:48] <howtonotwin> "2" isn't very descriptive and someone is gonna get confused
L673[09:39:59] ⇦ Quits: mcmaur (~mcmaur@93.37.55.197) (Quit: Leaving)
L674[09:40:35] <Raycoms> Ah, yeah, I'll tell our modelerer =D
L675[09:41:00] <howtonotwin> You have a modelerer that makes modelers that makes models? Cool!
L676[09:41:38] <Raycoms> Its his Dad
L677[09:41:39] <Raycoms> =)
L678[09:41:42] <Raycoms> https://pastebin.com/jfuQR3qa
L679[09:41:43] <Raycoms> Like this?
L680[09:42:19] <howtonotwin> Almost
L681[09:42:26] <howtonotwin> No need to duplicate ALL of the textures
L682[09:42:41] <howtonotwin> Textures are overrides on an entry-by-entry basis
L683[09:42:43] <Raycoms> Yay that's what I wanted to ask
L684[09:43:08] <howtonotwin> If the inner model defines vars a and b and you want to override just b there is no need to redefine a
L685[09:44:20] <Raycoms> I thought I had to override the complete texture array
L686[09:44:34] <howtonotwin> That would be insane :P
L687[09:45:03] <Raycoms> Its still Mojang, isn't it?
L688[09:45:07] <howtonotwin> I honestly wouldn't have been surprised if Mojang DID do that
L689[09:46:00] <ghz|afk> well they did do that
L690[09:46:01] ⇦ Quits: Chais (~Chais@62.178.210.212) (Read error: Connection reset by peer)
L691[09:46:03] <ghz|afk> with transforms
L692[09:46:08] <ghz|afk> or actually
L693[09:46:13] <ghz|afk> transforms in blockstates are forge
L694[09:46:23] ⇦ Quits: Umbraco (~Umbraco@113x37x12x233.ap113.ftth.ucom.ne.jp) (Ping timeout: 383 seconds)
L695[09:46:25] <ghz|afk> but "display" in the model json
L696[09:46:42] <ghz|afk> I can't remember if it overrides all or just the defined ones
L697[09:47:46] <howtonotwin> Oh waaait you're doing variants { variant { xxx [{}] } }?
L698[09:47:52] <howtonotwin> I'm not sure if that will work
L699[09:48:00] <howtonotwin> You can try, but it might just explode
L700[09:48:22] <ghz|afk> it should work
L701[09:48:24] <Raycoms> its exploding
L702[09:48:25] <ghz|afk> it's in the spec ;p
L703[09:48:32] <howtonotwin> welp
L704[09:48:39] <ghz|afk> no wait
L705[09:48:44] <Raycoms> https://pastebin.com/xkpRWect
L706[09:48:44] <ghz|afk> it's int he spec for full variant strings
L707[09:48:46] <ghz|afk> not the split ones
L708[09:49:02] <howtonotwin> Oh dear...
L709[09:49:11] <howtonotwin> Your workload just got multiplied by 4
L710[09:49:28] <Raycoms> I don't like the sound of that
L711[09:49:41] <howtonotwin> You need to define full variants, including the rotation thingy
L712[09:49:46] <howtonotwin> Actually more like 6
L713[09:50:08] ⇨ Joins: Chais (~Chais@62.178.210.212)
L714[09:50:15] <Raycoms> You mean I have to put the rotation in every variant as well? =/
L715[09:50:45] <ghz|afk> it would appear you ahve to use vanilla-style variant strings, so yes
L716[09:51:04] <howtonotwin> So now you do { variants { "facing=x,variant=xxx": [{}, {}, ...], "facing=y,variant=xxx": [], ..., facing: { ... }, variant: { ... } } }
L717[09:51:55] <howtonotwin> You can still use the property-value mergy feature for the other variants, but you need to define full variant strings for variant=blockrackfull
L718[09:52:49] <howtonotwin> Can someone PR forge to make variants { variant { x [{}] } } work?
L719[09:53:33] ⇨ Joins: cpup (~cpup@32.218.119.122)
L720[09:54:32] <Raycoms> Ah man, you mean I need to make that whole thingy for each facing?
L721[09:54:37] <howtonotwin> yep
L722[09:54:49] <howtonotwin> You can probably script it together somehow
L723[09:55:40] ⇦ Quits: CoderPuppy (~cpup@32.218.119.15) (Ping timeout: 204 seconds)
L724[09:56:43] <Raycoms> They really employed their vista team in minecraft didn't they
L725[09:56:57] <howtonotwin> Totally
L726[09:57:30] <PaleoCrafter> howtonotwin, I don't think that's really feasible
L727[09:57:56] <howtonotwin> The PR?
L728[09:57:59] <PaleoCrafter> yep
L729[09:58:28] <PaleoCrafter> the random model stuff is its own model
L730[09:58:41] <ghz|afk> why would it not be? it just has to compute the different permutations
L731[09:58:54] <howtonotwin> ^
L732[09:58:59] <ghz|afk> "p1": { "v1": [ a,b,c ] } },
L733[09:59:08] <ghz|afk> "p2": { "v2": [ d,e,f ] } },
L734[09:59:11] <ghz|afk> would simply combine into
L735[09:59:29] <PaleoCrafter> fry, thoughts? :P
L736[09:59:35] <ghz|afk> "p1=v1,p2=v2": [ ad, ae, af, bd,be, bf, cd,ce,cf ]
L737[10:00:49] <Raycoms> su
L738[10:00:54] <PaleoCrafter> what about the "v2": { blargh } case? will it be added as an additional random part, will it be applied to all of the random ones, if the latter, what takes precedence?
L739[10:00:55] <howtonotwin> I think most of the block state deser stuff is private so it gives a lot of wiggle room anyway
L740[10:00:55] <Raycoms> Sorry
L741[10:01:05] <howtonotwin> All of the random
L742[10:01:16] <ghz|afk> PaleoCrafter: all of them.
L743[10:01:19] <ghz|afk> permutated together
L744[10:01:21] <howtonotwin> It's just another level to the Cartesian product forge already computes
L745[10:01:48] <ghz|afk> no precedences needed
L746[10:02:20] <PaleoCrafter> tbh I don't know how exactly the Forge blockstates work, but I'd assume there is *some* reason fry hasn't implemented this initially
L747[10:02:25] <ghz|afk> the combination of two property-value pairs is an array of random choices with the complete cartesian product of all the choices of each value
L748[10:02:33] <ghz|afk> probably because it's boring to code ;P
L749[10:03:38] <ghz|afk> are there weights on the random variants?
L750[10:03:42] <howtonotwin> No
L751[10:03:49] <PaleoCrafter> you can specify weights afaik
L752[10:03:58] <ghz|afk> wait no it would still work just fine, ad.weight = a.weight * d.weight
L753[10:04:08] <ghz|afk> the probability works out naturally
L754[10:04:11] <howtonotwin> Wait weights?
L755[10:04:17] * howtonotwin rereads spec
L756[10:04:29] <PaleoCrafter> http://minecraft.gamepedia.com/Model#Block_states :P
L757[10:04:32] <ghz|afk> https://gist.github.com/RainWarrior/0618131f51b8d37b80a6#file-forge-blockstate-v1-specs-L22
L758[10:04:33] <ghz|afk> yup
L759[10:04:35] <howtonotwin> woops
L760[10:04:45] <howtonotwin> I have a documentation PR to update
L761[10:05:15] <ghz|afk> either way, not an issue, total weight = product(all weights)
L762[10:07:55] <PaleoCrafter> something that isn't feasible that way would be using one property to define the models and another one for the textures (so like... you want to have 3 random models each with an associated texture which depends on a different property)
L763[10:08:24] <PaleoCrafter> that'd require [a,b,c] and [d,e,f] being interpreted as [a&d, b&e, c&f]
L764[10:09:04] <howtonotwin> If they're defined on different properties they should be independent
L765[10:09:09] <ghz|afk> yep
L766[10:09:33] <ghz|afk> if you have random arrays, each random array should be taken independently
L767[10:09:55] <ghz|afk> it wouldn't make sense to have all of the random arrays be paired item by item
L768[10:10:14] <PaleoCrafter> some people might interpret it like that :P
L769[10:10:32] <PaleoCrafter> imo the "just add the randoms together" makes less sense
L770[10:10:35] <howtonotwin> That's a documentation problem ?
L771[10:10:56] <PaleoCrafter> and matching it item by item might ultimately be much more useful
L772[10:11:18] <howtonotwin> It makes no sense to allow interdependencies between properties because that doesn't make semantic sense
L773[10:11:24] ⇨ Joins: Uristqwerty (~chatzilla@modemcable128.165-177-173.mc.videotron.ca)
L774[10:11:27] <howtonotwin> Oh wait no
L775[10:11:30] <howtonotwin> I see what you mean
L776[10:11:43] <PaleoCrafter> you basically already have "interdependencies" between properties anyway
L777[10:12:17] <howtonotwin> Well if that interpretation is "infeasible," as you said, then the only recourse is the product way
L778[10:12:25] <howtonotwin> So the point is moot
L779[10:12:59] <PaleoCrafter> I didn't think that much about it when I claimed it was infeasible, that was more of a gut feeling xD
L780[10:13:03] ⇦ Quits: Spottedleaf (~Spottedle@d75-155-207-106.bchsia.telus.net) (Killed (NickServ (GHOST command used by Spottedleaf_)))
L781[10:13:07] ⇨ Joins: Spottedleaf (~Spottedle@d75-155-207-106.bchsia.telus.net)
L782[10:13:39] ⇦ Quits: Noppes (~Noppes@ip56530f2e.direct-adsl.nl) (Ping timeout: 200 seconds)
L783[10:14:26] <howtonotwin> Principle of Least Surprise: Forge already does Cartesian products on the prop-val level, so it makes sense to do it too on the val-rand level. Anything else is just too complicated semantically and implementation-wise.
L784[10:14:27] <PaleoCrafter> I mean, another way (which might even be more inline with the cartesian product anyways) would be to create the product of all the properties
L785[10:14:47] <PaleoCrafter> oh wait
L786[10:14:55] <PaleoCrafter> damn, I read ghz' example wrong xD
L787[10:15:00] <howtonotwin> xD
L788[10:15:27] <PaleoCrafter> I read it as [a,b,c] and [d,e,f] being combined as [a,b,c,d,e,f] for some reason >.>
L789[10:15:52] <howtonotwin> That's ++, not *, silly :P
L790[10:16:09] <PaleoCrafter> yeah, which is why I thought it made less sense xD
L791[10:17:27] <ghz|afk> ^_^
L792[10:17:28] <Raycoms> Btw the exception I get primarily is: https://pastebin.com/k2DcUYuw
L793[10:18:05] <ghz|afk> yeah because forgeblockstatev1.java does not check if it's an array
L794[10:18:09] <ghz|afk> it expect and object and asks for one
L795[10:18:26] <howtonotwin> Yeah that's the "I'm a very simple format and cannot handle even a µg of complexity" error ?
L796[10:18:46] <PaleoCrafter> I guess this would warrant Forge blockstates v2, might as well add variables and stuff in there xD
L797[10:19:01] <howtonotwin> V2 would be too much I think
L798[10:19:05] <howtonotwin> It's not a major change
L799[10:19:19] <ghz|afk> it sounds perfectly incremental to me
L800[10:19:23] <ghz|afk> meaning it wouldn't break any existing file
L801[10:19:27] <ghz|afk> so it shouldn't need a v2
L802[10:19:31] <Raycoms> Okay, this means that our mod will add this feature only in 1.12 and only after someone made a pr for it =D
L803[10:19:32] <PaleoCrafter> that's more of a "I'm a very simple parser and can't provide you with more meaningful errors" error :P
L804[10:19:33] <howtonotwin> But that's a problem for the PR comments anyway :P
L805[10:19:48] <PaleoCrafter> I just want more features in the blockstates :P
L806[10:20:24] <PaleoCrafter> Raycoms, you can generate the full variants yourself :P
L807[10:21:12] <Raycoms> Too much work for that small feature and I have a masters thesis to deliver =D
L808[10:21:32] <Raycoms> But thanks for the help anyway
L809[10:21:33] <ghz|afk> tbh, IMO between forge blockstates, and the vanilla conditional states
L810[10:21:44] <ghz|afk> the thing should be changed to an actual scripting language
L811[10:21:45] <ghz|afk> ;p
L812[10:21:58] <howtonotwin> I mean why not
L813[10:22:09] <howtonotwin> We already have a scripting language compiler bundled with Forge ?
L814[10:22:20] <PaleoCrafter> just adopt that "Turing complete" JSON thingy :P
L815[10:22:33] <ghz|afk> no that's horribly, I was thinking more like what gradle uses ;P
L816[10:22:41] <ghz|afk> which can look a lot like data ;P
L817[10:22:41] <howtonotwin> Scalahas you beat with Turing complete types ?
L818[10:23:17] <PaleoCrafter> Forge ain't shipping Scala for much longer :P
L819[10:23:19] <howtonotwin> Also Turing complete JSON
L820[10:23:20] <howtonotwin> ?
L821[10:23:23] * howtonotwin is intrigued
L822[10:23:25] <PaleoCrafter> and it shouldn't have shipped the compiler in the first place
L823[10:23:33] <howtonotwin> And thank god for that :D
L824[10:24:06] <ghz|afk> https://medium.com/@wircho/rel-chapter-1-907ff616bf80
L825[10:24:07] <ghz|afk> this?
L826[10:24:08] <PaleoCrafter> https://github.com/MinecraftForge/MinecraftForge/pull/4029
L827[10:24:09] <PaleoCrafter> yep
L828[10:24:35] <PaleoCrafter> unfortunately I couldn't find an archived version of that post
L829[10:25:29] <howtonotwin> Oh well
L830[10:25:31] <ghz|afk> yeah me neither
L831[10:26:24] <ghz|afk> there's a comment there
L832[10:26:28] <ghz|afk> I wonder why they didn't use plain JSON arrays and a lisp interpreter, so much structure seems unnecessary.
L833[10:27:12] <howtonotwin> I wonder whether that JSON is more confusing that BCL
L834[10:27:16] <ghz|afk> https://gist.githubusercontent.com/wircho/c8f4f5b0ce440b8edd83/raw/8ef09440e96322e75220ff1470fbc4c65d76e6c2/cities_card
L835[10:27:18] <howtonotwin> *BLC
L836[10:27:20] <ghz|afk> apparently this is how it looked like
L837[10:28:08] <ghz|afk> https://gist.github.com/wircho/26cf0e20c63a40d2b41e
L838[10:28:22] <ghz|afk> https://gist.github.com/wircho/1e3a986e58fcee34014c
L839[10:28:22] <Ivorius> PaleoCrafter: Haha fucking 5.
L840[10:28:27] <ghz|afk> https://gist.github.com/wircho?page=2
L841[10:28:30] <Ivorius> That alone is worth it
L842[10:28:30] <ghz|afk> some other links there
L843[10:28:31] <ghz|afk> ;P
L844[10:28:35] <PaleoCrafter> What?
L845[10:28:47] <Ivorius> https://github.com/MinecraftForge/MinecraftForge/pull/4029#issuecomment-309415242
L846[10:28:54] <PaleoCrafter> oh yeah xD
L847[10:29:09] <PaleoCrafter> never ran into that myself, but I guess y'all noobs did :P
L848[10:29:48] <Ivorius> I'm not even gonna answer to that
L849[10:30:01] <ghz|afk> I have a couple times chosen the wrong item from the list when auto-importing Arrays
L850[10:44:50] <ghz|afk> so
L851[10:45:00] <ghz|afk> we were talkingabout turing-complete json earlier
L852[10:45:01] ⇨ Joins: Nedelosk (~Nedelosk@ip-178-203-0-245.hsi10.unitymediagroup.de)
L853[10:45:05] <ghz|afk> I wrote this...
L854[10:45:11] <ghz|afk> warning: it may break people's mind
L855[10:45:15] <ghz|afk> or cause eye bleeding
L856[10:45:16] <ghz|afk> https://gist.github.com/gigaherz/9fb7469dbb2b35ab90699d634781dd2b
L857[10:45:27] <howtonotwin> I understand continuations. My mind cannot be broken further ?
L858[10:45:28] <ghz|afk> it's not quite what I was thinking when I started
L859[10:46:17] <howtonotwin> I rescind that statement. Maybe you've found a new way to break minds.
L860[10:46:20] <ghz|afk> so basically instead of a programming language, I ended up with a JSON AST
L861[10:46:25] <howtonotwin> Also lol "assignation"
L862[10:46:31] <howtonotwin> I think that's "assignment" :P
L863[10:46:54] <ghz|afk> 2. the allocation or attribution of someone or something as belonging to something.
L864[10:46:54] <ghz|afk> "this document explains the principles governing the assignation of lexical units to lexemes"
L865[10:47:14] <howtonotwin> I stand corrected
L866[10:47:28] <ghz|afk> while assignment
L867[10:47:29] <ghz|afk> 2. the allocation of someone or something as belonging to a particular group or category.
L868[10:47:29] <ghz|afk> "the assignment of individuals to particular social positions"
L869[10:47:53] <ghz|afk> so dunno ;P
L870[10:48:13] <ghz|afk> to be honest, in spanish it's "assignación", hence me using that word ;P
L871[10:48:52] <ghz|afk> but yeah, json-encoded AST :/
L872[10:49:02] <howtonotwin> I wonder if you could write a Binary Lambda Calculus interpreter for this. That would be amazing in a terrible way.
L873[10:50:01] ⇦ Quits: Davnit (~Davnit@72.189.115.20) (Read error: Connection reset by peer)
L874[10:50:49] ⇨ Joins: Davnit (~Davnit@72-189-115-20.res.bhn.net)
L875[10:53:27] <ghz|afk> added a "MEMBERS" field, it didn't feel right to have the method directly next to the metadata
L876[11:00:49] ⇦ Quits: howtonotwin (~howtonotw@173-219-99-170.com.sta.suddenlink.net) (Quit: acpid: disrupt_irc: Commencing sleep...)
L877[11:01:57] <ghz|afk> btw
L878[11:01:57] <ghz|afk> [17:45] (howtonotwin): I understand continuations. My mind cannot be broken further ?
L879[11:02:30] <ghz|afk> I sortof "invented" continuations before I knew what they were
L880[11:02:49] ⇨ Joins: SotS (~sots@ip-84-119-140-62.unity-media.net)
L881[11:02:51] <ghz|afk> that is, they existed long before that
L882[11:03:00] ⇨ Joins: howtonotwin (~howtonotw@173.219.99.170)
L883[11:03:07] <ghz|afk> oh whoops
L884[11:03:14] <ghz|afk> [18:01] (ghz|afk): btw
L885[11:03:14] <ghz|afk> [18:01] (ghz|afk): [17:45] (howtonotwin): I understand continuations. My mind cannot be broken further ?
L886[11:03:14] <ghz|afk> [18:02] (ghz|afk): I sortof "invented" continuations before I knew what they were
L887[11:03:15] <ghz|afk> [18:02] (ghz|afk): that is, they existed long before that
L888[11:03:41] <ghz|afk> but I was learning something on either javascript or C# or whatever
L889[11:03:58] <howtonotwin> Gory details?
L890[11:04:02] <ghz|afk> and I was thinking about how it would be possible to keep the function on a variable and pass it around
L891[11:04:11] <SotS> Good evening everyone
L892[11:04:22] <ghz|afk> and use that as a way to continue executing things
L893[11:04:32] <howtonotwin> Hello o7
L894[11:05:15] <ghz|afk> I don't remember the exact context, but chances are the situation lend itself to that
L895[11:05:15] <ghz|afk> ;P
L896[11:05:25] <ghz|afk> anyhow, gotta go, need some groceries
L897[11:05:25] <howtonotwin> Did it explode?
L898[11:05:38] <howtonotwin> Bye!
L899[11:05:46] <ghz|afk> many times, but I eventually got things working
L900[11:05:51] <ghz|afk> or gave up
L901[11:05:52] <ghz|afk> can't remember
L902[11:05:54] <SotS> I just recently updated my project from 1.10 to 1.11 and now i have a lot of unmapped/obfuscurated methods in my environment. is there a way to fix that?
L903[11:06:05] * ghz|afk poofs
L904[11:06:48] <howtonotwin> SotS you need to update your mcp mappings
L905[11:07:08] <SotS> I merely updated the forge version in my buidlscript and re-ran setupdecomworkspace and eclipse commands
L906[11:07:20] <SotS> ah wich command would i use for that?
L907[11:07:38] <howtonotwin> There's an mcp_mappings line in the build file
L908[11:07:41] <howtonotwin> Update it
L909[11:07:46] <howtonotwin> !latest 1.11.2
L910[11:08:00] <howtonotwin> ... is the bot dead?
L911[11:08:44] <SotS> is there an easy way to find your latest mapping number?
L912[11:09:52] ⇦ Quits: howtonotwin (~howtonotw@173.219.99.170) (Killed (NickServ (GHOST command used by howtonotwin_!~howtonotw@2600:380:a07f:f46:8917:245f:a0f1:fb86)))
L913[11:09:52] <SotS> nvm found one
L914[11:10:06] <SotS> so i guess redo the setup commands eh?
L915[11:14:50] ⇦ Quits: An_Angry_Brit (~AngryBrit@90.207.39.6) (Ping timeout: 204 seconds)
L916[11:15:07] ⇨ Joins: howtonotwin (~howtonotw@2600:380:a07f:f46:8917:245f:a0f1:fb86)
L917[11:15:37] <howtonotwin> Yeah redo them
L918[11:16:05] <howtonotwin> Sorry, connection went haywire
L919[11:16:12] ⇨ Joins: An_Angry_Brit (~AngryBrit@90.197.166.16)
L920[11:18:17] ⇨ Joins: Noppes (~Noppes@ip56530f2e.direct-adsl.nl)
L921[11:18:41] ⇨ Joins: quadraxis (~quadraxis@cpc77293-basf12-2-0-cust699.12-3.cable.virginm.net)
L922[11:20:21] <SotS> huh
L923[11:20:30] <SotS> now im missing all the sources?
L924[11:20:33] <SotS> whut
L925[11:20:46] <howtonotwin> What indeed
L926[11:20:53] <howtonotwin> Try again and pray
L927[11:21:30] <SotS> trying again...
L928[11:22:10] <howtonotwin> Do you have something in the dependencies block by chance?
L929[11:22:22] <SotS> phew...fixed
L930[11:22:42] <howtonotwin> Oh, well there ya go
L931[11:22:50] <SotS> i do have JEI but it said before it was missing the forge binaries
L932[11:23:27] <howtonotwin> If it works then it works :P
L933[11:23:30] <howtonotwin> Good luck
L934[11:24:25] <SotS> and a shitload of unresolved names just popped up XD
L935[11:24:31] <SotS> thanks to ne new mappings
L936[11:24:35] ⇨ Joins: Meronat (uid190493@id-190493.highgate.irccloud.com)
L937[11:26:39] ⇦ Quits: Hubry (~Hubry@pip9.t19.ds.pwr.wroc.pl) (Quit: Leaving)
L938[11:26:44] ⇨ Joins: williewillus (~williewil@cpe-24-28-24-13.austin.res.rr.com)
L939[11:27:07] <williewillus> is RegistryEvent.Register<IRecipe> fired before or after your mod's jsons load?
L940[11:28:28] ⇦ Quits: Unh0ly_Tigg (~Robert@c-24-21-196-226.hsd1.or.comcast.net) (Quit: Leaving)
L941[11:31:01] <SotS> huh what is the newer equivalent of getChunk().getChunkCoordIntPair()
L942[11:31:18] <SotS> just chunk.xposition and chunk.zPosition?
L943[11:31:47] <howtonotwin> I'd guess so
L944[11:32:32] <SotS> ah getPos works too
L945[11:35:01] ⇦ Quits: howtonotwin (~howtonotw@2600:380:a07f:f46:8917:245f:a0f1:fb86) (Quit: Pop)
L946[11:37:49] ⇨ Joins: killjoy (~killjoy@cpe-174-109-175-105.nc.res.rr.com)
L947[11:39:10] ⇨ Joins: howtonotwin (~howtonotw@75-110-22-15.gvllcmtk01.res.dyn.suddenlink.net)
L948[11:39:48] <SotS> ok the registry is playing tricks on me...
L949[11:41:06] <SotS> it says im registering a name for an item twice...even tho the 2 items in question use a compleely different name each...
L950[11:41:22] ⇨ Joins: CoderPuppy (~cpup@32.218.119.122)
L951[11:44:41] <ghz|afk> SotS: setRegistryName?
L952[11:53:55] ⇦ Quits: airbreather (~airbreath@d149-67-99-43.nap.wideopenwest.com) (Read error: Connection reset by peer)
L953[11:56:42] ⇦ Quits: williewillus (~williewil@cpe-24-28-24-13.austin.res.rr.com) (Quit: Leaving)
L954[12:03:54] ⇦ Quits: Matthew (~matt@irc.prenger.co) (Quit: ZNC 1.6.5 - http://znc.in)
L955[12:06:32] ⇨ Joins: Matthew (~matt@irc.prenger.co)
L956[12:09:44] ⇨ Joins: airbreather (~airbreath@d149-67-99-43.nap.wideopenwest.com)
L957[12:15:00] ⇦ Quits: SotS (~sots@ip-84-119-140-62.unity-media.net) (Ping timeout: 204 seconds)
L958[12:19:55] <PaleoCrafter> dang, missed willie :/
L959[12:24:35] ⇨ Joins: ThatGuyThomas_ (webchat@76-247-2-26.lightspeed.hstntx.sbcglobal.net)
L960[12:28:01] ⇨ Joins: h5h77 (~h5h77@2a02:8108:4b40:907:922b:34ff:feae:b38b)
L961[12:28:07] *** Clank[Away] is now known as Clank
L962[12:28:30] <quadraxis> poke him on tf discord?
L963[12:28:53] <PaleoCrafter> TF?
L964[12:29:03] <quadraxis> twilight forest
L965[12:29:34] <PaleoCrafter> ah, thanks, will try
L966[12:48:45] ⇨ Joins: Hubry (~Hubry@pip9.t19.ds.pwr.wroc.pl)
L967[12:50:37] ⇦ Quits: ThatGuyThomas_ (webchat@76-247-2-26.lightspeed.hstntx.sbcglobal.net) (Quit: Web client closed)
L968[12:52:04] ⇦ Quits: ghz|afk (gigaherz@140.red-88-8-165.dynamicip.rima-tde.net) (Remote host closed the connection)
L969[12:52:14] ⇦ Quits: AbrarSyed (~AbrarSyed@ipv6.abrarsyed.com) (Quit: All things are trivial once you've mastered them.)
L970[12:52:15] ⇦ Quits: diesieben07 (~diesieben@abrarsyed.com) (Quit: ZNC - http://znc.in)
L971[12:52:15] ⇦ Quits: Kolatra (~Kolatra@abrarsyed.com) (Quit: ~If you keep my secret, this strawberry is yours~)
L972[12:52:15] ⇦ Quits: Wuppy (~wuppyZNC@abrarsyed.com) (Quit: ZNC - http://znc.in)
L973[12:52:15] ⇦ Quits: x3n0ph0b3 (~x3n0ph0b3@abrarsyed.com) (Quit: ZNC - http://znc.in)
L974[12:54:21] ⇨ Joins: Abrar|gone (~AbrarSyed@ipv6.abrarsyed.com)
L975[12:54:21] MineBot sets mode: +o on Abrar|gone
L976[12:54:49] *** Abrar|gone is now known as AbrarSyed
L977[12:54:54] ⇦ Quits: Raycoms (~Raycoms@2804:d57:1b08:b00:d2fa:5cd2:eba4:9a53) (Ping timeout: 204 seconds)
L978[12:55:12] ⇨ Joins: diesieben|away (~diesieben@abrarsyed.com)
L979[12:55:27] ⇨ Joins: gigaherz (gigaherz@140.red-88-8-165.dynamicip.rima-tde.net)
L980[12:55:39] *** diesieben|away is now known as diesieben07
L981[12:55:52] ⇨ Joins: Wuppy (~wuppyZNC@abrarsyed.com)
L982[12:56:13] ⇨ Joins: x3n0ph0b3 (~x3n0ph0b3@abrarsyed.com)
L983[13:03:25] ⇦ Quits: Cast0077 (~Cast0077@24-151-30-78.dhcp.nwtn.ct.charter.com) (Quit: Poof)
L984[13:29:22] ⇨ Joins: Ipsis (~Ipsis@82-69-71-184.dsl.in-addr.zen.co.uk)
L985[13:35:38] ⇨ Joins: PieGuy128 (~PieGuy128@mtrlpq5031w-lp130-01-76-65-40-109.dsl.bell.ca)
L986[13:46:24] ⇨ Joins: Doty1154 (~Doty1154@2601:648:8000:134f:5dda:d22b:b64e:9f3a)
L987[13:47:47] ⇨ Joins: MonkeyTyrant (~MonkeyTyr@blk-212-75-47.eastlink.ca)
L988[13:47:55] ⇦ Quits: MonkeyTyrant (~MonkeyTyr@blk-212-75-47.eastlink.ca) (Client Quit)
L989[13:49:30] ⇦ Quits: quadraxis (~quadraxis@cpc77293-basf12-2-0-cust699.12-3.cable.virginm.net) (Ping timeout: 383 seconds)
L990[13:59:43] ⇦ Quits: howtonotwin (~howtonotw@75-110-22-15.gvllcmtk01.res.dyn.suddenlink.net) (Quit: acpid: disrupt_irc: Commencing sleep...)
L991[14:08:42] ⇨ Joins: howtonotwin (~howtonotw@75-110-22-15.gvllcmtk01.res.dyn.suddenlink.net)
L992[14:24:51] <howtonotwin> /quit Pop!
L993[14:24:57] <howtonotwin> ...
L994[14:25:00] ⇦ Quits: howtonotwin (~howtonotw@75-110-22-15.gvllcmtk01.res.dyn.suddenlink.net) (Quit: Pop!)
L995[14:27:45] <gigaherz> fail ^
L996[14:29:39] ⇦ Quits: h5h77 (~h5h77@2a02:8108:4b40:907:922b:34ff:feae:b38b) (Quit: Leaving)
L997[14:46:08] <LexMobile> !gc GuiRecipeBook
L998[14:49:23] <LexMobile> !gm func_193944_d
L999[14:49:33] <LexMobile> !gm func_194210_a
L1000[14:49:46] ⇦ Quits: Noppes (~Noppes@ip56530f2e.direct-adsl.nl) (Ping timeout: 201 seconds)
L1001[14:50:05] ⇦ Quits: Upthorn (~ogmar@108-204-125-173.lightspeed.frokca.sbcglobal.net) (Read error: Connection reset by peer)
L1002[14:50:19] ⇨ Joins: Upthorn (~ogmar@108-204-125-173.lightspeed.frokca.sbcglobal.net)
L1003[15:02:38] ⇨ Joins: Noppes (~Noppes@ip56530f2e.direct-adsl.nl)
L1004[15:11:00] ⇨ Joins: Gil (uid147942@id-147942.hathersage.irccloud.com)
L1005[15:12:42] *** amadornes[OFF] is now known as amadornes
L1006[15:18:03] ⇨ Joins: KGS (~KGS@h-158-174-9-249.NA.cust.bahnhof.se)
L1007[15:21:12] ⇦ Quits: CoderPuppy (~cpup@32.218.119.122) (Ping timeout: 204 seconds)
L1008[15:21:50] ⇨ Joins: CoderPuppy (~cpup@32.218.119.122)
L1009[15:24:02] ⇦ Quits: Ipsis (~Ipsis@82-69-71-184.dsl.in-addr.zen.co.uk) (Quit: Leaving)
L1010[15:26:55] ⇨ Joins: Ipsis (~Ipsis@82-69-71-184.dsl.in-addr.zen.co.uk)
L1011[15:27:47] ⇦ Quits: Meronat (uid190493@id-190493.highgate.irccloud.com) (Quit: Connection closed for inactivity)
L1012[15:33:11] ⇦ Quits: Ipsis (~Ipsis@82-69-71-184.dsl.in-addr.zen.co.uk) (Ping timeout: 186 seconds)
L1013[15:45:02] ⇨ Joins: MonkeyTyrant (~MonkeyTyr@blk-212-75-47.eastlink.ca)
L1014[16:04:07] ⇦ Quits: Willis (Willis@107.161.160.241) (Ping timeout: 186 seconds)
L1015[16:10:08] ⇨ Joins: Meronat (uid190493@id-190493.highgate.irccloud.com)
L1016[16:18:22] ⇦ Quits: bilde2910 (bilde2910@178.51-174-170.customer.lyse.net) (Ping timeout: 383 seconds)
L1017[16:19:16] ⇨ Joins: howtonotwin (~howtonotw@75-110-22-15.gvllcmtk01.res.dyn.suddenlink.net)
L1018[16:19:24] ⇨ Joins: bilde2910 (bilde2910@178.51-174-170.customer.lyse.net)
L1019[16:20:05] <howtonotwin> How do I get Forge to find the test mods on IDEA?
L1020[16:20:17] <howtonotwin> I have the run config set to use Forge_test
L1021[16:20:34] <PaleoCrafter> https://www.youtube.com/watch?v=yanCpy8p2ZE
L1022[16:20:35] <howtonotwin> And the module has a dep on Forge_main + contains all the test sources
L1023[16:20:44] <PaleoCrafter> https://www.youtube.com/watch?v=pLWQk6ed56Q actually
L1024[16:20:59] <howtonotwin> thx
L1025[16:30:54] ⇦ Quits: An_Angry_Brit (~AngryBrit@90.197.166.16) (Ping timeout: 201 seconds)
L1026[16:32:48] ⇨ Joins: An_Angry_Brit (~AngryBrit@90.194.221.185)
L1027[16:39:44] ⇦ Quits: Hgrebnednav_ (~Hgrebnedn@ptr-908g3orwgp3d6kwd1cf.18120a2.ip6.access.telenet.be) (Ping timeout: 204 seconds)
L1028[16:43:20] ⇦ Quits: Noppes (~Noppes@ip56530f2e.direct-adsl.nl) (Read error: Connection reset by peer)
L1029[17:04:26] ⇦ Quits: CoderPuppy (~cpup@32.218.119.122) (Ping timeout: 204 seconds)
L1030[17:10:55] ⇨ Joins: CoderPuppy (~cpup@32.218.119.122)
L1031[17:15:45] <howtonotwin> Which Pair is the Pair to use?
L1032[17:15:47] ⇨ Joins: Kolatra (~Kolatra@abrarsyed.com)
L1033[17:16:54] <PaleoCrafter> I think most stuff uses the Guava one
L1034[17:17:35] <howtonotwin> err
L1035[17:17:40] <howtonotwin> I don't see a guava one
L1036[17:17:51] <PaleoCrafter> huh... I thought that was a thing xd
L1037[17:18:19] <PaleoCrafter> oh, the apache commons one
L1038[17:18:20] <kashike> apache commons lang3
L1039[17:18:27] <howtonotwin> Alright, thanks
L1040[17:18:35] <kashike> alternatively
L1041[17:18:41] <kashike> Map.Entry with AbstractMap.SimpleEntry
L1042[17:19:17] <c64cosmin> o/ hello people, can someone explain what is the purpose of the name, suffix parameters in DimensionType.register(name, suffix, id, class, keepLoaded);
L1043[17:19:42] <howtonotwin> Also, can I use parallelStream or should I just stick to the plain one
L1044[17:19:53] <howtonotwin> This is in forge code btw
L1045[17:20:14] ⇦ Quits: CoderPuppy (~cpup@32.218.119.122) (Ping timeout: 201 seconds)
L1046[17:20:49] <kashike> c64cosmin: name is a friendly name (generally all lowercase)
L1047[17:20:54] <kashike> suffix is used for the villages file
L1048[17:21:00] <kashike> villages_{suffix}
L1049[17:23:27] <c64cosmin> what is usually stored in that file?
L1050[17:24:16] <kashike> https://minecraft.gamepedia.com/Villages.dat_format
L1051[17:28:10] <c64cosmin> so it serves the purpose of giving that file name a suffix to allow players to add villages in any other dimension
L1052[17:28:22] <c64cosmin> and the name seems to be used only in the System.out.println
L1053[17:29:02] <c64cosmin> thanks @kashike
L1054[17:29:48] <kashike> name is used by net.minecraft.world.DimensionType#byName as well
L1055[17:30:03] <kashike> which is used by advancements
L1056[17:32:56] <c64cosmin> missed that one
L1057[17:35:05] ⇦ Quits: bilde2910 (bilde2910@178.51-174-170.customer.lyse.net) (Ping timeout: 190 seconds)
L1058[17:36:50] ⇨ Joins: Umbraco (~Umbraco@113x37x12x233.ap113.ftth.ucom.ne.jp)
L1059[17:37:00] ⇨ Joins: bilde2910 (bilde2910@178.51-174-170.customer.lyse.net)
L1060[17:45:05] ⇨ Joins: KnightMiner (~KnightMin@adsl-75-5-73-47.dsl.emhril.sbcglobal.net)
L1061[17:47:26] ⇨ Joins: sinkillerj (~sinkiller@nc-67-232-12-107.dhcp.embarqhsd.net)
L1062[17:55:07] ⇦ Quits: bilde2910 (bilde2910@178.51-174-170.customer.lyse.net) (Ping timeout: 204 seconds)
L1063[17:56:32] ⇨ Joins: bilde2910 (bilde2910@178.51-174-170.customer.lyse.net)
L1064[17:59:01] ⇨ Joins: Shambling (~Shambling@97-89-242-134.static.plbg.ny.charter.com)
L1065[18:08:58] ⇨ Joins: CoderPuppy (~cpup@32.218.119.122)
L1066[18:10:21] ⇦ Quits: c64cosmin (kiwiirc@79.114.70.53) (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client)
L1067[18:17:50] *** PaleoCrafter is now known as PaleOff
L1068[18:18:17] ⇦ Quits: MonkeyTyrant (~MonkeyTyr@blk-212-75-47.eastlink.ca) (Quit: Leaving)
L1069[18:23:47] ⇨ Joins: cpup- (~cpup@32.218.114.199)
L1070[18:25:30] ⇦ Quits: cpup (~cpup@32.218.119.122) (Ping timeout: 204 seconds)
L1071[18:26:08] ⇦ Quits: CoderPuppy (~cpup@32.218.119.122) (Ping timeout: 204 seconds)
L1072[18:27:06] ⇨ Joins: cpup (~cpup@32.218.114.199)
L1073[18:32:52] ⇦ Quits: Hubry (~Hubry@pip9.t19.ds.pwr.wroc.pl) (Quit: I should be going to bed I think...)
L1074[18:39:28] ⇦ Quits: Shambling (~Shambling@97-89-242-134.static.plbg.ny.charter.com) (Quit: Leaving)
L1075[18:39:34] ⇨ Joins: CoderPuppy (~cpup@32.218.114.210)
L1076[18:39:44] ⇨ Joins: cpup| (~cpup@32.218.114.210)
L1077[18:43:14] ⇦ Quits: cpup- (~cpup@32.218.114.199) (Ping timeout: 204 seconds)
L1078[18:45:18] ⇦ Quits: cpup (~cpup@32.218.114.199) (Ping timeout: 383 seconds)
L1079[18:48:07] ⇦ Quits: Nedelosk (~Nedelosk@ip-178-203-0-245.hsi10.unitymediagroup.de) (Read error: Connection reset by peer)
L1080[18:53:20] *** amadornes is now known as amadornes[OFF]
L1081[18:57:15] ⇦ Quits: CoderPuppy (~cpup@32.218.114.210) (Ping timeout: 200 seconds)
L1082[18:59:28] ⇨ Joins: immibis (~chatzilla@122-59-207-252.jetstream.xtra.co.nz)
L1083[18:59:48] ⇦ Quits: cpup| (~cpup@32.218.114.210) (Ping timeout: 383 seconds)
L1084[19:02:48] ⇨ Joins: cpup (~cpup@32.218.114.218)
L1085[19:03:41] ⇨ Joins: bms_ (~bms_@cpe-76-188-199-137.neo.res.rr.com)
L1086[19:03:52] <bms_> Hi.
L1087[19:06:00] *** MrKickkiller is now known as MrKick|Away
L1088[19:06:47] ⇨ Joins: CoderPuppy (~cpup@32.218.114.218)
L1089[19:07:46] <capitalthree> hi!
L1090[19:08:54] <bms_> How are you?
L1091[19:09:39] ⇨ Joins: GenerousGuava (~GenerousG@p4FDCCA55.dip0.t-ipconnect.de)
L1092[19:13:11] <capitalthree> great! I released version 3.0 of my mod yesterday
L1093[19:13:18] <capitalthree> how are you?
L1094[19:17:08] <bms_> Nice. I’m doing fine. Working on an entity for mine. Was fine until I tried applying capabilities.
L1095[19:19:39] <capitalthree> ah, I haven't really learned those yet
L1096[19:19:40] <capitalthree> what happened?
L1097[19:20:23] <GenerousGuava> capabilities really arent that hard once you understand what they are
L1098[19:24:56] ⇦ Quits: CoderPuppy (~cpup@32.218.114.218) (Ping timeout: 383 seconds)
L1099[19:25:42] ⇨ Joins: CoderPuppy (~cpup@32.218.114.218)
L1100[19:26:51] ⇦ Quits: PieGuy128 (~PieGuy128@mtrlpq5031w-lp130-01-76-65-40-109.dsl.bell.ca) (Quit: Leaving)
L1101[19:29:05] <bms_> Well, I have everything written (presumably) correctly for 1.12. JSON recipes and the registry system both work. The entity even worked before I gave it the capability. Basically, there’s a console log of errors everytime anything attempts to spawn it. It doesn’t crash though, it simply doesn’t spawn. My capability is supposed to store the max health value, plus a few other statistics about the entity. I need these to be variable
L1102[19:29:05] <bms_> I set them in a custom constructor, but when I go to set the health I get the error. I’ll pull up a report.
L1103[19:32:09] <GenerousGuava> im trying to do some performance optimisation on my multiblock cause it's causing more lag than it probably should.
L1104[19:32:42] <GenerousGuava> i also just noticed a huge issue with my tank level renderer, it slows minecraft down more and more until I close the screen. need to figure that one out
L1105[19:35:32] <bms_> Report: https://pastebin.com/mXaHXsNw Entity Code: https://github.com/BenjaminSutter/genera/tree/master/src/main/java/net/bms/genera/entities/passive Capability Code: https://github.com/BenjaminSutter/genera/tree/master/src/main/java/net/bms/genera/capability
L1106[19:35:53] <GenerousGuava> ok part of it is the tanklevel itself but it seems the drawHoveringText() method slows it down to an absolute crawl
L1107[19:36:08] <bms_> I think it must be some small mistake or misunderstanding in my capability code, but I can’t find anything that stands out to me.
L1108[19:36:47] <GenerousGuava> take a look at taht FPS graph lol http://imgur.com/a/aH3ma
L1109[19:36:49] <GenerousGuava> not so ideal
L1110[19:36:56] <GenerousGuava> ill take a look at your logs
L1111[19:37:11] <bms_> Oh dear.
L1112[19:37:14] <bms_> Thank you!
L1113[19:40:50] <GenerousGuava> well for one you need to default to super in your getCapability and hasCapability methods.
L1114[19:41:06] <bms_> Alright, I can fix that.
L1115[19:41:38] <howtonotwin> Hey do any of you know of a mod that has a lot of complicated blockstate files?
L1116[19:41:40] <GenerousGuava> you also normally want to put hasCapability and getCapability in your TileEntity
L1117[19:42:18] <bms_> Okay.
L1118[19:42:53] <GenerousGuava> ive implemented a capability (in kotlin but should be fairly easy to understand for a java dev as well) take a look at it here: https://github.com/wingertge/FruityLib/blob/1.11/src/main/kotlin/org/generousg/fruitylib/liquids/IExtendedFluidHandler.kt
L1119[19:43:02] <bms_> Thanks!
L1120[19:43:22] ⇦ Quits: bms_ (~bms_@cpe-76-188-199-137.neo.res.rr.com) (Quit: bms_)
L1121[19:45:48] <GenerousGuava> howtonotwin well I have pretty long BlockStates not sure if they're all that complicated though. Example https://github.com/wingertge/KaidenCraft/blob/1.11/src/main/resources/assets/kaidencraft/blockstates/boilertank.json
L1122[19:46:22] <howtonotwin> Chances are there's a few interesting ones in there ?
L1123[19:46:37] <GenerousGuava> if you want to know about all the things you can do in forge blockstates (aka stuff thats not in vanilla blockstates) heres a reference: https://gist.github.com/RainWarrior/0618131f51b8d37b80a6
L1124[19:46:41] <howtonotwin> Can I use that mod to test out my PR for forge?
L1125[19:46:57] <GenerousGuava> PR?
L1126[19:48:42] <howtonotwin> I changed something about how block states deserialize
L1127[19:48:52] <howtonotwin> Want to make sure it doesn't break backcompat
L1128[19:49:33] <howtonotwin> I want to allow variants { prop { value [{ ... }, { ... }, ...] } } to work
L1129[19:50:17] <GenerousGuava> right, im just using rotation and model changes though, no advanced transforms or anything
L1130[19:50:26] <GenerousGuava> and custom properties
L1131[19:50:59] <howtonotwin> Do you have a submodes anywhere?
L1132[19:51:04] <howtonotwin> *submodel
L1133[19:51:10] <howtonotwin> I'm extra worried about those
L1134[19:51:28] <GenerousGuava> unfortunately not, but should be able to just use something like the vanilla fence for that
L1135[19:52:07] <howtonotwin> Those aren't submodels ? But good idea, I'll just rewrite the blockstate for it and see if it works
L1136[19:52:24] <GenerousGuava> oh yea thats multipart models :P
L1137[19:54:36] <GenerousGuava> do you happen to know if submodels work with OBJs btw? i was trying to find info on that but no luck and I don't really want to dig through the entire blockstate code for it :P
L1138[19:55:48] <GenerousGuava> it would really help lower the amount of obj files I need to have lying around
L1139[20:05:16] <howtonotwin> blockstates care nothing for the contained models
L1140[20:05:22] <howtonotwin> GenerousGuava, ^
L1141[20:05:52] <howtonotwin> They all behave same because blockstates are meant to be generic
L1142[20:06:09] <howtonotwin> Therefore, submodes will work because there is no reason for it not to
L1143[20:06:13] <howtonotwin> *submodels
L1144[20:06:16] <GenerousGuava> so the parser just redirects it to groups then I'm guessing?
L1145[20:07:10] <GenerousGuava> it would save me from having to use 6-16 objs for each of my multiblocks :P
L1146[20:07:39] <howtonotwin> no that's not how it works
L1147[20:07:52] <howtonotwin> All models are internally represented as implementors of IModel
L1148[20:08:06] <howtonotwin> All IModels can be baked into IBakedModels
L1149[20:08:49] <GenerousGuava> i see
L1150[20:08:54] <howtonotwin> The blockstates deser into IModels that load the other IModels and bake them (all completely generic) and then return the geometry of those models when asked
L1151[20:12:09] <GenerousGuava> so how does it get the submodels off the baked model?
L1152[20:13:57] <howtonotwin> The blockstate IModel loads the submodel IModel. When the BS IModel is baked it bakes all the SM IModels with it. Those SM IBakedModels are responsible for providing their own geometry. The BS IBakedModel just takes that geometry, transforms it as required, and throws it in with the rest of the quads being readied for render.
L1153[20:16:09] <howtonotwin> Here: https://github.com/howtonotwin/MCForgeDocumentation/blob/models/docs/models/advanced/introduction.md
L1154[20:17:39] ⇨ Joins: xampp (~xampp@c-68-41-245-181.hsd1.mi.comcast.net)
L1155[20:18:20] <GenerousGuava> ooh neat, that kind of in depth explanation was exactly what i was looking for and couldnt find
L1156[20:18:21] <GenerousGuava> thanks
L1157[20:19:19] <howtonotwin> np
L1158[20:21:10] <GenerousGuava> ill have to read it later though, right now i need to figure out why my fluid content tooltip causes minecraft to drop to about half fps :P
L1159[20:22:38] <howtonotwin> At least you can still measure it in fps and don't need to use spf ;P
L1160[20:23:04] <GenerousGuava> :D
L1161[20:23:29] <GenerousGuava> this is the first time im using jvisualvm
L1162[20:23:33] <GenerousGuava> pretty damn useful tool
L1163[20:27:35] ⇦ Quits: KGS (~KGS@h-158-174-9-249.NA.cust.bahnhof.se) (Ping timeout: 186 seconds)
L1164[20:32:31] <GenerousGuava> hmm the majority of the thread time from my mod is from this function: https://pastebin.com/nMgbZEJU
L1165[20:32:43] <GenerousGuava> is drawGradientRect really expensive?
L1166[20:33:37] <howtonotwin> I have absolutely no idea
L1167[20:34:30] <howtonotwin> But I do admire your accurate naming of those constants
L1168[20:35:28] <GenerousGuava> xD The code is just copied off OpenModsLib :P I plan on changing it to my own similar rendering once I get close to a release
L1169[20:35:30] <capitalthree> XD
L1170[20:36:26] <kashike> so we've got GenerousGuava
L1171[20:36:32] <kashike> now we need GenerousApacheCommons
L1172[20:36:45] <GenerousGuava> :D
L1173[20:38:14] <GenerousGuava> btw its a shame OpenModsLib is abandoned now. I did mostly recreate it in my own FruityLib
L1174[20:38:21] <GenerousGuava> that library was fucking gorgeous
L1175[20:38:48] <kashike> link?
L1176[20:38:54] <GenerousGuava> mostly in the gui system and the config/registration system
L1177[20:39:56] <GenerousGuava> https://github.com/wingertge/FruityLib thats my updated version its still WIP but the main features are there this is the original https://github.com/OpenMods/OpenModsLib/
L1178[20:40:20] ⇦ Quits: MWisBest (~MWisBest@140.74-213-213.cellcom.com) (Ping timeout: 383 seconds)
L1179[20:41:01] <GenerousGuava> this is how I add blocks/items and config options: https://pastebin.com/et4majJJ
L1180[20:41:56] <kashike> neat
L1181[20:43:15] <howtonotwin> I'm always torn between the neatness of annotations and all the reflective hackiness that's behind them :P
L1182[20:43:44] <GenerousGuava> yea the library code that makes all that work is some really hacky reflection :P
L1183[20:43:58] <howtonotwin> Of course, I use Scala's mixin traits for my blocks and items and THOSE things use invokespecial so I can't talk :P
L1184[20:44:22] <GenerousGuava> but that's something you need to do once and then you can use really neat abstracted stuff in your business logic
L1185[20:46:10] <GenerousGuava> the sync system works in a similar way, you just need to instantiate your syncable values with a wrapper class and call sync every once in a while
L1186[20:46:27] <GenerousGuava> the rest is handled in the framework classes
L1187[20:46:47] <capitalthree> howtonotwin: what mods do you do in scala?
L1188[20:47:21] <capitalthree> my scala mod's not a content mod so I haven't messed with that stuff
L1189[20:48:25] <howtonotwin> I haven't released it yet :P
L1190[20:49:29] <howtonotwin> The way I'm doing registration is that the parts of an item/block someone may want to inherit gets put into a trait, and then I do object BlockXXX extends BlockMod with SomeBehavior { mostly rendering stuff specific to the block }
L1191[20:49:47] <GenerousGuava> ive never messed with scala :P
L1192[20:50:25] <howtonotwin> And then in my main mod class I pass a list of blocks into the register event and I use some magic to get the models registered automatically
L1193[20:50:41] <GenerousGuava> seems like you could do something similar with forge capabilities
L1194[20:51:13] <howtonotwin> GenerousGuava, if you're happy with Kotlin, stay there ? Scala is far from a pretty language, because it's been revised so much, but it's incredibly nice if you know how to work it
L1195[20:51:30] <howtonotwin> Say, does kotlin have something like scale's Dynamic?
L1196[20:51:46] <capitalthree> howtonotwin: yeah that seems pretty neat
L1197[20:51:46] <howtonotwin> Basically it's methodMissing but statically typed
L1198[20:51:50] <capitalthree> the usual boilerplate for doing that is annoying.
L1199[20:52:12] <howtonotwin> I have a system to use it for NBT but it's been foiled by a compiler bug :P
L1200[20:52:18] <GenerousGuava> im not quite sure what you mean by methodMissing
L1201[20:52:25] <capitalthree> I don't even know about scala's dynamic o_o
L1202[20:52:35] <howtonotwin> Ok so let x: SomeType with Dynamic
L1203[20:52:44] <capitalthree> but personally I'm a huge fan of both kotlin and scala and will encourage anyone using java to check out either one
L1204[20:52:49] <howtonotwin> Now do x.blah
L1205[20:52:53] <capitalthree> as for switching between scala and kotlin I don't have a strong opinion, I have a mod in each
L1206[20:53:07] <capitalthree> I think scala is better overall and kotlin is better at working seamlessly alongside java code
L1207[20:53:18] <howtonotwin> If x doesn't have a blah field, then scalac implicitly makes that into x.selectDynamic("blah")
L1208[20:53:42] <GenerousGuava> i see
L1209[20:53:53] <GenerousGuava> kind of like C# dynamic then
L1210[20:53:55] <capitalthree> oh interesting. no I don't think so. also that uses jvm reflection right?
L1211[20:54:04] <howtonotwin> And also x.blah("foo") ~~> x.applyDynamic("blah")("foo") and x.blah = foo ~~> x.updateDynamic("blah")(foo)
L1212[20:54:06] <howtonotwin> No to both
L1213[20:54:06] <capitalthree> I hope you're only doing stuff like that at init and not continuously
L1214[20:54:30] <howtonotwin> It's statically typed, it's just a compile time code rewrite
L1215[20:54:42] <howtonotwin> It's structural types that incur the reflection
L1216[20:54:44] <capitalthree> oh? so it can make your compile fail?
L1217[20:54:48] <howtonotwin> Yes
L1218[20:55:16] <capitalthree> I am very confused right now xD
L1219[20:55:22] <howtonotwin> If you have applyDynamic(name: String)(arg: Int) but do x.blah("foo") it'll yell at you for String when expected Int
L1220[20:55:23] <capitalthree> I'm used to writing everything in a very static way
L1221[20:55:31] <howtonotwin> It IS static ?
L1222[20:55:33] <GenerousGuava> seems kind of pointless to me but I guess I can see it used when dealing with NBT
L1223[20:55:36] <howtonotwin> It's just like implicits
L1224[20:55:56] <howtonotwin> You don't write the implicit args, but the compiler sticks them in if it notices it
L1225[20:56:07] <capitalthree> but if "blah" doesn't exist, what happens?
L1226[20:56:26] <GenerousGuava> wait so its aliases basically?
L1227[20:56:29] <capitalthree> or wait, is applyDynamic just a function you define that can do whatever with that string?
L1228[20:56:32] <howtonotwin> yes
L1229[20:56:35] <capitalthree> ok I'm sorry I get it now
L1230[20:56:48] <capitalthree> so it's only slow if you take that string and then do reflection yourself or something
L1231[20:56:50] <GenerousGuava> well kotlin has operator overloads that can do pretty much the same things
L1232[20:56:58] <howtonotwin> capitalthree, yeah
L1233[20:57:12] <capitalthree> I gotta be honest, I find that kinda cheesy and odd
L1234[20:57:27] <GenerousGuava> I can see some cases where it can do more than kotlin though
L1235[20:57:28] <capitalthree> I mean in kotlin I use extension functions but at least they're still actually functions with fixed names
L1236[20:57:44] <capitalthree> no question it can do more than kotlin
L1237[20:58:09] <GenerousGuava> it does seem a bit odd to me :P
L1238[20:58:11] <capitalthree> I'd have to play around with that though. it seems like it would confuse me
L1239[20:58:14] <howtonotwin> It's use is locked down a lot, so it can't bork anything it isn't meant to. It's really just nice sugar for things like NBT :P
L1240[20:58:16] <capitalthree> but maybe not when I get used to it
L1241[20:58:28] <howtonotwin> Here: http://www.scala-lang.org/api/current/scala/Dynamic.html
L1242[20:58:32] <capitalthree> it seems like the biggest risk is accidentally making a call to a function that *is* defined
L1243[20:58:50] <GenerousGuava> I'll just stick with Kotlin though personally
L1244[20:58:53] <GenerousGuava> it just looks so neat
L1245[20:59:03] <capitalthree> GenerousGuava: personally I think it's a better fit for minecraft modding
L1246[20:59:14] <capitalthree> I have found the null safety stuff in kotlin to make code interacting with minecraft's engine a LOT shorter
L1247[20:59:34] <capitalthree> but if I build a webapp I go straight to scala
L1248[20:59:35] <GenerousGuava> and I used to code mostly in C# so I'm used to a lot of the added concepts like the collection modifiers and delegates
L1249[21:00:12] <howtonotwin> Whatever you do btw, do not look at the collection library method sigs until you are prepared
L1250[21:00:38] <GenerousGuava> I also really like how Kotlin automatically uses multithreading on all the collection methods
L1251[21:01:04] <GenerousGuava> I know how hacky they look, I looked into LINQ once :P
L1252[21:01:12] <howtonotwin> Oh really? Doesn't that incur overhead sometimes?
L1253[21:01:16] <primetoxinz> there an itemstack nbt match in vanilla or forge somewhere?
L1254[21:01:25] <primetoxinz> match method*
L1255[21:01:35] <GenerousGuava> I think it has proper optimisations on it to prevent that but I haven't really looked at it much
L1256[21:01:48] <GenerousGuava> I know theres asSequence() which forces it to do it in a single thread
L1257[21:02:12] <primetoxinz> oh, nvm found it
L1258[21:02:31] <howtonotwin> Scala lets you coll.par and coll.seq, but most people just stick to the seq ones
L1259[21:03:19] <capitalthree> the thing that's great about kotlin is it's born from the best static analysis tools. a lot of its features are actually based on doing escape analysis and stuff like that, eg, the flow typing
L1260[21:03:34] <capitalthree> so I have no doubt it auto parallelizes simple numeric things with no side effects but leaves the rest alone
L1261[21:04:04] <GenerousGuava> yea I have no doubt JetBrains did that properly :P
L1262[21:04:20] <howtonotwin> That is rather cool
L1263[21:04:27] <capitalthree> the reason I switched to kotlin was not much more complicated than "I've been trusting these people to keep me from shooting myself in the foot in java, so might as well"
L1264[21:04:37] <GenerousGuava> they're pretty much my favourite company in existance :D IntelliJ PHPStorm ReSharper, every IDE I use is by them
L1265[21:04:46] ⇨ Joins: Wastl2_ (~Wastl2@x4e34c733.dyn.telefonica.de)
L1266[21:04:47] <howtonotwin> Meanwhile, in Scala the price of the coll lib is sigs like def map[B, That](f: E => B)(implicit cbf: CanBuildFrom[Repr, B, That]): That // I think that's pretty close to what it really is
L1267[21:05:28] ⇦ Quits: Wastl2 (~Wastl2@x4e34c888.dyn.telefonica.de) (Ping timeout: 383 seconds)
L1268[21:05:29] <capitalthree> my only actual gripe with scala collections, in the context of minecraft modding, is that they are not cross compatible and you have to do some converting to deal with java code
L1269[21:06:00] <GenerousGuava> well the reason I switched to kotlin was mainly that I like learning new stuff and it seemed like an interesting language
L1270[21:06:13] <howtonotwin> hail collections.JavaConverters._, our Dark Lord :P
L1271[21:06:14] <GenerousGuava> and as I used it more and more I realised how amazing it was
L1272[21:11:00] <capitalthree> yeah I do also like learning new languages
L1273[21:11:20] <capitalthree> and I've noticed most people's main reason for *not* trying kotlin or scala isn't that they have a credible reason to think it's not better, but they're afraid of the learning curve
L1274[21:11:32] <capitalthree> that's why I tend to recommend kotlin over scala for java coders. almost no learning curve
L1275[21:11:44] <capitalthree> but nobody believes me when I tell them how easily they will learn it :P
L1276[21:13:13] <capitalthree> I guess, compared to java, kotlin feels like it fixes about 80% of the stuff that scala fixes, but does it with extreme elegance and keeping things much closer to java
L1277[21:15:05] <capitalthree> like... scala really feels like a different language. kotlin just feels like a fantasy land where oracle didn't half-ass java 8.
L1278[21:16:04] <howtonotwin> lol
L1279[21:16:29] <howtonotwin> Where does Groovy fit in then?
L1280[21:16:38] <capitalthree> uhh... good enough for build systems I guess
L1281[21:16:43] <capitalthree> if someone makes a mod in groovy I will cry
L1282[21:16:54] <GenerousGuava> :D
L1283[21:17:10] <howtonotwin> Generous has 2 gs in their name.
L1284[21:17:17] <howtonotwin> I nominate them to do it
L1285[21:17:23] <capitalthree> don't dooo it!
L1286[21:17:31] <capitalthree> go for ceylon
L1287[21:17:43] <capitalthree> when I do my 3rd mod it will be ceylon
L1288[21:17:57] <howtonotwin> No write it in lambda calculus and convert it to JVM with Caramel
L1289[21:18:08] <capitalthree> gonna make a minecraft mod in every other static jvm language available before I do java, and hopefully I don't have to get to the dynamic ones
L1290[21:18:50] <howtonotwin> At this rate they're probably going to make JVM langs faster than you can use them :P
L1291[21:19:11] <capitalthree> ok good
L1292[21:19:35] <capitalthree> I spent years of my life doing java, and kotlin is such a beautiful drop-in replacement for java that it seems unjustifiable to ever write more java code
L1293[21:19:51] <capitalthree> (of course, I will surely write plenty, when I make contributions to other mods, because people get butthurt if you insert a kotlin file into their mod)
L1294[21:20:28] <capitalthree> ceylon really does seem quite good. very similar design aesthetic to kotlin, but more biased towards java-like syntax
L1295[21:20:34] <GenerousGuava> I do use Java for low level byte/bit manipulation since kotlin is weird when it comes to that
L1296[21:20:58] <capitalthree> I tried to sell the people on it who complained about pointless syntax things in kotlin (like fun, or the type ascriptions)
L1297[21:21:01] <howtonotwin> Insert a Scheme file generated by https://github.com/MaiaVictor/caramel into their project :P
L1298[21:21:04] <capitalthree> but it's a hard sell since I don't know ceylon yet myself
L1299[21:21:14] <howtonotwin> I hear it has union types
L1300[21:21:15] <GenerousGuava> and for my holder classes because I don't want to annotate every single field with @JvmStatic
L1301[21:21:20] <capitalthree> oh that makes sense
L1302[21:21:25] <capitalthree> if you really want to deal with primitive types it makes sense
L1303[21:21:40] <howtonotwin> Honestly a sane implies of sum types that doesn't involve Miles Sabin level typehackage is a major plus
L1304[21:21:40] <capitalthree> GenerousGuava: dude you are supposed to make a companion object
L1305[21:21:43] <capitalthree> not use @JvmStatic
L1306[21:21:44] <capitalthree> :P
L1307[21:21:53] <howtonotwin> *impl
L1308[21:22:06] <GenerousGuava> i know how companion objects work
L1309[21:22:12] <GenerousGuava> but since 1.1 they compile into singletons
L1310[21:22:18] <GenerousGuava> which dont work well with reflection
L1311[21:22:28] <capitalthree> ohh ok
L1312[21:22:34] <howtonotwin> How does kotlin desugar those btw?
L1313[21:22:39] <capitalthree> you shouldn't need to do reflection on your own code >_>
L1314[21:22:52] <GenerousGuava> well for my item registrations i do :P
L1315[21:23:09] <capitalthree> there's no way to handle this through the type system?
L1316[21:23:16] <howtonotwin> Scala turns object A into class A$ and static field A$.MODULE$
L1317[21:23:39] <howtonotwin> If Kotlin does companions like Scala then no
L1318[21:23:53] <GenerousGuava> not really, no. I could look for the companion object and then get my fields with that reference, but that would make it incompatible with Java
L1319[21:24:12] <GenerousGuava> howtowin @JvmStatic or companion objects?
L1320[21:24:19] <howtonotwin> companions
L1321[21:24:29] <GenerousGuava> well pre 1.1 they just turned into static methods/fields
L1322[21:24:37] <GenerousGuava> now they turn into a static field called Companion
L1323[21:24:47] <GenerousGuava> then all the members are part of the Companion class
L1324[21:24:58] <capitalthree> why *don't* they just turn into static methods/fields anymore?
L1325[21:25:02] <capitalthree> that seems simple enough
L1326[21:25:05] <GenerousGuava> dont ask me :P
L1327[21:25:29] <howtonotwin> In scala it automatically generates forwarders for methods that are static
L1328[21:25:38] <howtonotwin> It's done so you can pass the object around like any other
L1329[21:25:39] <GenerousGuava> @JvmStatic forces it to generate a static field in the main class
L1330[21:25:56] <GenerousGuava> or method obviously
L1331[21:26:12] ⇨ Joins: matthewprenger (~matt@irc.prenger.co)
L1332[21:26:27] <howtonotwin> oh does kotlin have something like scale's single access principle? (Or whatev it's called)
L1333[21:26:34] ⇨ Joins: Shawn|i7-Q720M (~shawn156@c-71-205-36-210.hsd1.co.comcast.net)
L1334[21:26:36] <howtonotwin> There is no such thing as a public field in scala
L1335[21:27:01] <howtonotwin> A public field is sugar for a private field and a getter/setter with the names field and field_=
L1336[21:28:47] <GenerousGuava> yup
L1337[21:28:55] <GenerousGuava> it generates the getters and setters on compile
L1338[21:29:08] <GenerousGuava> you can add get() and set() to fields too to execute custom logic
L1339[21:29:53] <GenerousGuava> oh and it turns java getters/setters to property accessors
L1340[21:30:18] <howtonotwin> I really don't know why that isn't implemented in Scala
L1341[21:31:22] <GenerousGuava> this is why the collections api is so amazing. I was able to write my getwidth function for a tooltip like this
L1342[21:31:27] <GenerousGuava> text.map { fontRenderer.getStringWidth(it) }.max()!!
L1343[21:32:00] <GenerousGuava> the !! is declare not null :P
L1344[21:32:36] <howtonotwin> scala says text.map(fontRenderer.getStringWidth).max, which is basically the exact same :P
L1345[21:33:19] <howtonotwin> I think Java is the only JVM lang at this point that can't do it that elegantly
L1346[21:33:24] <GenerousGuava> yea :D
L1347[21:33:37] <howtonotwin> I mean it has streams but it implies .stream() and .collect() :P
L1348[21:33:46] <GenerousGuava> even though they nicked Lambdas from C# in Java 8
L1349[21:34:43] <GenerousGuava> yea its such a roundabout way of doing it. guess thats what you have to do though in a language without extension methods
L1350[21:34:59] ⇨ Joins: Flashfire (~Samuel@d24-36-3-248.home1.cgocable.net)
L1351[21:35:13] <Flashfire> How can I make a custom item overlay (like enchantment effect) in 1.12?
L1352[21:35:16] <Flashfire> Is it even possible?
L1353[21:35:59] ⇦ Quits: Matthew (~matt@irc.prenger.co) (Quit: ZNC 1.6.5 - http://znc.in)
L1354[21:36:29] *** matthewprenger is now known as Matthew
L1355[21:41:15] <GenerousGuava> i dont know a whole lot about rendering stuff
L1356[21:41:46] <Flashfire> I need access to GL rendering for a custom item
L1357[21:42:14] <Flashfire> Can't seem to find a way to do that in 1.8+
L1358[21:47:47] ⇦ Quits: Meronat (uid190493@id-190493.highgate.irccloud.com) (Quit: Connection closed for inactivity)
L1359[21:48:07] <GenerousGuava> havent done any kind of special item rendering so dont know much about that
L1360[21:50:44] ⇦ Quits: Gil (uid147942@id-147942.hathersage.irccloud.com) (Quit: Connection closed for inactivity)
L1361[21:53:16] <howtonotwin> Flashfire, you can do it, but you need some TESR hackery.
L1362[21:53:29] <Flashfire> Oh really?
L1363[21:53:42] ⇨ Joins: Arthur (webchat@pool-74-96-192-21.washdc.fios.verizon.net)
L1364[21:53:42] <Flashfire> I'm fine with hackery, just need an example of something similar
L1365[21:53:50] <howtonotwin> Step 1) Get a custom IBakedModel for the item that returns true from isBuiltInRenderer
L1366[21:53:53] <Flashfire> Better than making a new set of textures for every itme
L1367[21:54:23] <howtonotwin> Step 2) call ForgeHooksClient.registerTESRItemStack
L1368[21:54:34] <howtonotwin> Step 3) Use that TESR to render things
L1369[21:55:07] <Flashfire> Cool
L1370[21:55:19] <howtonotwin> Oh wait I just realized another way :P
L1371[21:55:27] <Flashfire> Listening (watching)
L1372[21:55:36] <howtonotwin> Items models can have layers
L1373[21:55:58] <Flashfire> JSON models can't do GL blending stuff tho
L1374[21:56:07] <Flashfire> Though it'd be nice if they could
L1375[21:56:25] <Flashfire> I need to show parts of this texture only when it's touching the lower layer's non-transparent pixels
L1376[21:56:44] <howtonotwin> Yeah no that's gonna be a mess
L1377[21:57:13] <howtonotwin> Another thing you can do is hook TextureStitchEvent and inject your normal texture with the glint overlaid on it
L1378[21:57:13] <Flashfire> How do I get the custom baked model?
L1379[21:57:16] <Flashfire> Custom model class?
L1380[21:57:27] <howtonotwin> Yes, the whole model shebang
L1381[21:57:31] <Flashfire> Yeah I could do that, would that be more expensive?
L1382[21:57:39] <Flashfire> The texturestichevent thing
L1383[21:57:43] <howtonotwin> no
L1384[21:57:59] <howtonotwin> it'd be a normal atlas texture and a normal static model like everything else
L1385[21:58:15] <Flashfire> Hmm
L1386[21:58:21] <Flashfire> How would I add stuff to it?
L1387[21:58:32] <howtonotwin> I haven't researched the texture system much so I can't say much
L1388[21:58:42] <howtonotwin> You handle texturestitchevent and that's all I know
L1389[21:58:44] <Flashfire> Do you know that it's possible though?
L1390[21:58:46] ⇦ Quits: Elec0 (~Elec0@2605:e000:2d86:4f00:a5b8:e1c0:222a:7a78) (Quit: Leaving)
L1391[21:58:47] <Flashfire> Oh ok
L1392[21:58:54] <howtonotwin> Probably is possible though
L1393[21:59:01] <Flashfire> Sounds like that method might be expensive
L1394[21:59:06] <howtonotwin> It isn't
L1395[21:59:09] <Flashfire> If I'm evaluating individual pixels
L1396[21:59:42] <GenerousGuava> your gpu does that anyways with GL blending
L1397[21:59:47] <howtonotwin> Probably less expensive than a TESR
L1398[22:00:17] <Flashfire> So having the frame of my layer and the frame of my item and blending the pixels would be reasonable?
L1399[22:00:26] <GenerousGuava> pretty sure you can use OpenGL to blend the textures and then create a new atlas sprite from thre result
L1400[22:00:29] <Flashfire> I mean, one by one
L1401[22:00:36] <Flashfire> Oh really?
L1402[22:00:47] <Flashfire> Not sure how I'd do that with TextureAtlasSprite
L1403[22:01:06] <GenerousGuava> Well I'm not sure about the details
L1404[22:01:16] <howtonotwin> Yeah this is way out of my league now ? You can search GitHub for TAS and see what pops up
L1405[22:01:28] <GenerousGuava> it was just an idea since OpenGL would use your GPU to blend the textures instead of your CPU
L1406[22:01:31] <howtonotwin> Or ping fr.y if you really must
L1407[22:01:32] <GenerousGuava> and that would be loads faster
L1408[22:02:05] <Flashfire> The GPU thing would be cool
L1409[22:03:02] <GenerousGuava> yea I don't know a whole lot about OpenGL but I'm sure you can find some stuff on google
L1410[22:03:15] <GenerousGuava> it's a pretty damn popular graphics library after all
L1411[22:03:40] <Flashfire> It doesn't know what textureatlassprite is though
L1412[22:03:44] <Flashfire> Which is why I'm not sure
L1413[22:04:31] <GenerousGuava> no what I'm saying is load the sprite into OpenGL, blend it, then bake the result into a TextureAtlasSprite
L1414[22:04:45] <Flashfire> "load the sprite into openGL" is where I don't know how to do it
L1415[22:05:09] <GenerousGuava> yea me neither but I figure that stuff must be on google
L1416[22:05:17] <Flashfire> I've been looking
L1417[22:05:34] <Flashfire> Not seeing anything on TextureAtlasSprite + GL
L1418[22:06:08] <GenerousGuava> oh you mean that part
L1419[22:06:17] <GenerousGuava> just look through that code
L1420[22:06:30] <GenerousGuava> it has to load it into OpenGL on render, so it must be in there somewhere
L1421[22:07:01] ⇨ Joins: ARuther (~pvtgeekho@pool-74-96-192-21.washdc.fios.verizon.net)
L1422[22:07:24] ⇦ Quits: Arthur (webchat@pool-74-96-192-21.washdc.fios.verizon.net) ()
L1423[22:08:36] <ARuther> I'm trying to learn how to use Forge 1.12 but all the tutorials I find are out of date, any advice?
L1424[22:08:51] <Flashfire> 1.11.2 is practically the same
L1425[22:08:53] <Flashfire> 1.10.2 even
L1426[22:09:02] <ARuther> I was using the Shadowfacts tutorial, but I saw the GameRegistry.register is no longer used
L1427[22:09:14] <Flashfire> Forge registries you have to use
L1428[22:09:15] <ARuther> And I don't know enough about modding/forge to figure out how to use RegistryEvents
L1429[22:09:20] <Flashfire> They are events
L1430[22:09:24] <Flashfire> I can link you my mod that does it
L1431[22:09:34] <ARuther> That would be helpful
L1432[22:09:47] <Flashfire> https://github.com/Samuel-Harbord/SpectriteMod/blob/master/src/main/java/com/samuel/spectritemod/init/ModBlocks.java
L1433[22:10:15] <Flashfire> My init classes have a @SubcribeEvent method that is called on the register event in the parameter
L1434[22:10:21] <Flashfire> That's how stuff is registered now
L1435[22:10:38] <ARuther> Is @SubscribeEvent a Forge-specific thing?
L1436[22:10:42] <Flashfire> Yes
L1437[22:10:45] <Flashfire> I believe so
L1438[22:10:45] <ARuther> Ah OK
L1439[22:10:59] <ARuther> I know my way around Java/programming in general, but all this Forge stuff is new to me
L1440[22:11:09] <Flashfire> It works with the event bus
L1441[22:11:24] <howtonotwin> Registration: https://mcforge.readthedocs.io/en/latest/concepts/registries/
L1442[22:11:36] <Flashfire> inecraftForge.EVENT_BUS.register(my class instance with the subscribe event methods)
L1443[22:11:43] <howtonotwin> Those event annots: https://mcforge.readthedocs.io/en/latest/events/intro/
L1444[22:12:05] <howtonotwin> Flashfire, it's probably easier to use @EventBusSubscriber with static handlers
L1445[22:12:22] <ARuther> How would I modify this portion of the tutorial to work in 1.12?
L1446[22:12:22] <ARuther> http://shadowfacts.net/tutorials/forge-modding-1112/basic-items/
L1447[22:12:23] <Flashfire> Wasn't aware of that
L1448[22:12:38] <ARuther> ModItems uses GameRegistry.register
L1449[22:12:53] <Flashfire> Just the registration events change
L1450[22:12:57] <howtonotwin> Ignore all the stuff he does for registration and use what that doc page says
L1451[22:12:59] <Flashfire> Plus 1.12 handles recipes as jsons
L1452[22:13:02] <howtonotwin> The Item itself is good
L1453[22:13:05] <howtonotwin> ^ and that
L1454[22:13:17] <ARuther> Sorry, I'm having trouble keeping up
L1455[22:13:21] <howtonotwin> I still don't know how that's done so don't ask me ;P
L1456[22:13:34] <ARuther> I'm not very familiar with Forge or Minecraft's code in general
L1457[22:13:39] <howtonotwin> Read all of https://mcforge.readthedocs.io/en/latest/ for the basics
L1458[22:13:55] <howtonotwin> I don't like tutorials because they force patterns on you
L1459[22:14:30] <ARuther> I was reading through the docs, but when I got to the registries page I was lost
L1460[22:14:38] <capitalthree> I like having a pattern forced on me, as long as it's the best
L1461[22:14:41] <howtonotwin> Oh no, I wrote that page
L1462[22:14:50] <ARuther> Honestly it seems kind of frontloaded, I was trying to read through it and got lost
L1463[22:14:53] <ARuther> Ah sorry!
L1464[22:14:58] <capitalthree> intellij regularly tells me "hey rewrite your code like this", and I always end up liking it
L1465[22:15:04] <ARuther> tbh I am a try first and figure out why later sort of person
L1466[22:15:16] <howtonotwin> No, criticism is good :P
L1467[22:15:16] <ARuther> So I had planned to follow a tutorial and then figure out what it was doing after the fact
L1468[22:15:25] <Flashfire> I did that
L1469[22:15:31] <Flashfire> Sure took me a while to get used to modding tho
L1470[22:15:32] <howtonotwin> Oh then you just want to look at an open source mod
L1471[22:15:41] <howtonotwin> Botania is good
L1472[22:15:44] <Flashfire> I just made a little of everything you can make
L1473[22:15:51] <Flashfire> Now I just copy and paste mostly
L1474[22:15:57] <ARuther> I've looked at existing mods but it's hard to know where to start looking from
L1475[22:16:08] <ARuther> If there was a REALLY basic mod I could look through that'd be nice
L1476[22:16:11] <ARuther> Is Botania like that?
L1477[22:16:14] <Flashfire> No
L1478[22:16:16] <GenerousGuava> haha no
L1479[22:16:19] <Flashfire> Botania is super complex
L1480[22:16:20] <ARuther> Well shoot
L1481[22:16:29] <howtonotwin> The entry points are the RegistryEvents and everything in the @Mod class
L1482[22:16:30] <Flashfire> Mine is fairly basic
L1483[22:16:35] <ARuther> Yeah, reading through some source code top to bottom is just going to confuse me more I think
L1484[22:16:47] <Flashfire> I don't have the guaranteed best practices tho
L1485[22:16:52] <ARuther> Flashfire, I'm pretty lost just looking at ModBlocks
L1486[22:16:57] <capitalthree> I have really basic mods but probably too basic :P
L1487[22:17:09] <ARuther> I don't think too basic is possible for me right now
L1488[22:17:12] <capitalthree> no blocks added
L1489[22:17:15] <Flashfire> Every mod with custom blocks has something like ModBlocks
L1490[22:17:21] <capitalthree> but if you want, Lingering Loot and BTFU
L1491[22:17:24] <ARuther> Yeah, but I can't figure out what each line is doing
L1492[22:17:28] <ARuther> Thanks capitalthree
L1493[22:17:38] <capitalthree> I'm on a portable device but they both have github linked from curse
L1494[22:17:45] <ARuther> I'm sure I can find them
L1495[22:18:03] <howtonotwin> Not every mod has ModBlocks ? I don't, at least
L1496[22:18:06] <Flashfire> createBlocks initializes block instances that can be accessed at any time after intiialization
L1497[22:18:09] <capitalthree> lingering loot is probably a better choice, btfu doesn't do that much with the minecraft engine
L1498[22:18:14] <ARuther> Flashfire, I see you have onRegisterBlocks, and I see what it's basically doing, but I can't relate that to what's going on in my tutorial
L1499[22:18:21] <capitalthree> my mods don't add *any* blocks or items
L1500[22:18:28] <capitalthree> they're server admin tools mainly
L1501[22:18:33] <Flashfire> 1.12 has moved where registration happens to within that event
L1502[22:18:44] <Flashfire> It's doing the same thing in a different way
L1503[22:18:58] <ARuther> Yeah, so how would I change ModItems (from the mod tutorial) to reflect that?
L1504[22:19:12] <Flashfire> It would help if you looked at my commit from old to new
L1505[22:19:13] <howtonotwin> ARuther, would it be useful if the 2nd-4th paras of registries page were moved to an "Internals" subheader?
L1506[22:19:17] <Flashfire> Hold on ill link it
L1507[22:19:26] <ARuther> Good idea Flashfire
L1508[22:19:43] <Flashfire> https://github.com/Samuel-Harbord/SpectriteMod/commit/1dd59215b25985b25214c7fe5b291da88c6b27a2
L1509[22:19:50] <Flashfire> This is how I changed from GameRegistry.register
L1510[22:19:56] <Flashfire> But I also removed a bunch of bad practices lol
L1511[22:20:18] <ARuther> howtonotwin, I feel like the second paragraph is pretty important too, since it has the example
L1512[22:20:26] <ARuther> But yeah, the third and fourth are very low-level
L1513[22:20:55] <howtonotwin> Yeah I think I ignored the fact that you're told what.a registry is before you know events and blocks
L1514[22:21:06] <ARuther> Your first paragraph is very clear, but it really only tells me that I need to register stuff, not how to do it or where it falls
L1515[22:21:18] <ARuther> I feel like a very broad overview of what parts there are in a mod would be a good place to start
L1516[22:21:36] <ARuther> Like, I see the registerBlocks example but I'd have no idea where to put it
L1517[22:21:54] <howtonotwin> That's probably meant for "Structuring Your Mod"
L1518[22:22:19] <howtonotwin> Yeah I'll note that I need to fix those pages then
L1519[22:22:23] <ARuther> Right, but that seems to just cover naming conventions
L1520[22:22:37] <howtonotwin> That file probably needs an overhaul
L1521[22:22:49] <Flashfire> Stuff you can add to a mod for example is like: Blocks, Items, Entities, Tile Entities, World Generators
L1522[22:23:06] <Flashfire> So things I have an Init class for
L1523[22:23:22] <howtonotwin> It's all the reflection that Forge uses. Too many entry points to be sane
L1524[22:23:33] <Flashfire> All mods need a main file though
L1525[22:23:41] <Flashfire> And proxies
L1526[22:23:45] <Flashfire> One for client one for server
L1527[22:23:48] <ARuther> Like, literally a file named "main", or just the file that has the @Mod
L1528[22:23:54] <ARuther> Oh yeah, and CommonProxy/ClientProxy
L1529[22:23:57] <howtonotwin> Also not all mods need proxies
L1530[22:24:00] <Flashfire> You should call it what your mod is called
L1531[22:24:03] <Flashfire> The main class
L1532[22:24:06] <ARuther> Gotcha, yeah
L1533[22:24:15] <ARuther> Wasn't sure if you meant like a public static void main or something
L1534[22:24:16] <Flashfire> And yeah just needs @Mod
L1535[22:24:23] <ARuther> Yeah the tutorial explained that
L1536[22:24:24] <Flashfire> Nah there's none of that in forge
L1537[22:24:36] <ARuther> Yeah, didn't think so
L1538[22:24:51] <Flashfire> Also for actual graphics to appear you need associated "assets" for your custom stuff
L1539[22:24:57] <Flashfire> Usually json files
L1540[22:25:22] <ARuther> Does IRC have a nice way of posting code snippets?
L1541[22:25:26] <Flashfire> There are blockstates for blocks, models for both blocks and items, but blocks also have a second model for when it's actually in the world
L1542[22:25:31] <howtonotwin> No, just use pastebin
L1543[22:25:34] <ARuther> k
L1544[22:25:34] <Flashfire> Just link to pastebin
L1545[22:25:37] <Flashfire> brb
L1546[22:25:41] <howtonotwin> Actually use hastebin
L1547[22:25:45] <howtonotwin> It looks nicer
L1548[22:26:14] <howtonotwin> (If you use hasten PLEASE set the file extension so you don't get a Java file highlighted as C)
L1549[22:26:25] <ARuther> Good advice, thanks
L1550[22:26:27] <howtonotwin> Also models doc: https://gist.github.com/howtonotwin/88fd07f419ae5c9560e9ae2615514018
L1551[22:26:31] <Flashfire> Back
L1552[22:26:37] <ARuther> So the ModItems script is meant to basically register an instance of each new Item added by the mod?
L1553[22:26:43] <howtonotwin> yes
L1554[22:26:48] <ARuther> OK
L1555[22:26:58] <howtonotwin> Read that models doc when you have everything else and are just polishing up
L1556[22:27:10] <ARuther> Will do
L1557[22:27:21] <Flashfire> Also
L1558[22:27:32] <Flashfire> You will want to get the vanilla source for reference on stuff
L1559[22:27:38] <Flashfire> Especially json models
L1560[22:27:48] <howtonotwin> Also comment on the related PR because it needs feedback: https://github.com/MinecraftForge/Documentation/pull/61
L1561[22:27:50] <ARuther> I think I can access that via Referenced Libraries?
L1562[22:27:52] <ARuther> I'm using Eclipse
L1563[22:27:52] <Flashfire> It's created somewhere in your gradle cache
L1564[22:27:59] <Flashfire> I just used a java decompiler
L1565[22:28:00] <howtonotwin> ARuther, yep
L1566[22:28:06] <ARuther> Cool
L1567[22:28:21] <GenerousGuava> Should be linked anyways in IntelliJ
L1568[22:28:27] <howtonotwin> The jar is just a zip though; you can extract the assets to your desktop or something too.
L1569[22:28:34] <GenerousGuava> so you can just search for classes with ctrl+N
L1570[22:28:36] <Flashfire> ...TRUE
L1571[22:28:39] <Flashfire> lol
L1572[22:28:43] <capitalthree> once you do setupDecompWorkspace
L1573[22:29:50] <ARuther> So instead of calling GameRegistry.register on each item I want to register, I just need to call event.getRegistry().register on each item from within the SubscribeEvent method?
L1574[22:30:02] <Flashfire> Yeah
L1575[22:30:05] <ARuther> *the method with @SubscribeEvent above it
L1576[22:30:05] <ARuther> OK
L1577[22:30:07] <ARuther> Great
L1578[22:30:07] <Flashfire> Does the same thing
L1579[22:30:34] <GenerousGuava> So it should be easy enough to port over my reflection insanity to 1.12 then :P
L1580[22:30:43] <Flashfire> Yeah
L1581[22:30:51] <GenerousGuava> I can just register my ConfigProvider as an event handler
L1582[22:30:57] <Flashfire> I remember 1.8 -> 1.9 being awful
L1583[22:31:00] <Flashfire> It's been easier since then
L1584[22:31:15] <Flashfire> I never had to deal with 1.7.10 tho
L1585[22:31:16] <howtonotwin> ARuther, there's a registerAll you can do instead of repeatedly calling register but they're the same
L1586[22:31:18] <Flashfire> That's the worst
L1587[22:31:29] <Flashfire> ^ I did not know that lol
L1588[22:31:33] <GenerousGuava> I had to port some 1.7.10 code to 1.11.2
L1589[22:31:35] <GenerousGuava> that was a nightmare
L1590[22:31:37] <Flashfire> Ugh
L1591[22:31:41] * howtonotwin is sorry for GenerousGuava
L1592[22:31:45] ⇦ Quits: sinkillerj (~sinkiller@nc-67-232-12-107.dhcp.embarqhsd.net) (Quit: またね)
L1593[22:31:46] <GenerousGuava> most of the library code was unrelated to MC though
L1594[22:31:50] <GenerousGuava> luckily :P
L1595[22:31:53] <Flashfire> Well that's good
L1596[22:32:09] <Flashfire> Still can't figure out that GL ting
L1597[22:32:22] <Flashfire> Might try the TESR route
L1598[22:32:43] <GenerousGuava> cant find where its loading the texture?
L1599[22:32:47] <Flashfire> Yeah
L1600[22:32:52] <Flashfire> Not sure what method it would be
L1601[22:32:59] <Flashfire> Is it bindtexture?
L1602[22:33:10] <Flashfire> I see that a lot
L1603[22:33:26] <GenerousGuava> thats an abstracted method but yea
L1604[22:33:32] <Flashfire> Oh
L1605[22:33:44] <GenerousGuava> itextureobject
L1606[22:33:45] <Flashfire> Can I do that from texturestitchevent?
L1607[22:33:53] <GenerousGuava> thats where it gets the GlTextureId from
L1608[22:34:06] <GenerousGuava> there must be some way to get one from the atlassprite
L1609[22:34:19] <Flashfire> Too bad atlassprite doesn't extend that
L1610[22:34:45] <GenerousGuava> itextureobject is something different
L1611[22:35:02] <GenerousGuava> bindTexture just wraps the creation of a SimpleTexture() which extends that
L1612[22:35:42] <GenerousGuava> once you have the GlTextureId you can use TextureUtil.bindTexture(id)
L1613[22:35:51] <Flashfire> I can just use my resource location though
L1614[22:35:53] <Flashfire> Can I not?
L1615[22:35:56] ⇦ Quits: howtonotwin (~howtonotw@75-110-22-15.gvllcmtk01.res.dyn.suddenlink.net) (Quit: Good day to you!)
L1616[22:35:56] <GenerousGuava> no
L1617[22:36:06] <Flashfire> Oh
L1618[22:36:20] <GenerousGuava> but you should be able to get an ItextureObject from the atlas sprite
L1619[22:36:26] <Flashfire> Only works with minecraft domain?
L1620[22:36:41] <GenerousGuava> no any domain
L1621[22:36:54] <Flashfire> Then why can't I use a resource location
L1622[22:37:25] <GenerousGuava> well you could load both textures from the resource location and then convert the blended result to a textureatlassprite
L1623[22:37:42] <ARuther> OK so this is a total stab in the dark but this does not appear to be working:
L1624[22:37:43] <ARuther> https://hastebin.com/risopayayu.java
L1625[22:37:52] <GenerousGuava> the tricky part at that point is the actual blending in OpenGL
L1626[22:38:03] <Flashfire> You need to register your class
L1627[22:38:06] <Flashfire> In the event bus
L1628[22:38:13] <GenerousGuava> you need to write a GLSL shader and execute that somehow
L1629[22:38:15] <Flashfire> Do it in commonproxy
L1630[22:38:23] <GenerousGuava> I've never worked with low level drawing like that
L1631[22:38:23] <Flashfire> Do I? D:
L1632[22:38:26] <Flashfire> I've never done that
L1633[22:38:43] <GenerousGuava> GLSL is just a shader language that gets compiled into GPU compatible code
L1634[22:38:49] <ARuther> What do you mean by "Event Bus"?
L1635[22:38:49] <GenerousGuava> its not too hard
L1636[22:39:04] <ARuther> I've written in GLSL before, it's kind of a pain until you get used to it
L1637[22:39:07] <ARuther> Then it's just math
L1638[22:39:12] <GenerousGuava> yea
L1639[22:39:22] <GenerousGuava> for something as simple as texture blending it should be easy enouh
L1640[22:39:43] <Flashfire> ARuther look in my mod's commonproxy
L1641[22:39:44] <capitalthree> the events are the main thing that passes control to your code
L1642[22:39:55] <GenerousGuava> http://distrustsimplicity.net/articles/texture-blending-in-glsl/
L1643[22:39:58] <Flashfire> You need to register the instances of classes containing those methods
L1644[22:39:59] <capitalthree> and the event bus is for listening to (and initiating) global events
L1645[22:40:39] <Flashfire> Hm
L1646[22:40:47] <Flashfire> Not sure how to bind stuff to that
L1647[22:40:57] <Flashfire> Got an example?
L1648[22:41:05] <ARuther> Ah OK, so add MinecraftForge.EVENT_BUS.register(new ModItems()); to preInit?
L1649[22:41:21] <Flashfire> Yeppers
L1650[22:41:32] <GenerousGuava> I sadly don't maybe look up how to run shaders in OpenGL
L1651[22:41:37] <GenerousGuava> I need to work on my mod for a bit :P
L1652[22:41:47] <Flashfire> Alright
L1653[22:41:59] <ARuther> I've got a preInit that looks exactly like that in my Main class, does it need to be in CommonProxy?
L1654[22:42:02] <Flashfire> I'm not even sure what my overlay will look like yet
L1655[22:42:26] <Flashfire> I believe it does, not fully sure
L1656[22:42:38] <Flashfire> Because code runs on both client and server
L1657[22:42:48] <Flashfire> Both client and common proxy have preinit
L1658[22:42:52] <Flashfire> So there's 2 versions running
L1659[22:43:02] <Flashfire> If you have server code run on the client you'll crash on a dedicated server
L1660[22:43:21] <GenerousGuava> The other way around :P
L1661[22:43:32] <ARuther> The mod I followed put preInit, Init, and postInit in the Main class
L1662[22:43:36] <Flashfire> Sorry my bad, client code run on the server
L1663[22:43:42] <ARuther> I added the EVENT_BUS line to that preInit and it worked
L1664[22:43:43] <Flashfire> Mine has that too
L1665[22:43:43] <ARuther> so idk
L1666[22:44:07] <Flashfire> They call proxy.preInit, init etc though
L1667[22:44:20] <ARuther> Oh, I see, you call the Proxy's method within the Main's method
L1668[22:44:20] <Flashfire> So you actually access the proxy init methods through your main class's init methods
L1669[22:44:21] <ARuther> gotcha
L1670[22:44:26] <ARuther> Yeah, that makes sense, OK
L1671[22:45:01] <ARuther> Also, dumb question, why don't I see a "Materials" tab on my creative menu in game?
L1672[22:45:23] <Flashfire> Come to think of it
L1673[22:45:25] <Flashfire> Neither do I
L1674[22:45:28] <Flashfire> It's a 1.12 change
L1675[22:45:30] <Flashfire> Idk if it's a bug
L1676[22:45:32] <ARuther> Huh, OK
L1677[22:46:12] <ARuther> Stuff like Iron Ingot shows up in the Miscellaneous tab
L1678[22:46:37] <Flashfire> I'm still registering stuff to materials tab tho
L1679[22:46:46] <Flashfire> Materials tab isn't gone from forge code so maybe it is a bug
L1680[22:47:51] ⇨ Joins: Lathanael (~Lathanael@p54960F83.dip0.t-ipconnect.de)
L1681[22:47:53] <GenerousGuava> hmm I think I have a leak in my tank level display
L1682[22:47:56] ⇦ Quits: Lathanael|Away (~Lathanael@p54960036.dip0.t-ipconnect.de) (Ping timeout: 383 seconds)
L1683[22:48:06] <Flashfire> I might be lazy with the overlay
L1684[22:48:10] <GenerousGuava> since MC gets slower and slower
L1685[22:48:15] <Flashfire> I just want to make a custom enchantment for my items
L1686[22:48:27] <GenerousGuava> wait
L1687[22:48:28] <Flashfire> Like, not an enchantment
L1688[22:48:32] <Flashfire> A custom enchantment type
L1689[22:48:36] <GenerousGuava> have you looked at how MC handles enchantments?
L1690[22:48:39] <Flashfire> That only works for these items
L1691[22:48:45] <Flashfire> And has a different overlay
L1692[22:50:09] <GenerousGuava> i just looked at the vanilla code
L1693[22:50:38] <Flashfire> What would be cool is a method that returns a resource location for the overlay
L1694[22:50:46] <Flashfire> And all vanilla enchantments return the default
L1695[22:50:49] <GenerousGuava> if (stack.hasEffect())
L1696[22:50:49] <GenerousGuava> {
L1697[22:50:49] <GenerousGuava> this.renderEffect(model);
L1698[22:50:49] <GenerousGuava> }
L1699[22:51:00] <GenerousGuava> you would need a coremod i think
L1700[22:51:06] <Flashfire> What class
L1701[22:51:11] <Flashfire> Also I know nothing of coremods lol
L1702[22:51:18] <GenerousGuava> use ASM to inject into renderItem() in the RenderItem class
L1703[22:51:26] <Flashfire> ASM?
L1704[22:51:28] <GenerousGuava> and add your own check
L1705[22:51:39] <Flashfire> Never used that I don't think
L1706[22:51:40] <GenerousGuava> look up ASM tutorials its not that hard :P
L1707[22:51:45] <killjoy> ASM is evil voodoo magic
L1708[22:51:50] <GenerousGuava> its just a library for editing ByteCode
L1709[22:52:00] <killjoy> It's also the best thing that's happened to modded minecraft
L1710[22:52:02] <Flashfire> Oh this is cool
L1711[22:52:15] <Flashfire> I've needed this hundreds of times lol
L1712[22:52:15] <GenerousGuava> so you can inject your own function call inside the function
L1713[22:52:17] <capitalthree> the best thing and the worst thing
L1714[22:52:23] <GenerousGuava> its good and bad
L1715[22:52:27] <GenerousGuava> you should avoid it
L1716[22:52:29] <killjoy> bad in the wrong hands
L1717[22:52:34] <GenerousGuava> but in this case its the only real option
L1718[22:52:34] <capitalthree> it's good if you *really* need it
L1719[22:52:41] <capitalthree> but every time I thought I needed it, unascribed helped me find a way that I didn't
L1720[22:52:47] <Flashfire> Should be safe if I only want to render a custom effect for my own custom enchantment
L1721[22:52:48] <Flashfire> Right?
L1722[22:53:05] <GenerousGuava> I think so
L1723[22:53:06] <killjoy> I would like to go though my mixins and see what I really need
L1724[22:53:30] <killjoy> I have one which intercepts a call to GlStateManager
L1725[22:53:50] <Flashfire> So I need to make a coremod?
L1726[22:53:54] <GenerousGuava> you can just inject your code into renderItem in that class
L1727[22:53:58] <GenerousGuava> im checking something real quick
L1728[22:54:00] <Flashfire> Can someone summarize what a coremod is
L1729[22:54:12] <GenerousGuava> theres a check for model.isBuiltInRenderer()
L1730[22:54:18] <Flashfire> o.O
L1731[22:54:24] <killjoy> a coremod is a mod that modifies minecraft's core
L1732[22:54:27] <GenerousGuava> so you might be able to add a custom renderer
L1733[22:54:45] <killjoy> compared to a coremod, regular mods are just plugins
L1734[22:54:47] <Flashfire> Custom renderer would be cool
L1735[22:55:03] <Flashfire> I didn't know you could do what coremods do at all lol
L1736[22:55:09] <Flashfire> I've been limiting myself
L1737[22:55:21] <GenerousGuava> oh I see it's part of the model
L1738[22:55:29] <killjoy> There's one thing you need to do before tackling the task of making a coremod
L1739[22:55:29] <GenerousGuava> well you should limit yourself
L1740[22:55:30] <Flashfire> Item model?
L1741[22:55:39] <GenerousGuava> coremods are dangerous and should be avoided at all costs
L1742[22:55:43] <killjoy> read this. http://download.forge.objectweb.org/asm/asm4-guide.pdf
L1743[22:55:44] <Flashfire> Good to know
L1744[22:56:02] <Flashfire> Ain't nobody got time for that
L1745[22:56:04] <Flashfire> lol
L1746[22:56:15] <GenerousGuava> so the RenderItem takes in an IBakedModel
L1747[22:56:17] <Flashfire> I'll keep as reference tho
L1748[22:56:39] <killjoy> A good chunk of that document is white matter
L1749[22:56:41] <GenerousGuava> if you can override the Model you can make it return false on model.isBuiltInRenderer()
L1750[22:57:18] <GenerousGuava> nevermind
L1751[22:57:26] <Flashfire> Doesn't work?
L1752[22:57:35] <GenerousGuava> even custom models still have their rendering hardcoded
L1753[22:57:40] <Flashfire> Ah
L1754[22:57:50] <GenerousGuava> so you do need a coremod
L1755[22:58:01] <killjoy> ask yourself something first.
L1756[22:58:08] <killjoy> Can you generify it and get it added to forge?
L1757[22:58:17] <GenerousGuava> yea that would be the ideal way
L1758[22:58:26] <GenerousGuava> but for an immediate solution a coremod is the only way
L1759[22:58:35] <Flashfire> Do I have to know exactly how it would be done?
L1760[22:58:39] <Flashfire> Or can I just suggest it
L1761[22:58:51] <GenerousGuava> well if you suggest it itll probably take ages to get adapted
L1762[22:59:26] <GenerousGuava> one thing I could think of is to add a renderEffects() hook to Items
L1763[22:59:36] <GenerousGuava> but then.. hmm
L1764[22:59:42] <GenerousGuava> I'd have to think about how to do that
L1765[22:59:45] <GenerousGuava> since forge doesnt
L1766[22:59:53] <GenerousGuava> want you to use low level rendering
L1767[22:59:58] <Flashfire> Hm
L1768[23:00:30] <GenerousGuava> if you look at RenderItem.renderEffect its full of low level stuff
L1769[23:00:56] <Flashfire> I'm wondering if I should just avoid the effect thing for now
L1770[23:01:03] <GenerousGuava> Actually looking at each function call its not that low level
L1771[23:01:09] <Flashfire> I just want an indication from my item icon that it's been upgraded in a certain way
L1772[23:01:28] <Flashfire> Thought a render effect would be cool though
L1773[23:01:55] <GenerousGuava> well you could definately get that added to forge though
L1774[23:02:03] <Flashfire> Yeah
L1775[23:02:21] <GenerousGuava> youd just need to figure out how to properly abstract it
L1776[23:02:31] <GenerousGuava> and then forge can add the hook inside renderItem()
L1777[23:02:40] <Flashfire> Why don't I see this method you speak of
L1778[23:02:43] <killjoy> RenderItem wasn't good enough for me
L1779[23:03:16] <GenerousGuava> https://pastebin.com/tsrSCL14
L1780[23:03:37] <killjoy> I want to get rid of this line sometime. https://git.io/vQ6xQ
L1781[23:03:44] <GenerousGuava> its called inside this method https://pastebin.com/yfaxcrxk
L1782[23:03:52] <Flashfire> My code doesn't have that?
L1783[23:05:00] <GenerousGuava> wait that would actually work
L1784[23:05:03] <GenerousGuava> what killjoy did
L1785[23:05:14] <GenerousGuava> adding a custom layer
L1786[23:05:19] <Flashfire> Nvm was limiting myself to .java
L1787[23:05:30] <Flashfire> Oh killjoy
L1788[23:05:32] <Flashfire> You made that
L1789[23:05:36] <killjoy> updated
L1790[23:05:37] <Flashfire> My mod conflicts with yours xD
L1791[23:05:42] <killjoy> cool!
L1792[23:05:52] <Flashfire> We both replace the player's armor render class
L1793[23:05:56] <killjoy> If your mod changes the playermodel, I would expect that
L1794[23:05:59] <Flashfire> How can we resolves this
L1795[23:06:02] <Flashfire> resolve*
L1796[23:06:05] <killjoy> we dont'
L1797[23:06:08] <Flashfire> lol
L1798[23:06:28] <Flashfire> All mine does is make mine able to have animated armour
L1799[23:06:35] <killjoy> I need to replace nearly all the layers
L1800[23:06:48] <killjoy> animated armor?
L1801[23:06:50] <Flashfire> Yes
L1802[23:06:51] <killjoy> like textures?
L1803[23:06:53] <Flashfire> Mhm
L1804[23:06:57] <Flashfire> Using multiple images
L1805[23:07:06] <Flashfire> based on world time
L1806[23:07:06] <killjoy> Wouldn't that be in the model?
L1807[23:07:22] <GenerousGuava> cant you bind an animated texture to the model?
L1808[23:07:28] <Flashfire> I couldn't find a way
L1809[23:07:33] <Flashfire> Single images don't work
L1810[23:07:48] <Flashfire> Could I do a property override on armour model?
L1811[23:07:54] <Flashfire> I wouldn't think so
L1812[23:08:05] <GenerousGuava> minecraft supports animated textures
L1813[23:08:05] <killjoy> forge has a hook for it
L1814[23:08:24] <GenerousGuava> but i think killjoy might know more since hes actually done this stuff :P
L1815[23:08:35] <Flashfire> Animated entity textures I've never seen
L1816[23:08:50] <killjoy> doesn't optifine add that?
L1817[23:08:58] <Flashfire> I guess the wither shield is an animated layer though
L1818[23:09:10] <Flashfire> Not sure if it uses a single image
L1819[23:09:19] <GenerousGuava> well take a look at it :P
L1820[23:10:07] <Flashfire> Oh
L1821[23:10:15] <Flashfire> Single image but all fitting into one frame size bc it's small
L1822[23:10:24] <Flashfire> I have 36 frames so nope
L1823[23:10:52] <killjoy> Is that normal for you?
L1824[23:10:59] <Flashfire> Having 36 frames?
L1825[23:11:02] <killjoy> yes
L1826[23:11:03] <Flashfire> Yes
L1827[23:11:30] <Flashfire> https://media-elerium.cursecdn.com/attachments/210/347/8.png
L1828[23:11:43] <Flashfire> All these (except diamond rod) have 36 frames
L1829[23:12:03] <killjoy> Oh, I thought you meant fps
L1830[23:12:08] <Flashfire> Haha
L1831[23:12:13] <killjoy> You're thinking of icons
L1832[23:12:16] <killjoy> or sprites
L1833[23:12:34] <GenerousGuava> where did you find that wither texture that fits into one frame?
L1834[23:12:37] <Flashfire> Yeah and I need armour with 36 frames without replacing the player model if possible
L1835[23:12:42] <Flashfire> Yes I did
L1836[23:12:43] <GenerousGuava> i dont see the shield in here
L1837[23:12:48] <Flashfire> Mine cannot possibly fit into one frame
L1838[23:13:14] <Flashfire> Entities don't work with mcmeta so needs to be multiple images i think
L1839[23:13:30] <GenerousGuava> ah I see
L1840[23:13:35] <GenerousGuava> well you could use shaders maybe
L1841[23:13:48] <Flashfire> Is that possible?
L1842[23:13:49] <GenerousGuava> I think you can apply a custom shader to the player rendering
L1843[23:14:03] <GenerousGuava> I see shaders in the assets folder
L1844[23:14:07] <GenerousGuava> so should be able to add custom ones
L1845[23:14:55] <Flashfire> If only I knew the first thing about shaders : P
L1846[23:14:57] <GenerousGuava> i just looked for "Hooks"
L1847[23:15:06] <GenerousGuava> and CCLib adds an EntityRendererHooks class
L1848[23:15:27] <Flashfire> What is cclib
L1849[23:15:33] <GenerousGuava> CodeChickenLib
L1850[23:15:36] <GenerousGuava> jsut about every mod uses it
L1851[23:15:39] ⇦ Quits: Brokkoli (~Brokkoli@p5B23C80C.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))
L1852[23:15:42] <Flashfire> Mine doesn't lol
L1853[23:15:47] <Flashfire> I don't use any libs
L1854[23:15:52] <GenerousGuava> well complex mods usually use it
L1855[23:15:55] <Flashfire> Except default of course
L1856[23:15:59] <killjoy> some mods use it
L1857[23:16:05] <Flashfire> How do I add it?
L1858[23:16:21] <Flashfire> I mean, so it's included with my jar
L1859[23:16:29] <killjoy> it uses a dependency resolver
L1860[23:16:32] <GenerousGuava> no you have to add it through maven
L1861[23:16:42] <Flashfire> Never used maven : P
L1862[23:16:44] <GenerousGuava> compile "codechicken:CodeChickenLib:${config.minecraft_version}-${config.CCLIB_version}:deobf"
L1863[23:16:51] <GenerousGuava> inside your build.gradle dependencies
L1864[23:16:56] <Flashfire> Wow thanks
L1865[23:17:11] <Flashfire> And I just need to download the source so it works in the IDE?
L1866[23:17:18] <Flashfire> Or will gradle handle that on setupdecompworkspace
L1867[23:17:27] <GenerousGuava> one sec
L1868[23:17:31] <covers1624> It will auto download the source
L1869[23:17:37] <GenerousGuava> I need to find all the relevant stuff in my files :P
L1870[23:18:10] <Flashfire> Cool
L1871[23:18:11] <GenerousGuava> gradle.properties needs all the variables in that bit of code
L1872[23:18:12] <GenerousGuava> CCLIB_version=2.7.0+
L1873[23:18:17] <GenerousGuava> and all the others
L1874[23:18:21] <Flashfire> Looking forward to checking out this library
L1875[23:18:23] <GenerousGuava> depending on your versions obv
L1876[23:18:31] <covers1624> 3.0.0 for 1.11 3.1.0 for 1.12
L1877[23:18:39] <Flashfire> ${config.CCLIB_version}
L1878[23:18:42] <Flashfire> I have to set this up right
L1879[23:18:45] <killjoy> what does ccl even provide?
L1880[23:18:47] <GenerousGuava> this one in your repo
L1881[23:18:48] <GenerousGuava> maven {
L1882[23:18:48] <GenerousGuava> name 'CB Maven'
L1883[23:18:48] <GenerousGuava> url "http://chickenbones.net/maven/&quot;
L1884[23:18:48] <GenerousGuava> }
L1885[23:19:11] <GenerousGuava> you need to put CCLIB_VERSION=2.7.0+ in your gradle.properties
L1886[23:19:19] <Flashfire> Thanks
L1887[23:19:30] <GenerousGuava> I think I use a custom loader for my config
L1888[23:19:44] <GenerousGuava> in default its just $CCLIB_VERSION i think
L1889[23:20:23] <GenerousGuava> worst case scenario add this code into your build.gradle https://pastebin.com/sgRqScVH
L1890[23:20:37] <killjoy> no
L1891[23:20:40] <killjoy> don't use that!
L1892[23:20:47] <GenerousGuava> why not?
L1893[23:20:59] <killjoy> gradle.properties is done automatically
L1894[23:21:13] <GenerousGuava> I know I said worst case scenario :P
L1895[23:21:20] <GenerousGuava> this aliases it as config
L1896[23:21:30] <killjoy> worst case: update gradle :)
L1897[23:21:45] <killjoy> you could just use ext.config = ext
L1898[23:21:47] <GenerousGuava> i just copied it out of Draconic Evolution
L1899[23:21:58] <GenerousGuava> I don't know muhc about gralde :P
L1900[23:22:05] <covers1624> *cough* https://github.com/TheCBProject/CodeChickenLib/blob/master/build.gradle#L23-L31 I should probably update that then...
L1901[23:22:26] <killjoy> That's using build.properties
L1902[23:22:33] <killjoy> which does not auto-import
L1903[23:22:39] <GenerousGuava> right
L1904[23:22:43] <covers1624> Ah, close enough :D
L1905[23:22:43] <Flashfire> > Could not get unknown property 'config' for object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.
L1906[23:22:47] <Flashfire> Wat
L1907[23:22:51] <GenerousGuava> I just tend to copy my gradle stuff from other mods :P
L1908[23:23:10] <Flashfire> Won't accept config vars in dependencies?
L1909[23:23:16] <killjoy> just use gradle.properties and access it using ext
L1910[23:23:18] <GenerousGuava> yea replace all the ${config.somethign} with ${something}
L1911[23:23:24] <Flashfire> Ok ty
L1912[23:23:33] <killjoy> it's good habit to use ext.something
L1913[23:23:46] <killjoy> mainly in the buildscript
L1914[23:23:53] <Flashfire> ext?
L1915[23:24:01] <killjoy> maybe you have a property named build.number
L1916[23:24:06] <Flashfire> Is that something you type?
L1917[23:24:14] <killjoy> you can't access that by calling build.number because task build has no property number
L1918[23:24:26] <Flashfire> Yeah removing config didn't help ; P
L1919[23:24:28] <killjoy> ext is a property container
L1920[23:24:43] <covers1624> Flashfire, If you have any questions about CCL feel free to pm me, im the maintainer.
L1921[23:25:02] <Flashfire> Thank you
L1922[23:25:05] <GenerousGuava> well use ${ext.something} then
L1923[23:25:09] <Flashfire> I will
L1924[23:25:39] <Flashfire> Cannot get property 'minecraft_version' on extra properties extension as it does not exist
L1925[23:25:52] <Flashfire> Do I have to put this in my gradle.properties manually
L1926[23:25:56] <killjoy> is it in your gradle.properties?
L1927[23:25:59] <Flashfire> Nope
L1928[23:26:05] <GenerousGuava> yea you have to add it to your gradle.properties
L1929[23:26:06] <killjoy> it needs to be
L1930[23:26:09] <Flashfire> Ok
L1931[23:26:16] <killjoy> the mc-dev intellij plugin will set this up for you
L1932[23:26:20] <Flashfire> So 1.12 is all it needs to be?
L1933[23:26:31] <killjoy> don't forget to use 2.3 as the forgegradle version
L1934[23:26:42] <GenerousGuava> if you make a habit of putting all versions inside your gradle.properties youll rarely have to touch your build.gralde
L1935[23:27:49] <GenerousGuava> ext.something doesnt seem to work for me
L1936[23:27:55] <GenerousGuava> Error:(47, 0) Cannot get property 'minecraft_version' on extra properties extension as it does not exist
L1937[23:27:55] <GenerousGuava> <a href="openFile:D:\OneDrive\Coding\JavaProjects\MyMods\FruityLib\build.gradle">Open File</a>
L1938[23:27:56] <Flashfire> > Cannot get property 'minecraft_version' on extra properties extension as it does not exist
L1939[23:28:02] <Flashfire> ext doesn't work for me yeah
L1940[23:28:47] <GenerousGuava> any idea what might be causing that?
L1941[23:28:58] <GenerousGuava> I dont know much about gradle I just copy from other mods :P
L1942[23:29:01] <killjoy> possibly gradle.properties.txt
L1943[23:29:51] <Flashfire> Also should I be using compile "codechicken:CodeChickenLib:${ext.minecraft_version}-${ext.CCLIB_version}:deobf" or deobfCompile "codechicken:CodeChickenLib:${ext.minecraft_version}-${ext.CCLIB_version}"
L1944[23:30:09] <GenerousGuava> I can never get the latter to work for me
L1945[23:30:14] <Flashfire> Ok
L1946[23:30:26] <Flashfire> But yeah ext doesn't work and config doesn't work
L1947[23:30:39] <GenerousGuava> maven yells at me cause it cant find deobf.codechicken:CodeChickenLib
L1948[23:31:00] <GenerousGuava> :deobf at the end works perfectly fine
L1949[23:31:18] <killjoy> using deobfCompile?
L1950[23:31:23] <GenerousGuava> yea
L1951[23:31:24] <covers1624> You need to specify :universal if you want to use deobfCompile
L1952[23:31:32] <GenerousGuava> ah i see
L1953[23:31:38] <covers1624> well for CCL atleast
L1954[23:31:40] <Flashfire> Is that the better option?
L1955[23:31:44] <Flashfire> Or same thing
L1956[23:31:52] <covers1624> avoids mcp mapping conflicts
L1957[23:31:58] <Flashfire> Cool
L1958[23:32:03] <covers1624> CCL uses what ever mappings forge uses.
L1959[23:32:13] <covers1624> so sometimes it can be a little out of date
L1960[23:32:14] <killjoy> Those are always outdated
L1961[23:32:25] <GenerousGuava> well I still have the issue of ext not working :P
L1962[23:32:26] <killjoy> Last time it updated, it was outdated
L1963[23:32:27] <covers1624> yeah.. side effect of my dev env..
L1964[23:32:37] <Flashfire> deobfCompile it is
L1965[23:32:45] <covers1624> yep
L1966[23:32:47] <killjoy> GenerousGuava, use the mc-dev intellij plugin
L1967[23:33:14] <Flashfire> Now if only I could figure out how to access my config xD
L1968[23:33:16] <GenerousGuava> I have a plugin called Minecraft Development
L1969[23:33:18] <GenerousGuava> is that the one?
L1970[23:33:27] <killjoy> yes.
L1971[23:33:32] <killjoy> Use that to create a new minecraft project
L1972[23:33:47] <covers1624> Flashfire, are you working with 1.12 or 1.11?
L1973[23:33:50] <Flashfire> 1.12
L1974[23:33:58] <GenerousGuava> Well I'd rather not redo all my setup for the multi module project :P
L1975[23:34:09] <GenerousGuava> think ill stick with the manual config load
L1976[23:34:15] <covers1624> the version stated before for ccl was incorrect, 3.1.0.+ for 1.12 ccl.
L1977[23:34:22] <Flashfire> Thanks
L1978[23:34:44] <Flashfire> Would've caused issues xD
L1979[23:35:26] <GenerousGuava> well you can always just use https://pastebin.com/sgRqScVH for now
L1980[23:35:34] <GenerousGuava> and use config instead of ext
L1981[23:35:54] <Flashfire> Or I could just put them in
L1982[23:36:01] <Flashfire> Not sure which is worse
L1983[23:36:05] <GenerousGuava> so it's working for you now?
L1984[23:36:08] <Flashfire> Not yet
L1985[23:36:14] <GenerousGuava> oh I get what you mean
L1986[23:36:20] <GenerousGuava> this bit of code is super simple
L1987[23:36:28] <Flashfire> killjoy says it's bad so idk
L1988[23:36:30] <GenerousGuava> just paste it right above your project.version etc
L1989[23:36:44] <GenerousGuava> its just a tiny bit of extra code thats run on build :P
L1990[23:36:47] <Flashfire> Ok
L1991[23:37:02] <GenerousGuava> and as you could see CCLib uses it too
L1992[23:37:05] <killjoy> And I'm saying it's not needed
L1993[23:37:13] <Flashfire> "project.ext"
L1994[23:37:18] <Flashfire> Should I just use that?
L1995[23:37:20] <killjoy> gradle will automatically import gradle.properties
L1996[23:37:27] <GenerousGuava> I know it shouldn't be
L1997[23:37:34] <GenerousGuava> but its not working for either of us
L1998[23:37:35] <killjoy> when in doubt, project.
L1999[23:37:58] <killjoy> many other objects have their own ext, so you might be accessing that
L2000[23:38:00] <Flashfire> Nope
L2001[23:38:02] <Flashfire> Did not work lol
L2002[23:38:09] <killjoy> have a github repo?
L2003[23:38:15] <Flashfire> Yes
L2004[23:38:29] <Flashfire> https://github.com/Samuel-Harbord/SpectriteMod/
L2005[23:39:01] <killjoy> Can you pusH?
L2006[23:39:12] <killjoy> (find a level that fits me)
L2007[23:39:19] <Flashfire> What do you mean?
L2008[23:39:26] <Flashfire> Commit my current unfinished changes?
L2009[23:39:37] <killjoy> to a new branch if you like
L2010[23:39:51] <Flashfire> I'd rather not tbh
L2011[23:39:55] <GenerousGuava> damn new minecraft project takes forever
L2012[23:40:04] <GenerousGuava> is it doing setupDecompWorkspace?
L2013[23:40:14] <killjoy> yes
L2014[23:40:18] <GenerousGuava> that explains it :P
L2015[23:42:10] <Flashfire> A problem occurred evaluating root project 'spectritemod-1.12'.
L2016[23:42:10] <Flashfire> > Supplied String module notation 'codechicken:CodeChickenLib:[:]-[:]:universal' is invalid. Example notations: 'org.gradle:gradle-core:2.2', 'org.mockito:mockito-core:1.9.5:javadoc'.
L2017[23:42:18] <Flashfire> Even the extra code is blanking out my property values
L2018[23:42:29] <killjoy> looks like an empty map
L2019[23:42:48] <killjoy> [:] is the toString() of an empty map
L2020[23:43:01] <Flashfire> Well my properties are in there
L2021[23:43:18] <killjoy> you know that you can use $minecraft.version, right?
L2022[23:43:30] <Flashfire> Didn't know I could use that here
L2023[23:43:50] <killjoy> as long as you've set it
L2024[23:45:06] <Flashfire> Forget the properties for now
L2025[23:45:14] <Flashfire> Ill just set the cclib part in the line
L2026[23:45:28] <Flashfire> > Could not find any matches for codechicken:CodeChickenLib:1.12-3.1.0+ as no versions of codechicken:CodeChickenLib are available.
L2027[23:45:40] <Flashfire> covers1624
L2028[23:45:44] <covers1624> err
L2029[23:45:45] <covers1624> one sec
L2030[23:45:57] <covers1624> 0.+ not 0+
L2031[23:46:01] <Flashfire> Thanks
L2032[23:46:25] <Flashfire> Same error tho
L2033[23:46:37] <covers1624> probably not the same
L2034[23:46:40] <covers1624> post it again
L2035[23:46:47] <Flashfire> A problem occurred configuring root project 'spectritemod-1.12'.
L2036[23:46:48] <Flashfire> > Could not resolve all dependencies for configuration ':deobfCompile'.
L2037[23:46:48] <Flashfire> > Could not find any matches for codechicken:CodeChickenLib:1.12-3.1.0.+ as no versions of codechicken:CodeChickenLib are available.
L2038[23:47:10] <covers1624> post your deobfCompile line
L2039[23:47:21] <Flashfire> deobfCompile "codechicken:CodeChickenLib:$minecraft.version-3.1.0.+:universal"
L2040[23:47:44] <GenerousGuava> i got it to work now
L2041[23:47:51] <GenerousGuava> using project.something
L2042[23:47:53] <GenerousGuava> instead of ext.something
L2043[23:47:55] <Flashfire> Nice
L2044[23:48:39] <covers1624> Oh, do you have the repo added?
L2045[23:48:54] <GenerousGuava> i did post the repo :P
L2046[23:49:00] <GenerousGuava> maven {
L2047[23:49:00] <GenerousGuava> name 'CB Maven'
L2048[23:49:00] <GenerousGuava> url "http://chickenbones.net/maven/&quot;
L2049[23:49:00] <GenerousGuava> }
L2050[23:49:00] <Flashfire> I suppose I don't
L2051[23:49:17] <covers1624> Something like that: http://ss.covers1624.net/g7jts2x.png
L2052[23:49:52] <Flashfire> Cool, thanks
L2053[23:50:42] <GenerousGuava> did groovy really name it's string class GString?
L2054[23:50:42] <Flashfire> Welp
L2055[23:50:44] <Flashfire> Worked
L2056[23:50:48] <Flashfire> Oh come on
L2057[23:50:51] <GenerousGuava> did no one ever say that out loud? :P
L2058[23:50:56] <Flashfire> They had to have known what they were doing
L2059[23:52:20] <GenerousGuava> btw I just noticed a decent enough advantage to using Kotlin over Java
L2060[23:52:40] <GenerousGuava> since you don't need to write Java code you can just compile to Java 6
L2061[23:52:57] <Flashfire> I guess that is an advantage
L2062[23:53:03] <GenerousGuava> which means more compatiblity
L2063[23:53:20] <Flashfire> Too bad mc 1.12 is java 8 only
L2064[23:53:23] <Flashfire> So no diff
L2065[23:53:34] <GenerousGuava> I just remembered cause I saw the whole 1.8 thing in my build.gradle :P
L2066[23:53:43] <GenerousGuava> fair enough :P
L2067[23:53:54] <GenerousGuava> I think everyone has Java 8 at this point anyways
L2068[23:54:04] <covers1624> J8 is amazing
L2069[23:54:38] <Flashfire> stream ftw
L2070[23:54:43] <GenerousGuava> pff
L2071[23:55:03] <GenerousGuava> kotlin has the exact same thing as stream but for all iterables :P
L2072[23:55:20] <Flashfire> Also what replaces mainConfigGuiClass in gui factory
L2073[23:55:24] <Flashfire> I updated forge and it's gone
L2074[23:55:49] <covers1624> you just return a new instance of your config gui class
L2075[23:56:02] ⇨ Joins: Ipsis (~Ipsis@82-69-71-184.dsl.in-addr.zen.co.uk)
L2076[23:56:23] <GenerousGuava> I dont even know what the config GUI is :P
L2077[23:56:24] <Flashfire> The whole method is gone though, where do I return it
L2078[23:56:37] <covers1624> the new method that was added
L2079[23:57:17] <Flashfire> I'm not seeing it
L2080[23:57:21] <covers1624> https://github.com/CoFH/ThermalExpansion/blob/master/src/main/java/cofh/thermalexpansion/gui/GuiConfigTEFactory.java#L26
L2081[23:57:57] <Flashfire> Oh I'm already using that
L2082[23:58:16] <Flashfire> Not in the same way though
L2083[23:58:17] <covers1624> right was added in 1.11 at some stage, then the old method was nuked in 1,12
<<Prev Next>> Scroll to Top