<<Prev Next>> Scroll to Bottom
Stuff goes here
L1[00:00:12] <TheUnknownFew> sounds like it.
L2[00:00:28] <killjoy> Anyway, take mc.getResourceManager(), cast to IReloadableResourceManager
L3[00:00:45] <killjoy> then call registerReloadListener
L4[00:00:56] <killjoy> If forge ATs resourceManager, you shouldn't need to cast
L5[00:01:33] <killjoy> examples of this are the SoundManager
L6[00:01:41] <TheUnknownFew> registerReloadListener? Do you mean onResourceManagerReload ?
L7[00:01:45] <killjoy> e.g. sounds.json
L8[00:01:57] <killjoy> no, register
L9[00:02:03] <TheUnknownFew> where is that method?
L10[00:02:08] <TheUnknownFew> I am not seeing it
L11[00:02:21] <killjoy> IReloadableResourceManager::registerReloadListener
L12[00:02:41] <TheUnknownFew> ahh, there it is
L13[00:03:20] <TheUnknownFew> Where would these merged resources be stored?
L14[00:04:01] <TheUnknownFew> or is that up to me to decide?
L15[00:04:05] <killjoy> yes
L16[00:04:49] <killjoy> you create a dynamic resource based on what's provided
L17[00:04:55] <killjoy> you shouldn't need to store it back in the resources
L18[00:05:00] <killjoy> nor can you
L19[00:05:08] <killjoy> create a field and put it there.
L20[00:05:49] <TheUnknownFew> The only kinds of resources i'm storing/merging are jsons and .langs
L21[00:06:01] <killjoy> .langs should be done automatically
L22[00:06:27] <killjoy> See SoundHandler for .json example
L23[00:06:32] <TheUnknownFew> Alright
L24[00:06:48] <TheUnknownFew> Thanks. I'll copy this for later. It is 1am so I'm going to get going to bed
L25[00:11:13] *** TTFTCUTS is now known as TTFT|Away
L26[00:20:58] ⇦ Quits: TheUnknownFew (~TheUnknow@2601:547:c400:78b6:4dcd:66e3:e79a:8fc) (Quit: Leaving)
L27[00:21:06] ⇨ Joins: Ashindigo_ (uid202308@id-202308.hathersage.irccloud.com)
L28[00:22:44] <SatanicSanta> Weird issue. This happens for at least the mold and crucible (both in picture) https://images.discordapp.net/.eJwVxUEOhCAMAMC_8ACqVqH4G4IEjdoSqNnDZv--cS7zNU-7zGp21dpXgO3oSdpmu0qLJdsiUq4c69Ftkhuiakz7nVk7jIEWROeHOdC7I5j8iEsYHKFH72nGCR4-WT5sKxfz-wMLHiL5.AqKKw6hsez55pYtO8DNJSTaR24o No clue what is the cause, other than that it only happens when not in peaceful mode
L29[00:22:48] <SatanicSanta> The relevant code is all in https://github.com/Esteemed-Innovation/Esteemed-Innovation/tree/1.10/src/main/java/eiteam/esteemedinnovation/metalcasting
L30[00:24:43] <McJty> Looks like you forgot to set one of the GLStates correctly
L31[00:25:30] <McJty> Probably blending
L32[00:25:48] <SatanicSanta> I'm curious why that would only impact non-peaceful mode
L33[00:25:51] <Falconerd> yay more steam powered stuff!
L34[00:26:07] <McJty> Perhaps because in non-peaceful a mob sets a GL state differently. Not sure
L35[00:26:14] <SatanicSanta> hm
L36[00:33:13] <SatanicSanta> McJty: Thanks. Had to disableBlend
L37[00:33:48] *** fry|sleep is now known as fry
L38[00:39:12] <Denyol> what happened to addCraftingToCrafters in Container
L39[00:41:34] <SatanicSanta> its now the listener shit iirc
L40[00:41:44] <SatanicSanta> addListeners
L41[00:41:51] <SatanicSanta> could be wrong but im pretty sure thats what it is
L42[00:42:03] <Denyol> i have no clue what it does, but a guide im following uses it...
L43[00:42:05] <SatanicSanta> McJty: btw https://github.com/McJty/TheOneProbe/issues/104#issuecomment-273051980
L44[00:43:12] <McJty> Hmm that ticket doesn't seem to have anything to do with The One Probe
L45[00:43:34] <Denyol> do I need to do listener.sendAllWindowProperties(); on my Container?
L46[00:43:42] <SatanicSanta> McJty: It only happens when using a probe
L47[00:44:11] <SatanicSanta> Denyol: In my one container I don't do anything with listeners
L48[00:44:12] <Barteks2x> I realized I have a problem with cubic chunks... the world save will be about 2x bigger than in vanilla. 2MB minimum just for heightmap information for new world, and it has to be separate and uncompressed. So my uqestion is: would 2x bigger world saves be acceptable?
L49[00:44:14] <McJty> Ah there are multiple unrelated crashes in that log
L50[00:45:05] <Denyol> what do listeners do? SatanicSanta
L51[00:46:39] <SatanicSanta> listens to changes in the container? idk, i havent had to use them :P
L52[00:47:05] ⇨ Joins: Toluene (~Genuine@104.156.228.112)
L53[00:47:28] <Denyol> hm ok
L54[00:49:42] ⇦ Quits: Genuine (~Genuine@104.156.228.112) (Ping timeout: 206 seconds)
L55[00:54:58] <McJty> SatanicSanta, that's a very confusing stacktrace. I'm still not convinced it is The One Probe. What's about this: at net.minecraftforge.common.ForgeHooks.onPlaceItemIntoWorld(ForgeHooks.java:780) ~[ForgeHooks.class:?]
L56[00:55:07] <McJty> The crash seems to occur when an item is placed in the world
L57[00:55:13] <McJty> And then it is crashing in esteemedinnovation
L58[00:55:14] <SatanicSanta> no thats unrelated
L59[00:55:18] ⇦ Quits: bjorguv (~reidboyce@c-73-83-133-41.hsd1.wa.comcast.net) (Quit: bjorguv)
L60[00:55:23] <SatanicSanta> at least i think it is
L61[00:55:30] <McJty> Are you sure? Because TOP crashes *right* after that
L62[00:55:42] <SatanicSanta> i can throw the one probe into my dev environment and get you a cleaner log if you want
L63[00:55:49] <McJty> yes that would be great
L64[00:57:34] ⇦ Quits: ouTPhaze (~ouTWork@wsip-68-15-100-185.ok.ok.cox.net) (Ping timeout: 194 seconds)
L65[01:00:07] <SatanicSanta> McJty: https://paste.ee/p/V2jXl
L66[01:00:10] <Denyol> hmm my container is eating up my items...
L67[01:01:14] <McJty> SatanicSanta, again: ForgeHooks.onPlaceItemIntoWorld
L68[01:01:18] <McJty> What item are you placing?
L69[01:01:26] <SatanicSanta> spawn villager
L70[01:01:44] <McJty> Any villager?
L71[01:01:48] <McJty> Or just a specific one
L72[01:02:02] <SatanicSanta> the villager spawn egg from vanilla
L73[01:02:05] <SatanicSanta> so yeah any villager
L74[01:02:36] <McJty> hmm, that's weird because I know villagers work fine for top
L75[01:02:42] <McJty> I mean I look at them all the time in my LP
L76[01:03:17] <McJty> Let me see what happens in my TOP dev env
L77[01:03:23] <McJty> Switching it to 1.10 right now
L78[01:04:35] <SatanicSanta> I'm pretty sure it's because I return null from writeNBT in VillagerDataStorage
L79[01:04:43] <SatanicSanta> as i mentioned in the issue comment i linked earlier
L80[01:04:48] ⇨ Joins: bjorguv (~reidboyce@c-73-83-133-41.hsd1.wa.comcast.net)
L81[01:05:08] <McJty> hmm
L82[01:05:20] <SatanicSanta> it doesn't happen if I return an empty NBTTagCompound
L83[01:05:21] <McJty> Problem is that I don't see what I can do about that.
L84[01:05:34] <SatanicSanta> expect null?
L85[01:05:41] <McJty> The code is not my code
L86[01:05:45] <SatanicSanta> welp
L87[01:05:46] <McJty> I'm just persisting NBT of the entity
L88[01:06:49] <McJty> What is that VillagerDataStorage exactly?
L89[01:06:54] <McJty> What kind of thing?
L90[01:07:50] <McJty> SatanicSanta, what TOP does to get the entity info is to call: entityNBT = entity.serializeNBT();
L91[01:08:00] <McJty> So it is entity.serializeNBT() that seems to do the wrong thing there
L92[01:08:06] <McJty> But I have no control over that
L93[01:08:26] <SatanicSanta> McJty: https://github.com/Esteemed-Innovation/Esteemed-Innovation/blob/1.10/src/main/java/eiteam/esteemedinnovation/armor/tophat/VillagerDataStorage.java
L94[01:08:27] <McJty> Are you sure you are using that 'VillagerDataStorage' (whatever that is) correct?
L95[01:08:28] <killjoy> I wonder who uploaded this. https://mvnrepository.com/artifact/net.minecraft/server
L96[01:08:37] <SatanicSanta> McJty: According to its docs, yes.
L97[01:09:05] ⇦ Quits: Kaiyouka (~IdiotNono@c-75-71-231-133.hsd1.co.comcast.net) (Ping timeout: 384 seconds)
L98[01:09:07] <SatanicSanta> The writeNBT docs say that it should return null if no data should be stored
L99[01:09:40] <McJty> I never used that but I'm not convinced that that comment is right here
L100[01:09:45] <McJty> Especially not in this particular case
L101[01:10:02] <McJty> And seems I cannot do anything about it really so ...
L102[01:10:22] <SatanicSanta> Okay so it's a forge issue
L103[01:10:44] <mezz> what calls writeNBT?
L104[01:11:10] <McJty> TOP calls entity.serializeNBT()
L105[01:11:18] <McJty> I suppose something in there will call that writeNBT
L106[01:11:34] <mezz> https://github.com/Esteemed-Innovation/Esteemed-Innovation/blob/ceddf3cb5fc15be4bf9b0da06e559872ef989ac3/src/main/java/eiteam/esteemedinnovation/armor/tophat/VillagerDataSerializer.java#L22-L25
L107[01:11:54] <mezz> serializeNBT has no comment saying it can return null
L108[01:12:17] <SatanicSanta> serializeNBT has no documentation
L109[01:12:35] <SatanicSanta> most usages I've seen just call writeNBT
L110[01:12:44] <SatanicSanta> so I think it's logical to assume it can return whatever writeNBT can return
L111[01:12:51] <SatanicSanta> if not idk what to do
L112[01:13:01] <mezz> return an empty nbt and see what happens
L113[01:13:12] <mezz> ?
L114[01:13:12] ⇦ Quits: Brokkoli (~Brokkoli@p5B23C6BC.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))
L115[01:13:36] <mezz> yeah looking at usages of serializeNBT here, it absolutely cannot be null
L116[01:13:50] <mezz> look at CapabilityDispatcher.areCompatible
L117[01:14:04] <mezz> it treats them as nonnull there
L118[01:14:12] <mezz> I think it's reasonable to assume it's nonnull
L119[01:14:46] ⇦ Quits: Toluene (~Genuine@104.156.228.112) (Read error: Connection reset by peer)
L120[01:15:26] ⇨ Joins: Genuine (~Genuine@104.156.228.112)
L121[01:16:55] ⇦ Quits: Doty1154 (~Doty1154@2601:648:8000:134f:cdb3:c2e8:7ee8:76df) (Quit: Leaving)
L122[01:19:21] <SatanicSanta> yeah so that prevented the crash
L123[01:19:34] <SatanicSanta> but im not sure if functionally itll be the same
L124[01:23:39] <SatanicSanta> I'm not actually sure the feature this is for even works yet, but since this prevents the crash I suppose I'll consider it fixed
L125[01:24:17] <McJty> ok thanks
L126[01:25:05] ⇦ Quits: bjorguv (~reidboyce@c-73-83-133-41.hsd1.wa.comcast.net) (Quit: bjorguv)
L127[01:25:31] <Barteks2x> ByteBuffer toString is so unhelpful... java.lang.AssertionError: Reading array 0 after writing 0 expected: java.nio.HeapByteBuffer<java.nio.HeapByteBuffer[pos=0 lim=1130 cap=1130]> but was: java.nio.HeapByteBuffer<java.nio.HeapByteBuffer[pos=0 lim=1130 cap=1130]>
L128[01:34:37] <Denyol> all of my containers have for whatever reason stopped showing the contents of their items in the slots, when you add them it just goes in and dissapears
L129[01:37:13] <Barteks2x> why Integer.SIZE isn't named Integer.BITS...
L130[01:38:30] <killjoy> that would be confusing
L131[01:39:16] <Barteks2x> Integer.SIZE is 32, and I used it when I wanted to use Intger.BYTES, and got very confusing results
L132[01:48:22] ⇦ Quits: Umbraco (~Umbraco@113x37x12x233.ap113.ftth.ucom.ne.jp) ()
L133[01:52:10] ⇦ Quits: Larry1123 (Larry1123@irc.larry1123.net) (Ping timeout: 194 seconds)
L134[01:55:24] <Kasran> So I'm feeling really stupid right now - Do I have to make a new copy of the Forge MDK every time I want to make a new mod project? None of the tutorials make that clear.
L135[01:57:46] ⇦ Quits: kinggoesgaming (uid23106@id-23106.tooting.irccloud.com) (Quit: Connection closed for inactivity)
L136[01:58:25] ⇨ Joins: Larry1123 (Larry1123@irc.larry1123.net)
L137[01:59:06] <Kasran> oh I see
L138[01:59:08] <Kasran> never mind
L139[02:00:03] <MCPBot_Reborn> [TEST CSV] Pushing snapshot_20170122 mappings to Forge Maven.
L140[02:00:27] <MCPBot_Reborn> [TEST CSV] Maven upload successful for mcp_snapshot-20170122-1.11.zip (mappings = "snapshot_20170122" in build.gradle).
L141[02:00:38] <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/
L142[02:09:34] *** Darkevilmac is now known as DarkevilAway
L143[02:10:25] ⇨ Joins: Hunterz (~hunterz@62.182.234.189)
L144[02:18:38] ⇦ Quits: Larry1123 (Larry1123@irc.larry1123.net) (Ping timeout: 206 seconds)
L145[02:20:34] ⇨ Joins: TechnicianLP (~Technicia@p4FE5614B.dip0.t-ipconnect.de)
L146[02:21:45] ⇨ Joins: Naiten (Naiten@5.143.38.44)
L147[02:31:07] ⇦ Quits: Ashindigo_ (uid202308@id-202308.hathersage.irccloud.com) (Quit: Connection closed for inactivity)
L148[02:31:50] ⇨ Joins: Larry1123 (Larry1123@irc.larry1123.net)
L149[02:39:40] ⇦ Quits: McJty (~jorrit@94-224-154-146.access.telenet.be) (Quit: Leaving)
L150[02:41:56] ⇦ Quits: Larry1123 (Larry1123@irc.larry1123.net) (Ping timeout: 180 seconds)
L151[02:44:21] <Naiten> So, how do I run dev environment with side mods?
L152[02:44:41] <Naiten> just putting them into mods folder crashes the game
L153[02:45:13] <Naiten> since fields in side mod are obfuscated, but not in my mod/env
L154[02:46:33] <Barteks2x> either find dev version of the mod, or use BON2
L155[02:48:11] <Denyol> whats BON2?
L156[02:48:28] <Barteks2x> https://github.com/tterrag1098/BON2
L157[02:48:56] <Barteks2x> it can deobfuscate mods from srg names to readable mcp names
L158[02:49:08] <Barteks2x> (and maybe other things)
L159[02:49:10] ⇨ Joins: Larry1123 (Larry1123@irc.larry1123.net)
L160[02:49:51] <killjoy> latest forge should automatically deobfuscate srg named mods
L161[02:50:17] <Elec0> what's srg mean?
L162[02:50:22] <killjoy> searge names
L163[02:50:24] <Denyol> Yeh I could't get mods to run in my mods folder either
L164[02:50:25] <Barteks2x> all mods I tried just worked
L165[02:50:28] <killjoy> e.g. func_123456_a
L166[02:50:36] <Barteks2x> \but some mods apparently don't work
L167[02:50:43] <killjoy> it's the default mappings used for mods
L168[02:50:53] <Kasran> How would one go about modifying how the difficulty settings affect health and hunger? Namely, I'm trying to affect how fast your hunger bar depletes.
L169[02:51:06] <killjoy> probably saturation
L170[02:51:55] ⇨ Joins: iari (~iari___@tyaralin.shadowdrake.eu)
L171[02:52:57] <Kasran> The specific thing I want to do is make it so that your hunger bar depletes in Peaceful mode. There was a mod for 1.7 and 1.8, Harder Peaceful, that did this, but it hasn't gotten updated for years.
L172[02:53:15] <Naiten> Y U ppl NO write not just the mod version, but which MC is it for...
L173[02:53:25] <Kasran> (If someone knows of a mod that already implements this, let me know.)
L174[02:53:29] <killjoy> I have a fix for that.
L175[02:53:46] <killjoy> in your buildscript: jar.appendix = minecraft.version
L176[02:54:15] <killjoy> or maybe preferably, jar.classifier = "mc$minecraft.version"
L177[02:54:34] ⇨ Joins: Ipsis (~Ipsis@82-69-71-184.dsl.in-addr.zen.co.uk)
L178[02:55:11] <killjoy> Naiten, I think one of the reasons not everybody includes that is because it may work on other versions.
L179[02:55:35] <Barteks2x> then the solution is to include a version range in name
L180[02:55:42] <Naiten> killjoy, mods don't usually work on more than one version
L181[02:55:47] <killjoy> they can
L182[02:55:49] <Naiten> and idk if BON does that
L183[02:55:59] <Naiten> it stated nowhere
L184[02:56:23] <killjoy> it's just that major mc versions are more likely to break than minor
L185[02:56:30] <killjoy> but not all the time
L186[02:57:50] <Barteks2x> urgh... I hate java. Is it compiler that is wrong or IDE when IDE doesn't show type inference error but compiler shows error?
L187[02:58:06] <killjoy> using java 6?
L188[02:58:10] <Barteks2x> java 8
L189[02:58:14] <killjoy> show code
L190[02:58:16] ⇦ Quits: Larry1123 (Larry1123@irc.larry1123.net) (Ping timeout: 206 seconds)
L191[02:59:27] <killjoy> (intellij supports quick gists)
L192[03:00:02] *** MrKick|Away is now known as MrKickkiller
L193[03:00:27] <Barteks2x> http://pastebin.com/iJWCstDg
L194[03:00:41] <Kasran> grah >:I someone else made a mod that does what I want... but hasn't updated it to 1.11 yet!
L195[03:00:53] <killjoy> open source, Kasran ?
L196[03:01:17] <Kasran> Indeed
L197[03:01:29] <Kasran> It's called Hunger in Peace and it's based on AppleCore
L198[03:01:31] <killjoy> Barteks2x, is it the builder you're having a problem with?
L199[03:01:38] <Kasran> but because AppleCore hasn't been updated, neither has it
L200[03:01:48] <Barteks2x> this like shows error: return new CachedRegionProvider<>(SimpleRegionProvider.createDefault(directory, sectorSize), maxSize);
L201[03:02:15] <killjoy> builders have problems with implying types sometimes
L202[03:02:41] ⇨ Joins: Larry1123 (Larry1123@irc.larry1123.net)
L203[03:02:44] <killjoy> http://stackoverflow.com/questions/6433275/factory-method-returning-builder-does-not-compile-with-generics-what-is-wrong
L204[03:03:19] <Barteks2x> so is it IDE bug that it doesn't show the error?
L205[03:03:23] <killjoy> it's java
L206[03:03:35] <killjoy> error?
L207[03:03:45] <killjoy> so your ide sees it fine?
L208[03:03:49] <Barteks2x> yes
L209[03:03:49] ⇨ Joins: Kaiyouka (~IdiotNono@c-75-71-231-133.hsd1.co.comcast.net)
L210[03:03:54] <killjoy> using?
L211[03:03:59] <shadekiller666> is the maven down again?
L212[03:04:03] <Barteks2x> version? or what?
L213[03:04:08] <shadekiller666> 1.10.2
L214[03:04:10] <killjoy> intellij or eclipse
L215[03:04:14] <Barteks2x> intellij
L216[03:05:19] ⇨ Joins: Noppes (~Noppes@ip56530f2e.direct-adsl.nl)
L217[03:06:47] <Barteks2x> it's also not the first time I see this kind of thing and usually some refactoring makes the error go away
L218[03:08:37] <killjoy> I have to do the same thing using ImmutableMap
L219[03:09:00] <Barteks2x> but no idea how to make it go away O.o
L220[03:09:03] <Barteks2x> nothing helps
L221[03:09:10] <killjoy> Add types
L222[03:09:21] <Barteks2x> nevermind, fixed it
L223[03:09:32] <Barteks2x> but now IDE complains that my type arguments are unnecessary
L224[03:09:37] <killjoy> before the (), add <R, L>
L225[03:10:21] ⇦ Quits: Larry1123 (Larry1123@irc.larry1123.net) (Ping timeout: 206 seconds)
L226[03:11:59] <Kasran> man, all the cool mods are for 1.10
L227[03:12:19] <Kasran> makes me feel like the time I spent setting up a 1.11 Forge instance was wasted :'D
L228[03:12:35] <killjoy> not wasted
L229[03:12:43] <killjoy> everyone else is wasting their time on 1.10
L230[03:13:07] <killjoy> Though it's literally just the time it takes to run setupDecompWorkspace
L231[03:14:57] ⇦ Quits: SatanicSanta (~SatanicSa@c-76-115-175-15.hsd1.or.comcast.net) (Quit: sleep)
L232[03:17:51] <Kasran> I meant a Forge instance for the Minecraft client, with which to play with mods others have made
L233[03:18:02] <killjoy> even easier
L234[03:18:12] <killjoy> literally press a button
L235[03:18:25] <Kasran> still gotta download all the mods
L236[03:18:52] <killjoy> And you'll never get that time back
L237[03:29:11] <Denyol> Is there a way to get the player who just placed an item in my container?
L238[03:31:37] ⇦ Quits: killjoy (~killjoy@cpe-76-182-16-229.nc.res.rr.com) (Ping timeout: 206 seconds)
L239[03:38:52] ⇨ Joins: founderio (~Thunderbi@p200300C4E3DDD6006B673193F32E9B83.dip0.t-ipconnect.de)
L240[03:41:59] <shadekiller666> does anyone know why eclipse is showing every code error twice? one from the actual path and one from .org.eclipse.jdt.core.external.folders
L241[03:46:35] <Naiten> Uh, my IDE suddlenly began stopping building mod at :sourceMainJava UP-TO-DATE
L242[03:46:44] <Naiten> What can I do about it?
L243[03:47:23] <Denyol> what is p_75220_1_ reffering to in onSlotChange() in Slot?
L244[03:48:00] <Barteks2x> I haven't see how vanilla world for so long time... how does it only use 200-300MB ran with 15 chunks view distance?
L245[03:48:32] <shadekiller666> !gp p_75220_1_
L246[03:48:55] <shadekiller666> !!gp p_75220_1_
L247[03:48:55] <MCPBot_Reborn> === MC 1.11: net/minecraft/inventory/Slot.onSlotChange.p_75220_1_ UNLOCKED ===
L248[03:48:56] <MCPBot_Reborn> Name : p_75220_1_
L249[03:48:57] <MCPBot_Reborn> Method : adk.a => Slot.func_75220_a => Slot.onSlotChange
L250[03:48:57] <MCPBot_Reborn> Descriptor : (Lafi;Lafi;)V => (Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ItemStack;)V
L251[03:48:58] <MCPBot_Reborn> Comment : None
L252[03:48:59] <MCPBot_Reborn> Last Change: 2016-11-17 22:22:46.941150-05:00
L253[03:49:13] <shadekiller666> Denyol ^^^
L254[03:49:23] <Denyol> what does that mean tho...
L255[03:49:53] <shadekiller666> look at the method implementation, what is it used for
L256[03:50:12] <Denyol> "/**
L257[03:50:12] <Denyol> * if par2 has more items than par1, onCrafting(item,countIncrease) is called
L258[03:50:12] <Denyol> */"
L259[03:50:33] <Denyol> for onSlotChange(ItemStack p_75220_1_, ItemStack p_75220_2_)
L260[03:51:38] <shadekiller666> no idea
L261[03:51:44] <Denyol> neither
L262[03:57:21] <Naiten> tried to reinstall workspace, got this error http://pastebin.com/Km646yuc
L263[03:57:28] <Naiten> pls halp
L264[03:58:50] <Naiten> oh wait
L265[03:58:55] <Naiten> i'm an idiot
L266[03:59:31] ⇦ Quits: shadekiller666 (~shadekill@adsl-108-71-39-199.dsl.lsan03.sbcglobal.net) (Quit: Leaving)
L267[04:01:37] *** PaleOff is now known as PaleoCrafter
L268[04:02:58] ⇦ Quits: Kasran (~Kasran@204.85.181.197) (Quit: Leaving)
L269[04:04:48] ⇨ Joins: Larry1123 (Larry1123@irc.larry1123.net)
L270[04:09:55] <Falconerd> so setupDecompWorkspace doesn't have to be camelCase?
L271[04:10:32] <Falconerd> i could have saved so many keystrokes
L272[04:10:47] <SparkVGX> o.o
L273[04:11:38] <Barteks2x> 2 keystrokes per run?
L274[04:13:16] <Naiten> actually, could not make it http://pastebin.com/rBdA4Nxf
L275[04:14:19] <SparkVGX> Im getting the same error trying to clean a project folder
L276[04:14:20] ⇨ Joins: ThePsionic (~Psi@ip5457f909.direct-adsl.nl)
L277[04:14:43] <SparkVGX> "FAILURE: Build failed with an exception."
L278[04:14:52] <SparkVGX> Time for a break I think ^_^
L279[04:27:53] <Denyol> odd, container has a method canAddItemToSlot, but IDEA wont let me overide it
L280[04:31:37] <Barteks2x> is it final?
L281[04:31:58] <Denyol> nope
L282[04:32:02] <Barteks2x> it\s static
L283[04:32:13] <Denyol> yep
L284[04:32:22] <Barteks2x> you can't override static methods
L285[04:32:23] <Denyol> seems like I missed that
L286[04:34:27] ⇦ Quits: Larry1123 (Larry1123@irc.larry1123.net) (Ping timeout: 206 seconds)
L287[04:36:56] <Shawn|i7-Q720M> I have just built an rj45 null modem adapter :D
L288[04:39:25] ⇨ Joins: Larry1123 (Larry1123@irc.larry1123.net)
L289[04:40:18] <Falconerd> transfer files without a network connection?
L290[04:40:23] <Falconerd> is that what it's for?
L291[04:42:19] ⇨ Joins: KGS (~KGS@h-155-4-129-249.na.cust.bahnhof.se)
L292[04:43:13] <Shawn|i7-Q720M> its a crossover cable adapter
L293[04:46:03] ⇦ Quits: Larry1123 (Larry1123@irc.larry1123.net) (Ping timeout: 206 seconds)
L294[04:52:32] ⇨ Joins: Larry1123 (Larry1123@irc.larry1123.net)
L295[04:57:03] ⇨ Joins: BlueMonster (~BlueMonst@cpc23-telf11-2-0-cust237.16-1.cable.virginm.net)
L296[04:57:07] ⇦ Quits: BlueMonster (~BlueMonst@cpc23-telf11-2-0-cust237.16-1.cable.virginm.net) (Remote host closed the connection)
L297[04:58:26] ⇦ Quits: Naiten (Naiten@5.143.38.44) (Read error: Connection reset by peer)
L298[05:07:30] ⇨ Joins: Naiten (Naiten@77.35.175.198)
L299[05:17:51] ⇦ Quits: immibis (~chatzilla@125-237-220-104.jetstream.xtra.co.nz) (Ping timeout: 384 seconds)
L300[05:19:11] <Denyol> is there a way to find all the players that have logged on, or alternatively get a player name from a uuid?
L301[05:20:41] ⇦ Quits: turmfalke (~turmfalke@p20030056CF6033E93366915F27FF8197.dip0.t-ipconnect.de) (Ping timeout: 384 seconds)
L302[05:28:56] ⇦ Quits: quadraxis (~quadraxis@cpc77293-basf12-2-0-cust699.12-3.cable.virginm.net) (Ping timeout: 180 seconds)
L303[05:31:09] ⇨ Joins: turmfalke (~turmfalke@p20030056CF6033AF6E68D093F2472303.dip0.t-ipconnect.de)
L304[05:40:02] ⇦ Quits: founderio (~Thunderbi@p200300C4E3DDD6006B673193F32E9B83.dip0.t-ipconnect.de) (Remote host closed the connection)
L305[05:40:51] <SparkVGX> Is there a gui creation assist tool of some description?
L306[05:41:27] ⇨ Joins: founderio (~Thunderbi@p200300C4E3DDD6006B673193F32E9B83.dip0.t-ipconnect.de)
L307[05:42:37] <Barteks2x> what? oDo I understand it right that you want a GUI for creating GUIs in minecraft?
L308[05:43:47] <Falconerd> I made a flow chart of my ore processing... process. http://i.imgur.com/pKLbM0M.png really helps see potential problems
L309[05:45:09] <Falconerd> i think there's still some problem with it
L310[05:45:31] <Denyol> did you use a program to generate that Falconerd?
L311[05:45:52] <Falconerd> I used Creately, it's a webapp
L312[05:45:59] <Denyol> thx
L313[05:49:20] * ghz|afk yawns
L314[05:49:23] *** ghz|afk is now known as gigaherz
L315[05:49:33] <gigaherz> [12:19] (Denyol): is there a way to find all the players that have logged on, or alternatively get a player name from a uuid?
L316[05:49:47] <gigaherz> only while they are online
L317[05:49:54] <gigaherz> or they have been online recently
L318[05:50:04] <Denyol> how recent?
L319[05:52:20] <SparkVGX> Is forge having issues with gradle?
L320[05:53:02] <gigaherz> Denyol: forge has a UsernameCache
L321[05:53:12] <gigaherz> you can do getLastKnownUsername(UUID)
L322[05:53:49] <Denyol> Because ive saved a player's uuid to an item upon creation, later I want to get the name, inside a Container
L323[05:54:01] <gigaherz> the name gets updated whenever the playr logs in
L324[05:54:12] <gigaherz> and you can query it for anyone that has ever logged into the server
L325[05:54:33] <gigaherz> unless someone calls removeUsername from it
L326[05:55:26] <Denyol> ok thx, ill try that
L327[06:02:53] <Aroma1997> where does forge store the idmap?
L328[06:03:01] <Aroma1997> in the level.dat?
L329[06:05:14] ⇨ Joins: Ashindigo_ (uid202308@id-202308.hathersage.irccloud.com)
L330[06:05:56] <Barteks2x> it may depend on what you need it for, chunks may have BlockStatePalette but I'm not sure exactly, last time I looked into that code was >1 year ago
L331[06:07:15] <Falconerd> this chart is much better, http://i.imgur.com/V8YPAQb.png
L332[06:11:18] <gigaherz> Aroma1997: you can easily see it with NBTExplorer ;P
L333[06:11:27] <gigaherz> it's level.dat/FML/Registries/*
L334[06:11:30] <Aroma1997> but but but
L335[06:11:32] <gigaherz> in 1.10.2+
L336[06:11:37] <Aroma1997> then I need to download nbtexplorer
L337[06:11:50] <Aroma1997> ok thanks
L338[06:12:28] <gigaherz> but why do you need to access the saved idmap? :/
L339[06:13:29] <SparkVGX> I can't seem to make my gradle do anything, in any of my projects. Can't clean, setupDecompWorkspace or anything
L340[06:13:57] <Aroma1997> I don't
L341[06:14:13] <Aroma1997> it's broken on our server and I need to know which file to restore from the backup
L342[06:21:20] <Naiten> Yay, fixed my collision code :D https://www.youtube.com/watch?v=KRyHuHpDBq0
L343[06:23:27] <gigaherz> yay, what was it?
L344[06:23:57] ⇦ Quits: rebecca (~rebecca@60-241-180-77.static.tpgi.com.au) (Remote host closed the connection)
L345[06:24:44] <Naiten> custom collisions
L346[06:25:21] <gigaherz> ewh, but I guess if it works...
L347[06:25:35] <Naiten> cause banilla will have my cars like this http://i.imgur.com/e5lohcY.png and worse
L348[06:25:50] <Naiten> it works perfect -___-
L349[06:25:57] <Denyol> noice, did you texture it?
L350[06:26:15] <Denyol> I mostly cant be bothered to texture my models, they are black and purple squares
L351[06:26:20] <SparkVGX> dang dude. looks awesome
L352[06:26:55] <Naiten> Nope, I stole DAYdiecast from Traincraft and now he models and textures for me
L353[06:27:13] <SparkVGX> I recognise this music from somewhere
L354[06:27:20] <SparkVGX> Harry something
L355[06:28:14] <Denyol> how do the collisions work for that?
L356[06:28:49] <g> that music is from portal
L357[06:28:56] <Denyol> ^ thought so
L358[06:29:13] <g> really odd choice
L359[06:29:14] <g> lol
L360[06:29:18] <SparkVGX> yeah, but isn't it a remix done by someone?
L361[06:29:28] <g> yes it is
L362[06:30:34] <Naiten> Denyol, what do you mean 'how do the collisions work for that?'?
L363[06:31:05] <Denyol> you said they were broken, what was broke, how was it fixed, just curious
L364[06:31:34] <gigaherz> this is so weird...
L365[06:31:34] <Naiten> ah
L366[06:31:34] <gigaherz> https://dl.dropboxusercontent.com/u/743491/booksjson.PNG
L367[06:31:45] <g> ah, no, it's not a remix
L368[06:31:51] <gigaherz> whenever I draw "books.json" I get a double-dot drawn
L369[06:31:53] <g> https://www.youtube.com/watch?v=J5Erl-y9b_4
L370[06:31:55] <g> it's from the trailer
L371[06:32:00] <gigaherz> even though there's clearly only 1 '.' in the file
L372[06:32:02] <SparkVGX> ty g
L373[06:32:03] <Naiten> it's just hat I made a map of all stock in the world
L374[06:32:06] <gigaherz> and other '.'s work fine
L375[06:32:09] <g> yw
L376[06:32:12] <g> going to work now
L377[06:32:12] <g> o/
L378[06:32:13] <Naiten> but initially it was only server-wise
L379[06:32:18] <Naiten> bye
L380[06:32:21] <Ordinastie> gigaherz, it's the J
L381[06:32:27] <SparkVGX> \o
L382[06:32:34] <gigaherz> Ordinastie: is it?
L383[06:32:42] <gigaherz> I guess it may be
L384[06:32:52] <gigaherz> it still looks like "books..json" to my eyes
L385[06:32:53] <Naiten> then I did it for both client and server, but forgot one piece of code and client map was always empty
L386[06:34:09] <Naiten> thus the client was not running collision physics at all
L387[06:34:23] <Naiten> Denyol, that answers your question?
L388[06:35:01] <Denyol> oh
L389[06:40:11] <Naiten> anyway
L390[06:40:14] <Naiten> i like trains
L391[06:43:24] <TechnicianLP> dont say that too loud ... xD
L392[06:43:34] <gigaherz> https://www.youtube.com/watch?v=hHkKJfcBXcw
L393[06:43:56] <Denyol> i think im won over by IDEA
L394[06:44:06] <gigaherz> :)
L395[06:44:17] <Denyol> its less ugly
L396[06:45:23] <TechnicianLP> i was thinking of this one: https://www.youtube.com/watch?v=5DjOL2we8ko
L397[06:45:40] <gigaherz> yes I know
L398[06:45:44] <gigaherz> but that was the first result in google
L399[06:45:45] <gigaherz> ;P
L400[06:48:30] <Barteks2x> which dimension is DIM1 and which is DIM-1?
L401[06:49:00] <TechnicianLP> 1=nether -1=end
L402[06:49:09] <TechnicianLP> couldbe the other way round
L403[06:50:10] <gigaherz> other way around
L404[06:50:16] <gigaherz> -1 is the "underworld"
L405[06:50:23] <gigaherz> ;P
L406[06:50:46] <gigaherz> 1 was going to be the sky dimension, before it became the end
L407[06:50:49] <gigaherz> so "aboveworld"
L408[06:51:53] <Naiten> https://www.youtube.com/watch?v=i58kHQpvTdQ
L409[06:59:27] ⇨ Joins: rebecca (~rebecca@60-241-180-77.static.tpgi.com.au)
L410[06:59:54] <Barteks2x> I was almost sure 1 is nether and -1 is the end, but maybe I was wrong
L411[07:07:36] ⇨ Joins: Jezza (~Jezza@92.206.161.17)
L412[07:10:35] <gigaherz> I can be wrong too!
L413[07:10:53] <gigaherz> it seems to happen a lot lately
L414[07:10:59] <gigaherz> I think I remember something clearly
L415[07:11:02] <gigaherz> and it's all backwards
L416[07:11:19] <TechnicianLP> http://minecraft.gamepedia.com/The_Nether
L417[07:12:01] <gigaherz> :3
L418[07:12:03] <gigaherz> "%appdata%\.minecraft\saves\worldname\DIM-1"
L419[07:20:00] <SparkVGX> My GradleStart class has gone missing O.o I can't run a minecraft client to test
L420[07:20:43] <gigaherz> idea?
L421[07:20:56] ⇦ Quits: Upthorn (~ogmar@108-204-125-173.lightspeed.frokca.sbcglobal.net) (Ping timeout: 180 seconds)
L422[07:21:10] <SparkVGX> yeah
L423[07:21:13] <gigaherz> if so, open the "edit configuration" dialog from the run config selection
L424[07:21:21] <Barteks2x> if it's idea, set "use classpath of module" to "projectname_main"
L425[07:21:23] <gigaherz> and make sure "use classpath of module" is set to "blahblah_man"
L426[07:21:32] <gigaherz> main*
L427[07:22:17] <SparkVGX> http://puu.sh/tvJ5t/bda0f8fdf4.png
L428[07:22:37] <SparkVGX> it doesn't have main attached to it, but im sure its the right one
L429[07:22:39] <SparkVGX> im having all sorts of problems with gradle
L430[07:22:51] <SparkVGX> I can't run clean or anything
L431[07:23:05] ⇨ Joins: Samario (~Samario@cpc5-bigg3-2-0-cust219.9-2.cable.virginm.net)
L432[07:23:14] <Barteks2x> set "Use classpath of module" to SLA_main
L433[07:23:32] <SparkVGX> there is not SLA_main, just SLA
L434[07:23:36] <SparkVGX> and it was working before
L435[07:23:48] <Barteks2x> maybe "refresh gradle project" first?
L436[07:23:52] *** Denyol is now known as Denyol[Away]
L437[07:24:01] <gigaherz> if you used IDEA 15, itwould have worked
L438[07:24:09] <gigaherz> maybe if you didn't refresh the workspace after upgrading idea
L439[07:24:12] <gigaherz> it would keep working
L440[07:24:20] <gigaherz> but if you setupDecompWorkspace and refresh the gradle project
L441[07:24:23] <gigaherz> it would stop working
L442[07:24:28] <gigaherz> and the fix is to change it to the _main
L443[07:24:48] <SparkVGX> Like, I haven't even closed idea, nothing has changed inside the IDE
L444[07:24:53] <SparkVGX> nothing should have updated
L445[07:24:59] <gigaherz> well it did
L446[07:25:00] <gigaherz> ;P
L447[07:25:08] <gigaherz> stop worrying about it
L448[07:25:24] <gigaherz> wait
L449[07:25:29] <gigaherz> [14:23] (SparkVGX): there is not SLA_main, just SLA
L450[07:25:35] <gigaherz> what version of idea are you using?
L451[07:26:02] <SparkVGX> IntelliJ IDEA Community Edition 2016.1.3
L452[07:26:05] <Barteks2x> why git always opens help in browser...
L453[07:26:11] <gigaherz> yeah then it shouldn't be working
L454[07:26:24] <gigaherz> rerun setupdecompWorkspace, and click on the blue refresh icon in the gradle panel
L455[07:26:30] <gigaherz> (NOT the one in the main toolbar)
L456[07:26:54] <kashike> though 2016.1.3 is old, you should update to latest (2016.3.3)
L457[07:26:59] <gigaherz> also update to IDEA 2016.3.x
L458[07:27:32] <Barteks2x> I'm already testing 2017.1 :D
L459[07:27:51] <kashike> 2016.1.3 is from Jun 06, 2016 apparently
L460[07:27:53] <kashike> so yeah, old
L461[07:28:27] <gigaherz> 2016.3.3 is probably going to be the last 2016.x release, if you are worried about those things
L462[07:28:38] <gigaherz> not that the year-version matters much
L463[07:28:58] <gigaherz> if it was still 2016, next release would be 2016.4.x
L464[07:29:05] <gigaherz> but since we are 2017, next release will be 2017.1.x
L465[07:38:08] ⇦ Quits: Smack (~Pepe@563412ad.rev.stofanet.dk) (Read error: Connection reset by peer)
L466[07:51:24] <SparkVGX> welp, fixed gradle, though I still don't have the _main thing you were talking about
L467[07:51:30] <SparkVGX> runs fine now though ^_^
L468[07:52:37] ⇦ Quits: Falconerd (~falconerd@ppp118-209-74-141.bras1.mel11.internode.on.net) (Quit: Leaving)
L469[07:52:55] * gigaherz shrugs
L470[07:54:03] <SparkVGX> how would you suggest I add an inventory to an item?
L471[07:54:26] <gigaherz> capabilities, IItemHandler
L472[08:04:55] <SparkVGX> I don't suppose you have an example of that?
L473[08:05:26] <gigaherz> not in any of my mods
L474[08:05:32] <gigaherz> but it's mostly just
L475[08:05:41] <gigaherz> override Item#initCapabilities on your item
L476[08:05:48] <gigaherz> or use AttachCapabilitiesEvent.Item
L477[08:06:05] <gigaherz> (if it's someone else's item)
L478[08:06:16] <gigaherz> then on tiem use, you show a GUI as usual
L479[08:06:32] <gigaherz> passin in the slot number as the x, y or z coord
L480[08:06:42] <gigaherz> so that the gui can tell which itemstack to look for
L481[08:06:46] <gigaherz> passing*
L482[08:24:30] <SparkVGX> I'm having trouble figuring out how to attach the capability to the item. I think I'll have to do some searching for examples later >,<
L483[08:25:06] <gigaherz> you don't attach "the capability"
L484[08:25:10] <gigaherz> you attach an ICapabilityProvider
L485[08:25:18] <gigaherz> and then implement hasCapability/getCapability on it
L486[08:25:22] <gigaherz> like you would on a TE
L487[08:25:40] ⇨ Joins: GeoDoX (~GeoDoX@bas1-cornwall24-76-64-18-64.dsl.bell.ca)
L488[08:27:12] <GeoDoX> Can anyone tell me why I'm getting this build failed when trying to set up a new workspace for 1.10.2? https://hastebin.com/afijafivib
L489[08:29:07] <Barteks2x> did you try a few times? that looks like network issue
L490[08:29:21] <Barteks2x> the link it couldn't get loads finr for me
L491[08:29:39] ⇨ Joins: IceDragon (~ThatGuy@63.143.96.21)
L492[08:29:55] <GeoDoX> Yeah, I just tried it again
L493[08:30:14] <Barteks2x> did it work?
L494[08:30:23] <GeoDoX> No, same thing
L495[08:31:13] <GeoDoX> I can access it from chrome, which is odd
L496[08:32:36] <GeoDoX> Got it, for some reason it couldn't access it through command
L497[08:32:55] <Barteks2x> so how did you do it?
L498[08:33:47] <GeoDoX> opened command from start instead of ctrl + shift + right click menu
L499[08:34:29] <Barteks2x> that probably has nothing to do with it, you just got lucky this time it was able to connect
L500[08:35:01] <Barteks2x> I'm getting the same error when I do ./gradlew setupDecompWorkspace --refresh-dependencies, so it's not only you
L501[08:35:31] <GeoDoX> could have requested administrative privileges through start
L502[08:35:52] <Barteks2x> this is unrelated
L503[08:36:19] <Barteks2x> you should never need to run gradle as administrator
L504[08:36:40] <gigaherz> unless there's a bug with gradle or something
L505[08:36:55] <gigaherz> although we still use 2.7 for 1.10.2, and 2.14 for 1.11
L506[08:36:58] <Barteks2x> or you deny network access to gradle
L507[08:37:21] <GeoDoX> either way, it worked when I used command through start xD
L508[08:37:38] <Barteks2x> as I said, you probably got lucky and it worked this one time
L509[08:40:49] <Ordinastie> does that link work directly for you ? https://minecraft.curseforge.com/projects/malisiscore
L510[08:41:05] <GeoDoX> yes
L511[08:41:24] <Ordinastie> ok thanks
L512[08:49:10] <Ordinastie> so apparently, Curseforge decided to change the adresses to the projects, breaking all the links :x
L513[08:49:53] <gigaherz> I have seen that happen
L514[08:49:53] <gigaherz> but
L515[08:49:59] <gigaherz> my links were already /project-name
L516[08:50:15] <gigaherz> so I guess 12345-project-name was even older, and just supported for backward compatibility with existing links?
L517[08:50:53] <Ordinastie> I don't know since when it stopped working
L518[08:51:03] <gigaherz> hmm yeah
L519[08:51:07] ⇦ Quits: Ashindigo_ (uid202308@id-202308.hathersage.irccloud.com) (Quit: Connection closed for inactivity)
L520[08:51:09] <gigaherz> https://minecraft.curseforge.com/projects/ender-rift
L521[08:51:15] <gigaherz> https://minecraft.curseforge.com/projects/233780
L522[08:51:17] <gigaherz> both work, but
L523[08:51:19] <gigaherz> https://minecraft.curseforge.com/projects/233780-ender-rift
L524[08:51:20] <gigaherz> does not
L525[08:51:52] <Barteks2x> Now I really wich java had something closer to templates... I need static method in generic type argument...
L526[08:52:12] <gigaherz> btw talking about curseforge
L527[08:52:28] <gigaherz> how does one tell CF that a mod depends on another one, so that it shows up on the dependencies list?
L528[08:52:41] <Ordinastie> Barteks2x, you mean you want T.staticMethod() ?
L529[08:53:21] <gigaherz> that couldn't possibly work
L530[08:53:25] <gigaherz> ;P
L531[08:53:34] *** diesieben|away is now known as diesieben07
L532[08:53:49] <gigaherz> there's no way to make it type-safe
L533[08:54:32] <gigaherz> you'd need like... "static interfaces", and static overrides
L534[08:54:47] <gigaherz> and static method tables in the jvm so that it can do overrides
L535[08:54:57] <gigaherz> may as well work with singletons instead
L536[08:55:22] <GeoDoX> Do things still get registered to the event bus?
L537[08:55:26] ⇦ Quits: Shawn|i7-Q720M (~shawn156@c-50-170-156-102.hsd1.co.comcast.net) (Quit: Leaving)
L538[08:55:31] <Barteks2x> I realized a flaw in my RegionLib design
L539[08:55:49] <gigaherz> GeoDoX: yes? why would you think they are not?
L540[08:55:49] <Barteks2x> and without something like that patching a way to iterate over all regions on top of the will be very hard
L541[08:56:57] <GeoDoX> I remember things being registered another way and I couldn't remember if things were being moved to being registered with the event bus or if it was to something else
L542[08:57:11] <gigaherz> in old minecraft
L543[08:57:16] <gigaherz> there was a FML bus
L544[08:57:24] <GeoDoX> ah, that was it
L545[08:57:24] <gigaherz> and certain things would be registered on the FML bus
L546[08:57:35] <gigaherz> but now the FML events are posted to the forge bus
L547[08:57:47] <gigaherz> so the only thing that isn't MinecraftForge.EVENT_BUS
L548[08:57:54] <gigaherz> is the worldgen one
L549[08:58:09] <GeoDoX> Just want to ensure things I'm doing it right haha
L550[08:58:14] <gigaherz> and the only reason there's a separate bus for worldgen, is because worldgen is performance-critical
L551[08:58:20] <Barteks2x> I really don't know what would be a good way to make that work
L552[09:00:20] <GeoDoX> Can someone link me to a mod that has a really clean API? I need to implement an API into my mod.
L553[09:00:48] ⇨ Joins: Cooler (~CoolerExt@2406:5600:59:7e79:7da7:329d:f412:9f8)
L554[09:01:55] <gigaherz> uhm
L555[09:01:58] <gigaherz> what KIND of api?
L556[09:02:02] <gigaherz> what purpose?
L557[09:02:15] <gigaherz> my Guidebook mod has an extremely clean API, but it's probably not what you want
L558[09:02:18] <GeoDoX> Like your mod registers stuff with my mod
L559[09:02:34] <gigaherz> https://github.com/gigaherz/Guidebook/wiki/1.-Adding-new-books-to-the-mod-(API-and-resource-packs)#book-registry
L560[09:02:42] <gigaherz> this is how I let others register books with my mod
L561[09:02:44] <gigaherz> I provide an event
L562[09:03:03] <gigaherz> that you can handle with @Optional(modid="gbook") if you need soft-dependency
L563[09:03:45] <gigaherz> another option
L564[09:03:47] <gigaherz> is to do like JEI
L565[09:04:07] *** TTFT|Away is now known as TTFTCUTS
L566[09:04:12] <gigaherz> in the JEI api
L567[09:04:17] <gigaherz> you annotate a class with JEIPlugin
L568[09:04:29] <gigaherz> and during game load
L569[09:04:42] <gigaherz> JEI scans for all the classes with @JEIPlugin in them
L570[09:04:47] <gigaherz> and calls them
L571[09:05:08] <gigaherz> another option
L572[09:05:11] <gigaherz> is to do like WAILA
L573[09:05:12] <GeoDoX> In your opinion, which is better?
L574[09:05:15] <Barteks2x> I didn't know it's possible, that's probably what I will do with my API (at least part of it)
L575[09:05:25] <gigaherz> FMLInterModComms.sendMessage("Waila", "register", "gigaherz.enderRift.plugins.WailaProviders.callbackRegister");
L576[09:05:27] <Barteks2x> (the @SomethingPlugin annotation)
L577[09:05:30] <gigaherz> or like the one probe
L578[09:05:34] <gigaherz> FMLInterModComms.sendFunctionMessage("theoneprobe", "getTheOneProbe", "gigaherz.enderRift.plugins.TheOneProbeProviders");
L579[09:05:39] <gigaherz> using IMC however
L580[09:05:46] <gigaherz> has one BIG drawback: it happens in POST-init
L581[09:05:59] <gigaherz> so it's "too late" if you require the info during preinit, for things like texture/model loading
L582[09:06:17] <gigaherz> (which was the case for my guidebook mod -- I needed to load textures)
L583[09:06:54] <GeoDoX> My mod deals with inventory slots, so I'm not sure when they'd be initialized and stuff...
L584[09:07:08] <gigaherz> Barteks2x: you can obtain the ASMDatas in your preinit
L585[09:07:20] <gigaherz> which would let you fetch all the classes that contain an annotation
L586[09:07:23] <gigaherz> and iterate through them
L587[09:07:33] <gigaherz> the same way that forge scans for @Mod.EventbusSubscriber
L588[09:07:36] <Barteks2x> I still don't have a clear idea for my API
L589[09:07:38] <GeoDoX> Perhaps it would be more clear if I explained my mod
L590[09:07:54] <gigaherz> GeoDoX: yes that's usually a good idea
L591[09:07:58] <gigaherz> the more accurate you are with your use case
L592[09:08:04] <gigaherz> the more accurate we can be with the answer
L593[09:09:46] <GeoDoX> I'm writing a tooltips mod for inventory slots, it allows authors to basically explain what a slot, or a group of slots is used for. For example, in the vanilla furnace, when hovering the bottom slot, it would display a "Fuel" tooltip.
L594[09:10:01] <gigaherz> I see
L595[09:10:14] <gigaherz> so you don't need it during preinit
L596[09:10:16] <gigaherz> you can use IMC
L597[09:10:20] <gigaherz> which is the cleanest
L598[09:10:37] <GeoDoX> IMC being? /.\
L599[09:11:00] <GeoDoX> InterModComms?
L600[09:11:10] <gigaherz> FMLInterModComms.sendMessage("YOUR MODID", "MESSAGE NAME", MESSAGE_DATA);
L601[09:11:19] <gigaherz> the data
L602[09:11:36] <gigaherz> can be String, NBTTagCompound, ResourceLocation, or ItemStack
L603[09:11:44] <gigaherz> in your case
L604[09:12:02] <gigaherz> I'd probably use json
L605[09:12:41] <SparkVGX> gigaherz: if you are still around, I don't suppose you can tell me how I set the default instance for an item that I've implemented ICapabilityProvider on?
L606[09:12:46] <GeoDoX> Wouldn't it be easier to fire an event?
L607[09:12:58] <SparkVGX> "GemPouchCapability.IGemPouch inst = ModCapabilities.GEM_POUCH.getDefaultInstance();"
L608[09:13:02] <gigaherz> GeoDoX: easier for you, yes
L609[09:13:03] <SparkVGX> whever this has to go
L610[09:13:09] <gigaherz> but then you require people to use @Optional
L611[09:13:13] <gigaherz> if they want soft-dependencies
L612[09:13:15] <gigaherz> which is ugly.
L613[09:13:16] <GeoDoX> True
L614[09:13:22] <gigaherz> alternatively
L615[09:13:25] <gigaherz> you could use a function message
L616[09:13:35] <gigaherz> so that it's a callback
L617[09:13:46] <gigaherz> that you can use to obtain a... "SlotTooltipInfo" instance
L618[09:13:51] <gigaherz> or whatever
L619[09:14:25] <gigaherz> SparkVGX: you keep it in your anonymous interfacei mplementation
L620[09:14:27] <gigaherz> like
L621[09:14:43] <gigaherz> new ICapabilitySerializable<NBTTagCompound>() {
L622[09:14:49] <gigaherz> GemPouchCapability.IGemPouch inst = ModCapabilities.GEM_POUCH.getDefaultInstance();
L623[09:15:03] <gigaherz> @Override blah blah hasCapability {
L624[09:15:14] <GeoDoX> Do you have an example of the function message with the callback or whatever?
L625[09:15:18] <gigaherz> if (cap == ITEM_HANDLER) return (T)inst;
L626[09:15:30] *** diesieben07 is now known as diesieben|away
L627[09:15:35] <gigaherz> GeoDoX: theOneProbe does
L628[09:17:37] <GeoDoX> I'll look into it :) Any tips for it?
L629[09:17:52] <gigaherz> not really
L630[09:17:57] <gigaherz> I haven't actually used it myself
L631[09:18:01] <gigaherz> as a "provider" of IMC
L632[09:18:02] <gigaherz> only as a user
L633[09:20:21] <gigaherz> Barteks2x: https://gist.github.com/gigaherz/e24aae410f3e62e7d155d12677c75a46
L634[09:20:23] <GeoDoX> Alright, time to search through some code xD
L635[09:20:27] <gigaherz> this is how you do it with the asm datas method
L636[09:20:36] <gigaherz> in your mod's preinit
L637[09:21:01] <Barteks2x> I still only have a vague idea what my API would be useful for
L638[09:21:13] <gigaherz> sure
L639[09:21:30] <Barteks2x> and the different things it would be used for seem too different for a single API
L640[09:22:21] <Barteks2x> and then there is the problem that maybe 2-3 mods would use it so I would have no way to know if it's something useful when I make it
L641[09:23:45] <Barteks2x> exposing new World methods in an optional API doesn't seem easy
L642[09:26:07] <Barteks2x> would it need to be some static methods that take world as arguments? Or just putting my ICubicWorld interface into API would work?
L643[09:27:15] <Barteks2x> inter-mod stuff is still mostly magic to me
L644[09:28:23] <gigaherz> well
L645[09:28:27] <gigaherz> one way to achieve it would be like
L646[09:28:34] <gigaherz> interface ICubicPlugin {
L647[09:28:51] <gigaherz> void initializeCubicChunks(ICubicWorld);
L648[09:28:52] <gigaherz> }
L649[09:28:55] <gigaherz> and then people can do
L650[09:29:02] <gigaherz> @CubicPlugin
L651[09:29:13] <gigaherz> public class CubicIntegration extends ICubicPlugin {
L652[09:29:14] <gigaherz> ...
L653[09:29:15] <gigaherz> }
L654[09:29:15] <Barteks2x> what would be problematic is something like world.getMinHeight
L655[09:29:23] <Barteks2x> that would have to somehow work even without the mod installed
L656[09:29:49] <gigaherz> yeah taht can't be done with THAT kind of API
L657[09:30:12] <Barteks2x> the plugin API would be fine for worldgen
L658[09:30:24] <Barteks2x> but not for mods that just want compatibility
L659[09:30:28] <gigaherz> if you want people to have copies of stuff
L660[09:30:54] <gigaherz> you'd need something more like the baubles API, that you would embed into your mod and let java/fml discard duplicates
L661[09:31:41] <Barteks2x> and that would mean I can't have any differences in the API for a single major forge version?
L662[09:32:34] <Barteks2x> or is it possible to somehow handle additions?
L663[09:32:54] <gigaherz> yeah, nope.
L664[09:32:59] <gigaherz> the thing peopleembed
L665[09:33:04] <gigaherz> has to be stable and never change
L666[09:33:06] <gigaherz> otherwise bad stuff happens
L667[09:33:37] <Barteks2x> mixin somehow does some weird magic, that seems to make it work based on what I saw, but no idea if is' true of how that works
L668[09:34:22] <Barteks2x> what about "API" that people could embed and relocate?
L669[09:34:33] <Barteks2x> could something like that work?
L670[09:34:50] ⇦ Quits: srs_bsns (blk@198-48-175-31.cpe.pppoe.ca) (Killed (NickServ (GHOST command used by zxc!~blk@198-48-175-31.cpe.pppoe.ca)))
L671[09:34:55] ⇨ Joins: srs_bsns (~blk@198-48-175-31.cpe.pppoe.ca)
L672[09:35:07] <Barteks2x> that would probably be limited to util classes
L673[09:36:36] ⇨ Joins: Xilef11 (~xilef11@209.195.101.19)
L674[09:43:42] <Barteks2x> is "x?" the correct way to match optional x with regex?
L675[09:43:56] <gigaherz> yes
L676[09:43:59] <gigaherz> "?" means "0 or 1"
L677[09:44:04] <gigaherz> whereas "*" means "0 or more"
L678[09:44:09] <gigaherz> and "+" means "1 or more"
L679[09:44:30] <gigaherz> some dialects of regex have "{2,7}" or "*{2,7}" for specific range
L680[09:46:08] <Barteks2x> so I just hope this will work "-?\\d+\\.-?\\d+\\.-?\\d+\\.3dr"
L681[09:50:28] <Xilef11> is there some sort of guide for the 1.10.2->1.11.x update?
L682[09:51:51] ⇨ Joins: williewillus (~williewil@cpe-24-28-24-13.austin.res.rr.com)
L683[09:55:59] ⇨ Joins: Smack (~Smack@563412ad.rev.stofanet.dk)
L684[09:58:54] <PaleoCrafter> mostly it's the ItemStack changes, Xilef11
L685[09:59:15] <PaleoCrafter> just use ItemStack.EMPTY instead of null and make sure you don't modify the contained item directly anywhere :P
L686[10:01:11] <Xilef11> ugh, considering I have null checks on ItemStacks every 10 lines, this may get painful
L687[10:01:20] <williewillus> find usages on null ;p
L688[10:01:26] <williewillus> or I guess just a find
L689[10:07:29] <GeoDoX> Which Gui class does someone extend to add slots?
L690[10:09:14] <TechnicianLP> GuiContainer
L691[10:10:06] <GeoDoX> That's not just the inventory screen, correct?
L692[10:10:31] <TechnicianLP> yes, you will have to change the backgroundicon to one with your slots on it or
L693[10:10:43] <TechnicianLP> have them drawn manually
L694[10:11:18] ⇨ Joins: CoderPuppy (~cpup@32.218.112.213)
L695[10:11:37] <GeoDoX> how do you get a slot that the mouse is over?
L696[10:12:02] <TechnicianLP> GuiContainer.theSlot
L697[10:12:26] ⇦ Quits: cpup (~cpup@32.218.116.181) (Ping timeout: 180 seconds)
L698[10:12:55] <GeoDoX> Is there any way to tell which mod the GuiContainer is from?
L699[10:13:25] <TechnicianLP> not really
L700[10:13:46] <Ordinastie> no guarantee it uses GuIContainer eite
L701[10:13:47] <Ordinastie> either
L702[10:14:10] <GeoDoX> That's what I was wondering in my first question haha
L703[10:14:35] ⇦ Quits: SparkVGX (~SparkVGX@121.99.203.245) (Quit: This quit message was sponsored by Pepsi. Just as good as coke, we promise!)
L704[10:14:54] <GeoDoX> So if they're not using GuiContainer, is it possible to get the slot that the mouse is over?
L705[10:15:05] ⇨ Joins: CoolerExtreme (~CoolerExt@45.249.156.115)
L706[10:15:13] <TechnicianLP> what are you trying to do?
L707[10:15:32] <GeoDoX> I'm writing a tooltips mod for inventory slots, it allows authors to basically explain what a slot, or a group of slots is used for. For example, in the vanilla furnace, when hovering the bottom slot, it would display a "Fuel" tooltip.
L708[10:18:06] ⇦ Quits: Cooler (~CoolerExt@2406:5600:59:7e79:7da7:329d:f412:9f8) (Ping timeout: 206 seconds)
L709[10:18:38] <gigaherz> GeoDoX: Minecraft.getMinecraft().player.openContainer.inventorySlots
L710[10:18:57] <GeoDoX> AWESOME, ghz always pulling through
L711[10:19:20] <Ordinastie> no guarantee it's used :)
L712[10:19:26] <gigaherz> yeah
L713[10:19:31] <GeoDoX> That's true haha
L714[10:19:35] <gigaherz> but then again
L715[10:19:44] <gigaherz> if the inventory isn't a container with slots using the normal system
L716[10:19:53] <gigaherz> it will probably not work with a mod designed specifically for that
L717[10:20:31] <gigaherz> and if a mod would haveto implement a custom tooltip help handler
L718[10:20:35] <gigaherz> they would just do it themselves
L719[10:20:37] <gigaherz> ;P
L720[10:21:07] <Ordinastie> to be fair, in my case, if you want a tooltip for the slot, you just do slot.setTooltip :p
L721[10:21:09] <GeoDoX> Is it safe to assume that the more popular mods use the normal system?
L722[10:21:38] <TechnicianLP> almost all mods use it ...
L723[10:21:43] <gigaherz> it is safe to assume that most mods using normal inventories
L724[10:21:45] <gigaherz> use the normal system
L725[10:22:34] <gigaherz> the fancier the inventory looks, the higher the chances the author had... "special needs" and decided to avoid the vanilla system
L726[10:22:34] <gigaherz> ;P
L727[10:22:39] <TechnicianLP> even if the gouContainers look like this after a while: https://hastebin.com/zunecedebu.java
L728[10:23:09] <gigaherz> ewh
L729[10:23:17] ⇦ Quits: Samario (~Samario@cpc5-bigg3-2-0-cust219.9-2.cable.virginm.net) (Ping timeout: 384 seconds)
L730[10:23:21] <Ordinastie> thank god I'm not the only one to think that ><
L731[10:23:43] <GeoDoX> Looks fancy ;) jk
L732[10:24:09] <TechnicianLP> the thing it produces is fancy ... slots with arbitrary size drawn at runtime
L733[10:24:13] <gigaherz> that said
L734[10:24:16] <gigaherz> https://github.com/gigaherz/ElementsOfPower/blob/master/src/main/java/gigaherz/elementsofpower/essentializer/gui/GuiEssentializer.java
L735[10:24:16] <gigaherz> ;P
L736[10:25:14] <gigaherz> https://github.com/gigaherz/Ender-Rift/blob/master/src/main/java/gigaherz/enderRift/automation/browser/GuiBrowser.java
L737[10:25:26] <gigaherz> Guis do have a tendency to get ugly when you introduce scrolling and search
L738[10:25:26] <gigaherz> ;P
L739[10:25:53] <Ordinastie> https://github.com/Ordinastie/MalisisDoors/blob/1.9.4/src/main/java/net/malisis/doors/gui/DoorFactoryGui.java ><
L740[10:26:01] <Ordinastie> it has 3 tabs though
L741[10:26:39] <gigaherz> eek
L742[10:26:40] <gigaherz> https://github.com/gigaherz/Ender-Rift/blob/master/src/main/java/gigaherz/enderRift/generator/GuiGenerator.java
L743[10:26:46] <gigaherz> even my single-slot generator gui is a mess
L744[10:26:48] <gigaherz> due to the energy bar
L745[10:26:49] <gigaherz> XD
L746[10:27:20] ⇨ Joins: Hgreb (~Hgrebnedn@d8D872A6E.access.telenet.be)
L747[10:27:21] <Ordinastie> my simpler GUI : https://github.com/Ordinastie/MalisisBlocks/blob/1.9.4/src/main/java/net/malisis/blocks/gui/BlockMixerGui.java
L748[10:28:01] <gigaherz> ah this is better... https://github.com/gigaherz/Survivalist/blob/master/src/main/java/gigaherz/survivalist/rack/GuiRack.java
L749[10:28:16] <gigaherz> https://github.com/gigaherz/Ender-Rift/blob/master/src/main/java/gigaherz/enderRift/automation/iface/GuiInterface.java
L750[10:28:20] <gigaherz> doesn't get shorter than this ;P
L751[10:28:39] <Ordinastie> well, it has nothing in it, does it ? ><
L752[10:28:45] <gigaherz> yes, slots.
L753[10:28:45] <gigaherz> XD
L754[10:28:52] <gigaherz> which are done internally by GuiContainer
L755[10:29:02] <Ordinastie> I'd have shorter I think :p
L756[10:29:11] <gigaherz> one background texture, a couple labels, and all the automatic slots
L757[10:30:11] ⇦ Quits: Hgrebnednav_ (~Hgrebnedn@d8d872a6e.access.telenet.be) (Ping timeout: 206 seconds)
L758[10:44:39] ⇨ Joins: Brokkoli (~Brokkoli@p5B23C6BC.dip0.t-ipconnect.de)
L759[10:49:08] <Barteks2x> is it possible to undo the first commit in git?
L760[10:49:34] <TechnicianLP> have you pushed the commit?
L761[10:49:37] <Barteks2x> no
L762[10:49:40] <Barteks2x> it's all local
L763[10:49:52] <TechnicianLP> you can probably revert+squash
L764[10:50:10] <Barteks2x> I mean literally remove it, but have the files stay there
L765[10:50:32] <williewillus> if this is the first commit just remove the git repo and rerun git init :P
L766[10:50:49] <Barteks2x> so delete .git?
L767[10:50:53] <williewillus> yeah
L768[10:51:41] <Barteks2x> argh
L769[10:51:46] <Barteks2x> I forgot it broke git submodule
L770[10:52:01] <gigaherz> git submodules suck. badly.
L771[10:52:59] <Barteks2x> But I'm stuck with submodules as long as my library isn't in any maven repository
L772[10:53:22] <Barteks2x> and I need it working again. And it has been modified
L773[10:54:32] <Barteks2x> git submodules would be awesome if it wouldn't be such a big problem every time I touch them
L774[10:55:06] <gigaherz> and that's why they suck balls.
L775[10:55:16] <gigaherz> they just don't quite work right, ever.
L776[10:55:28] <gigaherz> at work
L777[10:55:35] <gigaherz> we used submodules for managing the source trees
L778[10:55:47] <gigaherz> since the system is built from multiple independent modules
L779[10:55:50] <gigaherz> that can be optionally loaded
L780[10:55:54] <gigaherz> so the master repository
L781[10:55:59] <gigaherz> would reference each component module
L782[10:56:03] <gigaherz> they gave up on it
L783[10:56:09] <gigaherz> and switched to using a script
L784[10:56:11] <Barteks2x> actually, what is the correct way to remove a submodule that won't cause issues later?
L785[10:56:14] <gigaherz> so we now do like
L786[10:56:19] <gigaherz> git clone blah
L787[10:56:26] <gigaherz> scripts/clone_all.sh
L788[10:56:44] <gigaherz> scripts/gitall.sh pull
L789[10:56:50] <gigaherz> etc
L790[10:57:01] <Barteks2x> I need to stop[ using submodule anyway because grgit doesn't like them
L791[10:57:14] <gigaherz> there's a file or folder inside .git
L792[10:57:17] <gigaherz> and the .gitmodules
L793[10:57:25] <gigaherz> I usually end up removing them by hand
L794[10:57:52] <Barteks2x> I thought I had to do that because I removed it the wrong way...
L795[10:58:23] <Barteks2x> anyway, how can I get that submodule back?
L796[10:58:31] <gigaherz> I have never been able to find "theright way"
L797[10:58:31] <Barteks2x> the directory is there
L798[10:58:42] <Barteks2x> but git doesn't recognize it as submodule
L799[10:58:50] <gigaherz> not sure that git will let you add a submodule if the path already exists
L800[10:58:59] <gigaherz> but I have no idea
L801[10:59:44] <Barteks2x> mv TheSubmodule ../; git whatever; rm -r TheSubmodule; mv ../TheSubmodule ./ would probably work
L802[11:01:51] ⇦ Quits: Naiten (Naiten@77.35.175.198) (Read error: Connection reset by peer)
L803[11:05:11] <Xilef11> "mod won't run on 1.11.2: it wants 1.11.2" WTF? http://prntscr.com/dywbc9
L804[11:05:51] ⇨ Joins: AstralSorcerer (~AstralSor@rrcs-24-97-96-98.nys.biz.rr.com)
L805[11:05:52] <TechnicianLP> 1.11.2) up to but excluding
L806[11:06:05] <Xilef11> uh, derp
L807[11:06:10] <williewillus> lol
L808[11:09:59] ⇨ Joins: shadekiller666 (~shadekill@adsl-108-71-39-199.dsl.lsan03.sbcglobal.net)
L809[11:10:42] ⇦ Quits: TangentDelta (~tangentde@c-68-37-224-83.hsd1.mi.comcast.net) (Remote host closed the connection)
L810[11:15:15] ⇦ Parts: Redrield (~Redrield@when.will.i.stop.getting.kicked.for.botspam.redrield.com) (ERC (IRC client for Emacs 25.1.1)))
L811[11:18:06] ⇦ Quits: AstralSorcerer (~AstralSor@rrcs-24-97-96-98.nys.biz.rr.com) (Ping timeout: 194 seconds)
L812[11:18:38] ⇨ Joins: Ashindigo_ (uid202308@id-202308.hathersage.irccloud.com)
L813[11:21:59] *** diesieben|away is now known as diesieben07
L814[11:25:46] ⇦ Quits: CoderPuppy (~cpup@32.218.112.213) (Ping timeout: 206 seconds)
L815[11:25:56] ⇨ Joins: cpup (~cpup@32.218.112.213)
L816[11:26:45] <shadekiller666> i have blocks that place additional blocks in the onBlockPlaced method
L817[11:27:35] <shadekiller666> this works for placing the block via the item, but when the block is placed via /setblock, it only places the block itself, because it doesn't call onBlockPlaced
L818[11:28:07] <diesieben07> onBlockAdded is called every time setBlockState is called with your block
L819[11:42:15] ⇦ Quits: Xilef11 (~xilef11@209.195.101.19) (Quit: Leaving)
L820[11:50:36] ⇦ Quits: cpup (~cpup@32.218.112.213) (Ping timeout: 194 seconds)
L821[11:50:48] ⇨ Joins: cpup (~cpup@32.218.112.213)
L822[12:02:04] <shadekiller666> ok
L823[12:21:15] ⇨ Joins: Samario (~Samario@cpc5-bigg3-2-0-cust219.9-2.cable.virginm.net)
L824[12:25:02] ⇨ Joins: bjorguv (~reidboyce@c-73-83-133-41.hsd1.wa.comcast.net)
L825[12:31:55] ⇦ Quits: Kaiyouka (~IdiotNono@c-75-71-231-133.hsd1.co.comcast.net) (Ping timeout: 384 seconds)
L826[12:32:59] ⇦ Quits: primetoxinz (~primetoxi@ip68-107-226-229.hr.hr.cox.net) (Quit: Leaving)
L827[13:02:49] ⇦ Quits: ThePsionic (~Psi@ip5457f909.direct-adsl.nl) (Read error: Connection reset by peer)
L828[13:03:54] *** diesieben07 is now known as diesieben|away
L829[13:04:02] *** diesieben|away is now known as diesieben07
L830[13:05:07] <shadekiller666> is there a way to determine if an IBlockState has a property that accepts EnumFacing values?
L831[13:06:41] *** Abrar|gone is now known as AbrarSyed
L832[13:08:24] <gigaherz> shadekiller666: look at the default implementation of rotateBlock
L833[13:08:51] <gigaherz> or withRotation
L834[13:08:52] <gigaherz> whichever
L835[13:09:23] <gigaherz> or this
L836[13:09:23] <gigaherz> https://github.com/gigaherz/PackingTape/blob/master/src/main/java/gigaherz/packingtape/tape/BlockPackaged.java#L136,L162
L837[13:09:39] ⇨ Joins: Vazkii (~Vazkii@144.134.37.188.rev.vodafone.pt)
L838[13:09:51] <williewillus> people should also be implementing the vanilla methods :P
L839[13:09:55] <williewillus> Block.withRotation/withMirror
L840[13:12:13] *** diesieben07 is now known as diesieben|away
L841[13:12:21] <shadekiller666> williewillus, i know, the problem is, i have a block that has Up as its default facing, and if i want to place it facing north, without knowing exactly what PropertyDirection/PropertyEnum it uses for its key, i can't just say "set your facing to north"
L842[13:12:40] <shadekiller666> withRotation is nice, assuming you're rotating around the Y axis
L843[13:12:45] <PaleoCrafter> u wot
L844[13:13:12] <gigaherz> shadekiller666: blocks should face north by default ;P
L845[13:13:36] <gigaherz> I mean
L846[13:13:44] <gigaherz> it's how vanilla does it, and how the json format works best and such
L847[13:13:57] <gigaherz> and yes
L848[13:14:05] <gigaherz> withRotation is designed specifically for structures
L849[13:14:12] <gigaherz> so that the structore can be "faced"
L850[13:14:17] <gigaherz> so it's meant for rotating around Y
L851[13:14:22] <gigaherz> which means up won't change
L852[13:14:54] <shadekiller666> right
L853[13:15:09] <gigaherz> structure*
L854[13:15:10] <shadekiller666> i'm working on what is essentially an extension of the vanilla structure system
L855[13:15:24] <shadekiller666> and part of that extension is the ability to make structures that face up/down
L856[13:15:29] <gigaherz> heh
L857[13:16:33] ⇨ Joins: McJty (~jorrit@94-224-154-146.access.telenet.be)
L858[13:16:56] <bjorguv> why do people do com.yourname.modid?
L859[13:17:04] <williewillus> convention
L860[13:17:06] <williewillus> and you don't have to
L861[13:17:13] <williewillus> I find the com thing stupid so I just do williewillus.modid
L862[13:17:43] <bjorguv> could I just do modid?
L863[13:17:44] ⇦ Quits: McJty (~jorrit@94-224-154-146.access.telenet.be) (Client Quit)
L864[13:17:50] <gigaherz> bjorguv: the convention is
L865[13:17:55] <gigaherz> that you should use a domain you own
L866[13:17:56] <gigaherz> so like
L867[13:18:04] ⇨ Joins: McJty (~jorrit@94-224-154-146.access.telenet.be)
L868[13:18:04] <gigaherz> if you had a website "bjorguv.net"
L869[13:18:15] ⇨ Joins: KnightMiner (~KnightMin@107-1-23-59-ip-static.hfc.comcastbusiness.net)
L870[13:18:17] <gigaherz> and you host your mod in "bjorcraft.bjorguv.net"
L871[13:18:21] <shadekiller666> gigaherz, in that code you linked, is "newState.getPropertyKeys()" the same thing as "IBlockState.getPropertyNames()"?
L872[13:18:27] <williewillus> yeah
L873[13:18:29] <gigaherz> you *should* use "net.bjorguv.bjorcraft" as the root package
L874[13:18:30] <williewillus> it got renamed
L875[13:18:35] <gigaherz> shadekiller666: it was renamed
L876[13:18:46] <shadekiller666> i'm in 1.10.2
L877[13:18:50] <Ashindigo_> I just add the com because it looks mildly weird without it
L878[13:18:52] <shadekiller666> so yes
L879[13:18:57] <gigaherz> not stable_29 though
L880[13:18:58] <gigaherz> ;P
L881[13:19:01] <McJty> com indicates commercial
L882[13:19:06] <McJty> You might want to use org instead
L883[13:19:15] <williewillus> or just omit it if you don't actually have the domain xP
L884[13:19:20] <bjorguv> gigaherz ah ok
L885[13:19:25] <gigaherz> i use "gigaherz.mymod.*"
L886[13:19:30] <gigaherz> I don't bother with the domain
L887[13:19:30] <williewillus> your username is usually unique enough
L888[13:19:56] <McJty> Me too. There are not that many McJty's around luckily :-)
L889[13:20:31] <Ashindigo_> Hopefully I'm the only ashindigo
L890[13:20:51] <TechnicianLP> he says an has a _ on his name
L891[13:21:18] <TechnicianLP> or is that one intentional?
L892[13:21:33] <gigaherz> I'm sadly not the only "gigaherz" in the world
L893[13:21:43] <gigaherz> WHY WOULD OTHER PEOPLE ALSO CHOSE TO IGNORE THE T?!
L894[13:21:59] <gigaherz> but yeah
L895[13:22:00] <gigaherz> me: https://twitter.com/therealgigaherz
L896[13:22:11] <gigaherz> not me: https://twitter.com/gigaherz
L897[13:22:32] <Ashindigo_> Im ingame with eira on other channels
L898[13:24:04] ⇨ Joins: Savos (~Savos@CPEf0f24903d453-CMf0f24903d450.cpe.net.cable.rogers.com)
L899[13:27:39] ⇨ Joins: Daomephsta (~Leviathan@90.22.226.49.dyn.cust.vf.net.nz)
L900[13:31:29] ⇨ Joins: Kaiyouka (~IdiotNono@c-75-71-231-133.hsd1.co.comcast.net)
L901[13:35:46] <bjorguv> whoever suggested pahimars tutorials to me tyyy!
L902[13:37:10] <shadekiller666> i wish Block had a setFacing() method that would return an IBlockstate with the given facing direction, or return the one that is passed in as a default
L903[13:37:32] <williewillus> not all blocks have facing
L904[13:37:46] <shadekiller666> or if the state actually uses EnumFacing.Axis, it could read the axis of the one provided and return a proper version
L905[13:37:46] <Ashindigo_> Face it, not all blocks have facing
L906[13:37:49] <shadekiller666> i know
L907[13:38:16] <shadekiller666> hence why it would return the state passed in by default, like Block.withRotation() and Block.withMirror() do
L908[13:38:22] * Ashindigo_ makes more bad puns
L909[13:40:16] ⇦ Quits: McJty (~jorrit@94-224-154-146.access.telenet.be) (Quit: Leaving)
L910[13:44:30] ⇦ Quits: williewillus (~williewil@cpe-24-28-24-13.austin.res.rr.com) (Quit: Leaving)
L911[13:54:14] <Daomephsta> I'm trying to create an IForgeRegistry using RegistryBuilder. I used the line that builds the Entity registry as an example, but MC crashes in init. The crash report and all classes I think are relevant can be found in this gist: https://gist.github.com/Leviathan143/73a8af7a2f4f15af1a8e293a1bb6c5db
L912[13:54:27] ⇨ Joins: quadraxis (~quadraxis@cpc77293-basf12-2-0-cust699.12-3.cable.virginm.net)
L913[13:58:42] ⇨ Joins: killjoy (~killjoy@cpe-2606-A000-1118-8158-1423-70B6-FAED-17F6.dyn6.twc.com)
L914[14:07:07] <bjorguv> if class x implements y and class z extends x does class z also implement y?
L915[14:07:22] <killjoy> yes
L916[14:07:39] <TechnicianLP> on which format is th Quat4f in TRSRTransformation?
L917[14:07:48] <gigaherz> it's a quaternion
L918[14:07:57] <gigaherz> it's in ... quaternion format.
L919[14:07:57] <gigaherz> XD
L920[14:08:09] <TechnicianLP> so smae as Gl.rotate?
L921[14:08:14] <gigaherz> nope
L922[14:08:28] <gigaherz> but resonably close
L923[14:08:39] * TechnicianLP goes off looking up what a quaternion is
L924[14:08:43] ⇨ Joins: Flaeme (sid36625@id-36625.ealing.irccloud.com)
L925[14:09:04] <gigaherz> happy mindblow
L926[14:09:08] <Daomephsta> Sorry if I'm bothering anyone, but are my messages visible? They're a different colour, and I've been unable to find out why
L927[14:09:22] <TechnicianLP> no messages here
L928[14:09:27] <gigaherz> http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/
L929[14:09:39] <gigaherz> Daomephsta: maybe because they are yours?
L930[14:09:47] <Daomephsta> That's what I figured
L931[14:09:54] <gigaherz> I missed your line
L932[14:09:54] <gigaherz> sec
L933[14:09:57] <Daomephsta> Just not used to IRC
L934[14:09:57] ⇦ Quits: Ipsis (~Ipsis@82-69-71-184.dsl.in-addr.zen.co.uk) (Ping timeout: 384 seconds)
L935[14:10:37] <gigaherz> https://github.com/gigaherz/Everpipe/blob/master/src/main/java/gigaherz/everpipe/pipe/connectors/ConnectorHandler.java
L936[14:10:39] <gigaherz> this was working for me
L937[14:11:07] <shadekiller666> gigaherz, glRotate and quaternions aren't close at all :P
L938[14:11:10] <TechnicianLP> how invented that complicated thing
L939[14:11:14] <TechnicianLP> who*
L940[14:11:26] <gigaherz> shadekiller666: actually
L941[14:11:30] <gigaherz> there's a very simply formula
L942[14:11:35] <gigaherz> for converting axis-angle to quaternion
L943[14:11:58] <gigaherz> which makes them closer than I thought initially
L944[14:11:58] <gigaherz> ;p
L945[14:12:10] <gigaherz> TechnicianLP: very clever mathematicians
L946[14:12:14] <gigaherz> just keep this in mind
L947[14:12:14] <gigaherz> qx = ax * sin(angle/2)
L948[14:12:14] <gigaherz> qy = ay * sin(angle/2)
L949[14:12:14] <gigaherz> qz = az * sin(angle/2)
L950[14:12:14] <gigaherz> qw = cos(angle/2)
L951[14:12:29] <gigaherz> where ax must be normalized to a unit vector
L952[14:12:41] <gigaherz> and you can construct your quaternions ;P
L953[14:12:46] <TechnicianLP> thats why i dont like mathematicians ... they overcomplicate everything
L954[14:12:56] <gigaherz> that's not maths problems
L955[14:13:06] <gigaherz> quaternions simplify a LOT the maths involved in doing 3D rotations
L956[14:13:20] <gigaherz> and are much cheaper to compute than a 3x3 matrix multiplication
L957[14:13:28] <TechnicianLP> angle in degrees or (the other thing i dont know th enlish name of)
L958[14:13:43] <gigaherz> Math.sin/cos takes radians
L959[14:13:44] <Daomephsta> radians?
L960[14:14:10] <gigaherz> you can use Math.deg2rad or Math.toRadians
L961[14:14:10] <shadekiller666> quaternions make things way easier, because you can just multiply things with them, yes the actual values in a Quaternion seem arbitrary
L962[14:14:14] <gigaherz> whichever one is the one java has
L963[14:14:43] <shadekiller666> Daomephsta, PI radians = 180 degrees
L964[14:14:57] <shadekiller666> PI/2 radians = 90 degrees
L965[14:15:03] <gigaherz> tau radians = 360 :D
L966[14:15:07] <Daomephsta> I understand radians
L967[14:15:49] <Daomephsta> I was replying to TechnicianLP, suggesting that the other angle unit he didn't know the word for was radians
L968[14:15:56] <shadekiller666> quaternions are basically 4D imaginary numbers
L969[14:16:02] <shadekiller666> oh
L970[14:16:42] <TechnicianLP> quatFromXYZDegrees is a nice function in TRSRTransformation
L971[14:18:25] <gigaherz> that's not axis-angle, though
L972[14:18:28] <gigaherz> that's from euler angles
L973[14:18:33] ⇨ Joins: Doty1154 (~Doty1154@2601:648:8000:134f:cdb3:c2e8:7ee8:76df)
L974[14:19:11] *** diesieben|away is now known as diesieben07
L975[14:19:15] <gigaherz> but if that works for you ;p
L976[14:19:30] <shadekiller666> in a TESR, when iterating over the Collection of BakedQuads given by IBakedModel.getQuads(), is it better to do so in a standard for-each loop, or to do it in Collection.forEach(quad -> {})?
L977[14:19:52] <TechnicianLP> i think it does
L978[14:20:06] <gigaherz> shadekiller666: it's effectively the same
L979[14:20:07] <Daomephsta> shadekiller66: IIRC the performance of both is the same
L980[14:20:15] <shadekiller666> ok
L981[14:20:24] <gigaherz> the lambda may be a negligible bit slower
L982[14:20:45] <diesieben07> it depends.
L983[14:20:48] <shadekiller666> so if there is a difference in optimization its negligible?
L984[14:20:57] <diesieben07> if the lambda is capturing or not
L985[14:21:03] <gigaherz> it's too small for you to care about
L986[14:21:05] <gigaherz> if there is any.
L987[14:21:14] <diesieben07> and if the difference is neglible or not depends on your use case.
L988[14:21:16] <LexMobile> They are nowhere near the same...
L989[14:21:39] <diesieben07> a non-capturing lambda might even be faster than a foreach loop, if forEach gets inlined
L990[14:21:43] <diesieben07> depends on the type of collection though
L991[14:21:55] <diesieben07> a capturing lambda is probably the same, maybe a bit worse
L992[14:21:59] <Daomephsta> A quick google turns up this SO: http://stackoverflow.com/questions/16635398/java-8-iterable-foreach-vs-foreach-loop
L993[14:22:07] <shadekiller666> getQuads() returns a List<BakedQuad>
L994[14:22:18] <diesieben07> depends on the type of list
L995[14:22:32] <diesieben07> if it's an ArrayList and the lambda is non-capturing there is exactly 0 object allocation going on
L996[14:22:41] <diesieben07> where as with foreach it has to allocate the iterator
L997[14:22:41] <LexMobile> For each won't get inlined and when it comes to a simple list a normal few is better
L998[14:22:51] <diesieben07> why would it not get inlined?
L999[14:22:56] <diesieben07> if it's always an ArrayList...
L1000[14:23:04] <LexMobile> I e never seen it
L1001[14:23:22] <LexMobile> And depending how you do it it may not know it's always a list
L1002[14:23:29] <diesieben07> true
L1003[14:23:58] <shadekiller666> OBJLoader returns a Collections.synchronizedList(Lists.newArrayList(this.quads))
L1004[14:24:13] <Daomephsta> Quick question, where do you learn about JVM behaviour like inlining? The JVM specs?
L1005[14:24:34] <killjoy> everything is documented somehwere
L1006[14:24:44] <diesieben07> the specs and there are some nice talks
L1007[14:24:59] <diesieben07> if you want i can link you some
L1008[14:25:01] <killjoy> there's javadocs, mailing lists, the official documentation
L1009[14:25:15] <killjoy> though mailing lists are mainly used for java 9 stuff right now
L1010[14:25:21] <Daomephsta> diesieben07: That'd be great
L1011[14:25:31] <diesieben07> depends on your current knowledge though
L1012[14:26:14] <Daomephsta> Knowledge of bytecode needed I assume?
L1013[14:26:43] <diesieben07> that for sure
L1014[14:27:00] <diesieben07> the jvmls talks are very interesting
L1015[14:27:09] <LexMobile> Always take specs and docs with a grain of salt when it comes to the jitter
L1016[14:27:24] <diesieben07> yeah the jit is a giant evil beast
L1017[14:27:24] <Daomephsta> jitter?
L1018[14:27:33] <diesieben07> just in time compiler
L1019[14:27:36] <Daomephsta> Oh
L1020[14:27:46] <LexMobile> Most of what I say comes from years of extensive testing on hundreds of different platforms which is why it contradicts the docs
L1021[14:27:47] <diesieben07> the thing that makes java fast :D
L1022[14:28:32] <LexMobile> The basic rule is, if you ABSOLUTELY require something fast write it fast
L1023[14:28:37] *** fry is now known as fry|sleep
L1024[14:28:37] <LexMobile> Don't rely on the jitter
L1025[14:28:46] <killjoy> That reminds me. They're optimizing the java 9 compiler to make the .class files faster
L1026[14:28:50] <LexMobile> If you don't care, then write it however you feel
L1027[14:28:52] <shadekiller666> the lambda that i would have in the .forEach is: quad -> LightUtil.renderQuadColor(buffer, quad, 0xFFFFFFFF)
L1028[14:29:15] <LexMobile> Do a normal for
L1029[14:29:28] <shadekiller666> ok
L1030[14:29:51] <shadekiller666> what makes a normal for-each better in this situation?
L1031[14:29:58] <diesieben07> kill: that sounds very un-java like... they've always said they won't do "we've done this nice optimization, but you have to recompile"
L1032[14:30:23] <LexMobile> Simpler to understand, and faster then the method invoke if the jitter can't decide if it's inlineable or not
L1033[14:30:44] <diesieben07> well, a foreach still does method invocation
L1034[14:30:53] <diesieben07> quite a lot, in fact.
L1035[14:30:56] <LexMobile> Only count and get
L1036[14:31:07] <LexMobile> Which are super fast and more likely to be inlined
L1037[14:31:15] <diesieben07> if it's a List then it calls .iterator and then .hasNext and .next
L1038[14:31:21] <LexMobile> Nope
L1039[14:31:25] <diesieben07> uhm.. yeah
L1040[14:31:39] <LexMobile> It's an array list so it treats it like an array
L1041[14:31:46] <diesieben07> no it doesn't :P
L1042[14:31:51] <LexMobile> This is computed at compile time
L1043[14:31:52] <diesieben07> it would be nice if it did...
L1044[14:31:53] <LexMobile> Go check
L1045[14:32:13] <LexMobile> Not exactly like an array but doesn't use a iterative
L1046[14:32:55] <LexMobile> If it didn't do what I'm talking about then Minecraft's code would crash the decompile
L1047[14:33:04] <LexMobile> Cuz that's how I wrote it :)
L1048[14:33:34] <diesieben07> checking right now... because this sounds ... interesting
L1049[14:34:13] <LexMobile> Iirc (it may be only ArrayList, but I think it's all lists)
L1050[14:34:29] <diesieben07> that would be terrible for LinkedList...
L1051[14:34:38] <LexMobile> For(Foo bar : buzz){}
L1052[14:34:58] <LexMobile> Is syntax sugar for:
L1053[14:35:03] <quadraxis> it'd be implements RandomAccess i'd assume
L1054[14:35:30] <gigaherz> seems like it
L1055[14:35:30] <gigaherz> http://docs.oracle.com/javase/7/docs/api/java/util/RandomAccess.html
L1056[14:35:40] <gigaherz> the docs say RandomAccess allows the compiler to generate an indexed for
L1057[14:35:44] <gigaherz> instead of iterator loop
L1058[14:36:06] <diesieben07> yeha, sorry lex... you're wrong. http://i.imgur.com/mmQ5V8s.png
L1059[14:36:08] <LexMobile> For(int x = 0; x < buzz.count(); x++){ Foo bar = buzz.get(x); }
L1060[14:36:28] <diesieben07> it would be cool.... but it doesn't do it. unless i am doing something wrong
L1061[14:36:36] <LexMobile> Wtf.. what compiler you using?
L1062[14:36:41] <diesieben07> javac
L1063[14:37:00] <LexMobile> What district
L1064[14:37:05] <LexMobile> Distro
L1065[14:37:18] <diesieben07> oracle's jdk 8
L1066[14:37:21] ⇨ Joins: CoolerExtreme__ (~CoolerExt@45.249.156.115)
L1067[14:37:25] <diesieben07> latest, i think 112 or whatever
L1068[14:37:35] <diesieben07> 121
L1069[14:37:53] <LexMobile> Interesting I'll put that on my to check list when I get home I have tested j8 on my machine and it works as I described
L1070[14:37:53] <diesieben07> i'll try it on the command line just to eb sure
L1071[14:38:24] <diesieben07> would be news to me, and i have looked at this bytecode multiple times before...
L1072[14:38:29] <diesieben07> even on java 7 and 6
L1073[14:38:55] <LexMobile> As have I again this is research I've done while fixing fernflower
L1074[14:39:01] <fry|sleep> it might be how foreach for ordinary arrays is compiled
L1075[14:39:02] <diesieben07> i believe you
L1076[14:39:08] <diesieben07> yeah thats what i am thinking...
L1077[14:39:20] <diesieben07> because that compiles to just a normal indexed for
L1078[14:39:24] <LexMobile> Tested on OS X windows and Linux all running j6,7&8
L1079[14:39:56] <LexMobile> I know for a fact ordinary arrays are just indexed but lists should be
L1080[14:40:14] <LexMobile> Then again there may be a concurrence issue
L1081[14:40:36] <PaleoCrafter> http://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.14.2 it'd be documented here if it respected RandomAccess, wouldn't it?
L1082[14:40:52] <LexMobile> Never trust docs
L1083[14:41:59] <fry|sleep> docs are a good starting point though :P
L1084[14:42:33] <PaleoCrafter> yeah, and it looks like RandomAccess is just for algorithms to check, not necessarily the compiler
L1085[14:42:39] <PaleoCrafter> Guava appears to use it in some places for optimisations
L1086[14:42:40] ⇨ Joins: primetoxinz (~primetoxi@ip68-107-226-229.hr.hr.cox.net)
L1087[14:43:03] <PaleoCrafter> same for Collections.binarySearch, apparently
L1088[14:43:08] <diesieben07> it would also go very much against their design choice to leave javac simple and put the complex optimizations into the jvm
L1089[14:43:23] ⇦ Quits: CoolerExtreme (~CoolerExt@45.249.156.115) (Ping timeout: 384 seconds)
L1090[14:43:35] <diesieben07> tested again from the command line... definitely generates an iterator loop
L1091[14:43:47] <LexMobile> Odd indeed
L1092[14:44:16] <LexMobile> In phone so can't do any tests myself
L1093[14:44:26] <diesieben07> you know what... i bet mojang's optimizer does something like this.
L1094[14:44:35] <diesieben07> which would explain why you have seen it in bytecode
L1095[14:44:57] <LexMobile> Maybe don't remember proguard doing it
L1096[14:45:12] <LexMobile> Either way
L1097[14:45:35] <LexMobile> Guess our fernflower changes handle both without question
L1098[14:45:41] <LexMobile> Which is nice to know
L1099[14:46:03] <diesieben07> yes.
L1100[14:46:57] <PaleoCrafter> assuming this would be listed here https://www.guardsquare.com/en/proguard/manual/optimizations, but I don't see anything indicating such a thing
L1101[14:47:08] <PaleoCrafter> could be under code/simplification/advanced though
L1102[14:48:17] ⇦ Quits: KnightMiner (~KnightMin@107-1-23-59-ip-static.hfc.comcastbusiness.net) (Ping timeout: 206 seconds)
L1103[14:48:25] <illy> boop o/
L1104[14:50:26] <Daomephsta> Anyone mind helping me with some issues with RegistryBuilder?
L1105[14:50:34] <PaleoCrafter> don't ask to ask
L1106[14:50:39] <Daomephsta> I'm trying to create an IForgeRegistry using RegistryBuilder. I used the line that builds the Entity registry as an example, but MC crashes in init. The crash report and all classes I think are relevant can be found in this gist: https://gist.github.com/Leviathan143/73a8af7a2f4f15af1a8e293a1bb6c5db
L1107[14:51:50] <LexMobile> Interesting what's null?
L1108[14:52:21] ⇦ Quits: Hunterz (~hunterz@62.182.234.189) (Remote host closed the connection)
L1109[14:52:27] <Daomephsta> I haven't been able to figure out exactly what is null
L1110[14:52:50] <LexMobile> Break points are your friend
L1111[14:53:17] <Daomephsta> I did that, couldn't figure it out. I'll try again though
L1112[14:55:26] <diesieben07> the only thing that can be null in makeDelegate would be the result of getRegistry, meaning the registry doesn't exist
L1113[14:55:45] <diesieben07> can you show your CommonProxy?
L1114[14:56:11] <diesieben07> or rather...
L1115[14:56:34] <diesieben07> no, yeah the Commonproxy
L1116[14:58:06] <Daomephsta> https://gist.github.com/Leviathan143/73a8af7a2f4f15af1a8e293a1bb6c5db#file-commonproxy-java
L1117[14:58:30] <Daomephsta> It just calls static init methods of other classes
L1118[14:58:55] <diesieben07> yeah its the VanillaComponents thing then
L1119[14:59:18] <Daomephsta> I've just added that to the gist as well
L1120[14:59:28] <diesieben07> my suspicion is that since you initialize the registry in a static initializer the registry is not actually initialized when you try to construct an object that belongs to the registry
L1121[14:59:51] <diesieben07> you should not be creating registries in a static initializer, use RegistryEvent.NewRegistry
L1122[15:00:01] <Daomephsta> Aah
L1123[15:00:42] <Daomephsta> There are no javadocs, all I had was the registries Forge already had.
L1124[15:01:19] <Daomephsta> I guess I'll write up this conversation later
L1125[15:01:43] <diesieben07> feel free to contribute to the documentation
L1126[15:03:37] <Daomephsta> That's my intent
L1127[15:03:53] ⇦ Quits: myrrlyn (~myrrlyn@2602:306:ccf3:9480:325a:3aff:fe47:ca11) (Remote host closed the connection)
L1128[15:09:05] <Daomephsta> diesbien07: It works now. Thank you very much for your help.
L1129[15:09:27] ⇦ Quits: Daomephsta (~Leviathan@90.22.226.49.dyn.cust.vf.net.nz) (Quit: Leaving)
L1130[15:13:54] ⇦ Quits: Hgreb (~Hgrebnedn@d8D872A6E.access.telenet.be) (Ping timeout: 206 seconds)
L1131[15:20:04] <TechnicianLP> who wrote that method: Matrix4f getMatrix4d()
L1132[15:20:36] <TechnicianLP> !gm getMatrix4d
L1133[15:21:47] <PaleoCrafter> who'd have though, sp614x xD
L1134[15:21:57] <diesieben07> mr. optifine himself.
L1135[15:22:18] ⇨ Joins: immibis (~chatzilla@125-237-220-104.jetstream.xtra.co.nz)
L1136[15:23:56] <TechnicianLP> so i i have the quaternion (0,sin(pi/2),0,cos(pi/2)) that shoul rotate it on the y-axis ... but why does it flip top and bottom?
L1137[15:36:13] ⇨ Joins: Falconerd (~falconerd@ppp118-209-74-141.bras1.mel11.internode.on.net)
L1138[15:36:21] ⇨ Joins: ThePsionic (~Psi@ip5457f909.direct-adsl.nl)
L1139[15:36:26] <Falconerd> mornin'
L1140[15:36:39] ⇦ Quits: Jezza (~Jezza@92.206.161.17) (Ping timeout: 384 seconds)
L1141[15:37:36] ⇨ Joins: Xiphirx (~xiphirx@tucana.whatbox.ca)
L1142[15:46:34] <TechnicianLP> ok i dont get it ... lets make some more jsons instead :(
L1143[15:47:19] <PaleoCrafter> you could use utilities from TRSRTransformation, TechnicianLP :P
L1144[15:47:52] <TechnicianLP> well but how does the quaternin flip it on y? i should only rotate on that axis
L1145[15:48:22] <PaleoCrafter> dunno, I don't understand Quats and hence use the utilities to convert euler angles to a quat :P
L1146[15:49:18] <TechnicianLP> this is what i have currently: https://hastebin.com/ojunuxidep.java
L1147[15:50:33] <PaleoCrafter> try using TRSRTransformation.quatFromXYZ :P
L1148[15:51:24] <PaleoCrafter> looks like you'd need to initialise the quat to (0, 0, 0, 1) for your code to work :P
L1149[15:56:01] <TechnicianLP> even using that method the models is still lit from underneath if i turn it 90 degrees; if i turn it 180 degrees its ok again (except one quad)
L1150[15:56:32] <PaleoCrafter> mind taking a picture?
L1151[15:59:27] <TechnicianLP> http://imgur.com/a/vMI6D
L1152[16:00:25] <TechnicianLP> totally broken texture atm .. but
L1153[16:00:34] <TechnicianLP> too lazy to fix it
L1154[16:02:03] <shadekiller666> anyone know why i'm getting this error, and have ideas on how to fix it: https://bitbucket.org/snippets/shadekiller666/dB74X
L1155[16:02:58] <TechnicianLP> metodhanler is in the message class and has a reference to clientside class
L1156[16:03:14] ⇦ Quits: fivestang (fivestang@shell.xshellz.com) (Ping timeout: 194 seconds)
L1157[16:03:46] <TechnicianLP> messagehandler*
L1158[16:04:08] <shadekiller666> :/
L1159[16:04:24] <shadekiller666> i wish java had preprocessor directives...
L1160[16:04:52] <gigaherz> conditional compilation would be nice
L1161[16:05:01] <gigaherz> even if it's like C# that just supports
L1162[16:05:04] <gigaherz> #define X
L1163[16:05:07] <gigaherz> #if X
L1164[16:05:09] <gigaherz> #else
L1165[16:05:10] <gigaherz> #endif
L1166[16:05:16] <gigaherz> yo ucan't give "X" a value
L1167[16:05:40] <PaleoCrafter> wouldn't really be helpful here, though, unless you want to be a terrible person and release separate client and server jars
L1168[16:05:47] <shadekiller666> #if Side.CLIENT <register renders> #endif
L1169[16:06:44] <TechnicianLP> stupid model!
L1170[16:07:19] ⇨ Joins: TechnicianLP2 (~Technicia@p4FE5614B.dip0.t-ipconnect.de)
L1171[16:07:19] <gigaherz> shadekiller666: that wouldn't work ;P
L1172[16:07:28] <PaleoCrafter> see my statement :P
L1173[16:07:47] <gigaherz> @SideOnly is ugly enough kthx ;p
L1174[16:08:03] <gigaherz> if you REALLY REALLY want to have all the code for a block/item in the same class
L1175[16:08:06] <gigaherz> then you can just do like
L1176[16:08:10] ⇨ Joins: fivestang (~fivestang@shell.xshellz.com)
L1177[16:08:20] <gigaherz> proxy.registerRendering(this);
L1178[16:08:44] ⇦ Quits: iari (~iari___@tyaralin.shadowdrake.eu) (Quit: Leaving)
L1179[16:09:10] ⇨ Joins: Kzitold (webchat@166.137.14.127)
L1180[16:09:16] ⇨ Joins: KnightMiner (~KnightMin@107-1-23-59-ip-static.hfc.comcastbusiness.net)
L1181[16:09:21] <gigaherz> reading up, Is ee that your issue is with client stuff in message handlers
L1182[16:09:21] ⇦ Parts: Xiphirx (~xiphirx@tucana.whatbox.ca) (Leaving))
L1183[16:09:44] <shadekiller666> yep, i thought it was normal to stick the handlers inside the packet class
L1184[16:09:49] <PaleoCrafter> hm... what'd be an appropriate icon for "version history"? a clock or calendar?
L1185[16:09:51] <gigaherz> it is
L1186[16:09:54] <gigaherz> but then the handler can do like
L1187[16:10:02] <gigaherz> MyMod.proxy.handleTheMessage(this)
L1188[16:10:07] <gigaherz> to avoid loading errors
L1189[16:10:32] <gigaherz> example:
L1190[16:10:33] <gigaherz> https://github.com/gigaherz/Ender-Rift/blob/master/src/main/java/gigaherz/enderRift/network/SendSlotChanges.java#L108
L1191[16:10:34] <shadekiller666> because things can't be easy and concise
L1192[16:10:34] <PaleoCrafter> could also make your own "SimpleNetworkWrapper" and separate the handler from the actual packet
L1193[16:10:45] <bjorguv> what is my issue here http://paste.ee/p/M6Usg?
L1194[16:10:48] <PaleoCrafter> and then only register the handler on the required side
L1195[16:10:50] <gigaherz> shadekiller666: blame mojang for using an optimizing obfuscator
L1196[16:10:50] <gigaherz> ;P
L1197[16:11:09] <PaleoCrafter> well, bjorguv, something's null :P
L1198[16:11:30] <gigaherz> https://github.com/gigaherz/Ender-Rift/blob/master/src/main/java/gigaherz/enderRift/client/ClientProxy.java#L73
L1199[16:11:32] <shadekiller666> optimizing in what sense? that its faster? or that its more efficient at being a pain in the ass?
L1200[16:11:34] <bjorguv> which line do I look at?
L1201[16:11:43] <gigaherz> in the sense that the obfuscator takes care of removing unused code
L1202[16:11:47] <PaleoCrafter> make sure non-primitive fields are initialised in your config class
L1203[16:11:55] <gigaherz> which includes removing client-only classes and methods from the server jar
L1204[16:12:10] <gigaherz> among other things
L1205[16:12:26] <PaleoCrafter> the optimisation makes startup marginally faster
L1206[16:12:40] <quadraxis> it deletes everything not used by Mojang
L1207[16:12:45] <gigaherz> okay so
L1208[16:12:47] <gigaherz> wtf, mozilla
L1209[16:12:54] <gigaherz> the "moz://a" part, I liked
L1210[16:12:56] <shadekiller666> which is then overridden by the fact that it still loads all of the resources twice PaleoCrafter
L1211[16:13:01] <gigaherz> https://www.mozilla.org/
L1212[16:13:08] <gigaherz> this cacophony of colors, I do not.
L1213[16:13:10] <PaleoCrafter> the server doesn't load any resources, so nope :P
L1214[16:13:29] <PaleoCrafter> and the "load stuff twice" partially is a Forge thing, iirc?
L1215[16:13:34] <gigaherz> it is
L1216[16:13:41] <gigaherz> but the first load isn't actually loading much
L1217[16:13:43] <gigaherz> from what I heard
L1218[16:14:03] ⇦ Quits: TechnicianLP (~Technicia@p4FE5614B.dip0.t-ipconnect.de) (Ping timeout: 384 seconds)
L1219[16:14:21] <PaleoCrafter> yeah, it's reduced to a minimum
L1220[16:14:44] <bjorguv> paleocrafter: would this be my issue http://paste.ee/p/T0cow?
L1221[16:15:05] <PaleoCrafter> no, why would it? :P
L1222[16:15:22] <PaleoCrafter> look at ConfigHandler:33
L1223[16:15:38] <PaleoCrafter> I didn't look at the package and assumed it was Forge's handler and you were just using the Config annotation
L1224[16:16:04] <PaleoCrafter> but it apparently is yours and hence you just pass null somewhere in your code :P
L1225[16:16:09] ⇦ Quits: fivestang (~fivestang@shell.xshellz.com) (Read error: Connection reset by peer)
L1226[16:16:29] ⇦ Quits: Kzitold (webchat@166.137.14.127) (Ping timeout: 180 seconds)
L1227[16:17:14] <shadekiller666> heres a question
L1228[16:17:50] <shadekiller666> if the client-side packet handlers and the server-side packet handlers need to be separate, how does one register the damned things with the proper "discriminator" values
L1229[16:18:20] <PaleoCrafter> you don't register them separately, you only delegate the handling :P
L1230[16:18:59] <PaleoCrafter> or you separate the handler registration from the packets (by way of a copy of SimpleNetworkWrapper or a wholly custom Netty interface)
L1231[16:19:00] <shadekiller666> and gigaherz, that idea of having the handler defer back to the proxy for handling feels like it negates the point of having the handler be its own thing in the first place :P
L1232[16:19:15] ⇦ Quits: Samario (~Samario@cpc5-bigg3-2-0-cust219.9-2.cable.virginm.net) (Read error: Connection reset by peer)
L1233[16:19:30] <PaleoCrafter> the handler technically could be a method reference to a proxy method, so :P
L1234[16:21:33] <shadekiller666> how so PaleoCrafter
L1235[16:21:41] <gigaherz> it's a single-method interface
L1236[16:21:47] <gigaherz> so the lambda system applies
L1237[16:21:50] <gigaherz> so you could use
L1238[16:21:50] <illy> gigaherz: because of reasons "moz://a" tries to open an application
L1239[16:22:05] <PaleoCrafter> a SAM type, to keep it as general as possible :P
L1240[16:22:05] <gigaherz> proxy::handleMessage in the packet registration
L1241[16:22:10] <gigaherz> illy: hah
L1242[16:22:16] <gigaherz> well it IS a valid URL
L1243[16:22:20] <bjorguv> PaleoCrafter: I don’t understand what my issue is http://paste.ee/p/ZA0xo
L1244[16:22:29] <gigaherz> "moz" protocol, path /a
L1245[16:22:39] <PaleoCrafter> presumably, configuration is null ._.
L1246[16:22:44] <PaleoCrafter> use your brain, dammit :P
L1247[16:23:05] <shadekiller666> is it possible to make one proxy method to handle all of the messages?
L1248[16:23:22] <PaleoCrafter> *that* defies its purpose :P
L1249[16:23:38] <gigaherz> uhm
L1250[16:23:50] <gigaherz> given that the parameter of the method is the message class, no
L1251[16:23:57] <gigaherz> it will handle all of the messages of one class
L1252[16:24:01] <gigaherz> but not ALL of them
L1253[16:24:08] <bjorguv> wait should I delete my current config?
L1254[16:24:09] <shadekiller666> of course not...
L1255[16:24:22] <gigaherz> the whole point of SimpleNetworkWrapper is that it does the discriminant for you
L1256[16:24:24] <gigaherz> ;P
L1257[16:24:35] <PaleoCrafter> we don'T know your code, bjorguv, but I'd guess that you never initialise the configuration field
L1258[16:25:04] <PaleoCrafter> https://github.com/PaleoCrafter/investiture/blob/dev/src/main/java/de/mineformers/investiture/network/FunctionalNetwork.java would be an example of splitting packets from handlers, shadekiller666 :P
L1259[16:25:31] <bjorguv> http://paste.ee/p/9usnP
L1260[16:26:42] <PaleoCrafter> https://github.com/PaleoCrafter/investiture/blob/dev/src/main/java/de/mineformers/investiture/allomancy/core/ClientProxy.java#L104 and https://github.com/PaleoCrafter/investiture/blob/dev/src/main/java/de/mineformers/investiture/allomancy/Allomancy.java#L234 would be usages for each side
L1261[16:27:01] <PaleoCrafter> ...
L1262[16:27:13] <PaleoCrafter> please learn Java before attempting to write a mod, bjorguv
L1263[16:27:21] <bjorguv> loool
L1264[16:27:53] <bjorguv> good advice ty
L1265[16:28:21] <PaleoCrafter> it *is* the *best* advice I could possible give you at this moment :P
L1266[16:28:29] <shadekiller666> i don't suppose that there would be a way of safely obtaining a reference to World via a method in ClientProxy?
L1267[16:28:38] <shadekiller666> or CommonProxy
L1268[16:28:58] <shadekiller666> ClientProxy can just return Minecraft.getMinecraft().theWorld
L1269[16:29:11] <bjorguv> why can’t someone just help an illiterate person out all I need is the fix
L1270[16:29:14] <shadekiller666> what would the CommonProxy version be?
L1271[16:29:16] <PaleoCrafter> why won't you just follow one of the solutions proposed here?
L1272[16:29:33] <PaleoCrafter> bjorguv, because you won't learn shit if people just throw fixed code at you
L1273[16:30:17] <PaleoCrafter> "problem solving skills" isn't synonymous to "let other people fix your shit" :P
L1274[16:30:24] <PaleoCrafter> there is none, shadekiller666
L1275[16:30:46] <PaleoCrafter> although you can acquire a player instance through the context
L1276[16:31:24] <gigaherz> shadekiller666: the client only has one world, but the server has many
L1277[16:31:28] <PaleoCrafter> https://github.com/PaleoCrafter/investiture/blob/dev/src/main/java/de/mineformers/investiture/network/Message.java#L53 look at the methods in here
L1278[16:31:43] <PaleoCrafter> like you could have done when I linked my example :P
L1279[16:32:10] <gigaherz> https://github.com/gigaherz/Ender-Rift/blob/master/src/main/java/gigaherz/enderRift/network/ClearCraftingGrid.java#L42,L43
L1280[16:32:17] <gigaherz> this is how I do server-side packet handlers
L1281[16:32:54] <PaleoCrafter> <PaleoCrafter> hm... what'd be an appropriate icon for "version history"? a clock or calendar?
L1282[16:33:04] ⇨ Joins: Mogul (~mogul@ip-178-202-100-86.hsi09.unitymediagroup.de)
L1283[16:33:12] <Mogul> Ahoihoi
L1284[16:33:18] <gigaherz> hmmmm
L1285[16:33:22] <gigaherz> I'd say a calendar
L1286[16:33:31] <gigaherz> or maybe a hourglass
L1287[16:33:46] <gigaherz> or a book with a hourglass icon in it
L1288[16:34:11] <PaleoCrafter> my iconset doesn't appear to include an hourglass, so calendar it is xD
L1289[16:34:22] <shadekiller666> i don't suppose ctx.getServerHandler().playerEntity works client-side
L1290[16:34:29] <shadekiller666> because why would it
L1291[16:34:49] <gigaherz> nope
L1292[16:35:14] <bjorguv> thanks I appreciate the disdainful life advice
L1293[16:35:16] <shadekiller666> and they didn't bother putting one in getClientHandler()
L1294[16:35:39] <gigaherz> because it's already in Minecraft.getMinecraft ;P
L1295[16:35:43] <gigaherz> so why would they
L1296[16:35:44] <shadekiller666> the thing i hate most about the minecraft code base is the fact that everything is so spread out over 18 different classes
L1297[16:36:51] <gigaherz> if everything was in one single place, the code would be unworkable
L1298[16:37:07] <shadekiller666> you can't just have one class where all of the things related to that class happen
L1299[16:37:17] <gigaherz> you could
L1300[16:37:22] <shadekiller666> its unworkable when its spread out so damn much
L1301[16:37:30] <gigaherz> it's unworkable in both cases
L1302[16:37:30] <PaleoCrafter> it's not *that* spread out :P
L1303[16:37:40] <gigaherz> a middle ground is where it's best
L1304[16:37:56] <gigaherz> Minecraft is quite middle-groundish
L1305[16:37:58] <gigaherz> overall
L1306[16:37:59] <PaleoCrafter> for most stuff, everything's pretty close together
L1307[16:38:19] <gigaherz> IMO, it's a goodthing
L1308[16:38:24] <gigaherz> that the rendering is split away from the logic
L1309[16:38:29] <gigaherz> that allows the server code to be cleaner
L1310[16:38:37] <shadekiller666> rendering should always be split from logic
L1311[16:38:58] <shadekiller666> thats not what i'm complaining about
L1312[16:39:35] <gigaherz> all the quirks you are complaining about, are consequences of the fact that the server jar is physically missing client-only stuff
L1313[16:39:50] <gigaherz> forge does its best to make the issue bearable
L1314[16:40:01] ⇦ Quits: Noppes (~Noppes@ip56530f2e.direct-adsl.nl) (Read error: Connection reset by peer)
L1315[16:40:04] <shadekiller666> i was hoping i could keep my packet handling simple... but i guess i now have to copy an entire api >:(
L1316[16:40:26] ⇦ Quits: KnightMiner (~KnightMin@107-1-23-59-ip-static.hfc.comcastbusiness.net) (Ping timeout: 180 seconds)
L1317[16:40:34] <PaleoCrafter> you could PR Forge to change the simpleimpl to have the handling split from the data :P
L1318[16:40:39] <Mogul> Guys, can you recommend a simple tutorial for creating custom blocks in the most recent versions of MC? I'm not sure when last there have been changes to the way blocks are registered, so perhaps it works the same from 1.9.4 onwards.
L1319[16:40:46] ⇨ Joins: Xiphirx (~xiphirx@tucana.whatbox.ca)
L1320[16:40:49] <Mogul> In any way I have been trying to implement a custom tree log and it's not working as expected in several ways. So I've looked for examples and tutorials and changed my code a dozen times and now I'm just confused as to how this should be done.
L1321[16:41:10] <gigaherz> Mogul: it MOSTLY works the same in 1.9.4 onward
L1322[16:41:16] <Xiphirx> Is there something special I need to do to include Gson as a dependency for my plugin? I'm hitting a `NoSuchMethod` error within Gson itself...
L1323[16:41:19] <gigaherz> the only difference is 1.10.2 added the new registry events
L1324[16:41:22] <gigaherz> that are optional to use
L1325[16:41:48] <gigaherz> Xiphirx: if you use the gson that comes included with minecraft, no
L1326[16:41:48] <Mogul> Well, I had seen them mentioned in the readthedocs, but they didn't seem to work with the most recent 1.11 version.
L1327[16:41:59] <Mogul> Guess I have done it the wrong way...
L1328[16:42:09] <Xiphirx> gigaherz would you happen to know what version of gson comes with minecraft?
L1329[16:42:09] <gigaherz> https://github.com/gigaherz/PackingTape/tree/master/src/main/java/gigaherz/packingtape
L1330[16:42:18] <gigaherz> feel free to check the link
L1331[16:42:21] <gigaherz> it's the simplest mod I have
L1332[16:42:34] <gigaherz> Xiphirx: are you not using the mod development kit?
L1333[16:42:43] <Mogul> Thx, I'll have a look
L1334[16:42:47] <Xiphirx> gigaherz, I am
L1335[16:43:28] <gigaherz> then you should be able to see in eclipse/IDEA
L1336[16:43:35] <gigaherz> that there's a referenced library
L1337[16:43:46] <gigaherz> "com.google.code.gson:2.2.4"
L1338[16:43:52] <Xiphirx> it seems like I compiled against a newer gson
L1339[16:43:54] <Xiphirx> yup
L1340[16:43:56] <Xiphirx> 2.80
L1341[16:43:57] <Xiphirx> lol
L1342[16:45:09] <Xiphirx> hmm
L1343[16:45:52] ⇨ Joins: sinkillerj (~sinkiller@nc-67-232-15-221.dhcp.embarqhsd.net)
L1344[16:46:58] <Xiphirx> and I see the problem... a separate dependency requires gson 2.4+
L1345[16:48:08] <gigaherz> welp, that's a problem
L1346[16:48:16] <Xiphirx> sigh
L1347[16:48:19] <shadekiller666> how does one schedule a task server-side? Minecraft.getMinecraft().addScheduledTask() works for the client
L1348[16:48:20] <gigaherz> can you somehow shade/rename the other dependency so they don't collide?
L1349[16:48:26] <Waterpicker> Are there advantages for a mod developer using structure block generation over a scheamtic?
L1350[16:48:30] <Xiphirx> gigaherz how would I go about that?
L1351[16:48:31] <gigaherz> shadekiller666: did you see my code?
L1352[16:48:38] <bjorguv> PaleoCrafter: you couldn’t tell me to delete one word….. really
L1353[16:48:43] <gigaherz> [23:32] (gigaherz): https://github.com/gigaherz/Ender-Rift/blob/master/src/main/java/gigaherz/enderRift/network/ClearCraftingGrid.java#L42,L43
L1354[16:48:43] <gigaherz> [23:32] (gigaherz): this is how I do server-side packet handlers
L1355[16:48:54] <shadekiller666> oh, WorldServer
L1356[16:49:08] <gigaherz> Xiphirx: not sure
L1357[16:49:29] <gigaherz> I don't know if you can rename the packages before building
L1358[16:49:29] <PaleoCrafter> bjorguv, I could have, but then you wouldn't have put effort into solving it yourself :P
L1359[16:49:36] <PaleoCrafter> which I hope you have now
L1360[16:49:53] <shadekiller666> so for your server-handlers, you leave the processing code in the actual handler, but have to refer to the client proxy for your client-handler processing
L1361[16:50:12] <gigaherz> yes
L1362[16:50:40] <gigaherz> I'd prefer to keep in the handler? yes
L1363[16:50:49] <gigaherz> but I prefer to not waste time worrying about code style
L1364[16:51:11] <gigaherz> "needs client-only things? then it belongs in the proxy"
L1365[16:51:13] <PaleoCrafter> you could go for my approach :P
L1366[16:51:32] <gigaherz> if all you need is Minecraft.getMinecraft().addScheduledTask()
L1367[16:51:33] <gigaherz> though
L1368[16:51:34] <gigaherz> then you could have
L1369[16:52:11] <gigaherz> proxy.addScheduledTask(ctx, () -> { ... });
L1370[16:52:21] <gigaherz> that, in the client proxy, does Minecraft.getMinecraft().addScheduledTask
L1371[16:52:43] <gigaherz> and in the server proxy, does ctx.getServerHandler().blah
L1372[16:52:59] <gigaherz> or even
L1373[16:53:07] <gigaherz> proxy.addScheduledTask(ctx, (player) -> { ... });
L1374[16:53:15] <gigaherz> that returns the appropriate player entity object
L1375[16:53:28] <gigaherz> but chances are you need special processing that will have client-only stuff
L1376[16:53:31] <gigaherz> so /shrug
L1377[16:55:38] <quadraxis> FMLCommonHandler.instance().getWorldThread(ctx.netHandler).addScheduledTask(...)
L1378[16:55:42] <quadraxis> if that's all you need
L1379[16:56:44] <gigaherz> I just realized
L1380[16:56:47] <gigaherz> what I said does NOt work
L1381[16:57:00] *** MrKickkiller is now known as MrKick|Away
L1382[16:57:01] <shadekiller666> TransitMod.channel.registerMessage(((message, ctx) -> {TransitMod.proxy.handleMessage(message, ctx); return null;}), PacketLoadStructures.class, discriminator++, Side.CLIENT);
L1383[16:57:07] <gigaherz> since there's the integrated server that can also receive messages
L1384[16:57:07] <gigaherz> XD
L1385[16:58:35] <shadekiller666> that line is a bit longer than i'd like, but it works :P
L1386[16:59:08] <gigaherz> why not give the method a return type
L1387[16:59:09] <gigaherz> and use
L1388[16:59:15] <gigaherz> TransitMod.proxy::handleMessage or whatever
L1389[16:59:33] <shadekiller666> a return type of IMessage?
L1390[16:59:37] <gigaherz> yes
L1391[16:59:45] <gigaherz> this way you avoid the lambda
L1392[16:59:55] <gigaherz> which you have there just for the return line
L1393[17:00:55] <Mogul> Hm. I've had a look at your code, gigaherz, and even when taking into account the "commons" code in your other project nothing got my attention that would help me in my situation. I rather feel that I am doing most of it right and there's probably just some minor but basic thing that I am doing wrong.
L1394[17:01:15] <gigaherz> can you show your code?
L1395[17:01:37] <gigaherz> and sorry for not giving you the link to the other project
L1396[17:01:44] <gigaherz> I forget I split that up ;P
L1397[17:01:53] <shadekiller666> so it would be "TransitMod.channel.registerMessage(TransitMod.proxy::handleMessage, ..., ...)"?
L1398[17:01:57] <Mogul> Well, it's split up in lots of files, including the jsons, so it would take me time to "compile" it so that I could upload it somewhere.
L1399[17:02:09] <Mogul> But...
L1400[17:02:15] <Mogul> Guess I have some basic questions.
L1401[17:02:18] <gigaherz> not github repository?
L1402[17:02:23] <Mogul> Nope.
L1403[17:02:32] <Mogul> Basically just started.
L1404[17:02:42] <gigaherz> yeah I usually create the repository first XD
L1405[17:02:43] <Mogul> Well - I had a small but working mod in 1.7.10...
L1406[17:02:52] <quadraxis> so upon testing, you can refer to client side stuff in your scheduled task
L1407[17:03:06] <quadraxis> as long as it only runs client side
L1408[17:03:52] <Mogul> Huh, what?
L1409[17:04:00] <gigaherz> that's regarding shadekiller666's issue
L1410[17:04:08] <Mogul> Ah...
L1411[17:04:09] <Mogul> =D
L1412[17:04:58] <Mogul> So - if I got a block that has sub-blocks, just like a regular "BlockOldLog"; do I have to register those variants with "ModelLoader.registerItemVariants"?
L1413[17:04:58] <shadekiller666> hmm?
L1414[17:05:17] <Mogul> Because I think I've seen examples that don't do that.
L1415[17:05:20] <gigaherz> not if you call setCustomModelResourceLocation
L1416[17:05:32] <gigaherz> you only need registerItemVariants if you have an ItemMeshDefinition
L1417[17:05:47] <gigaherz> make sure you call that stuff in PRE-init
L1418[17:05:53] <Mogul> Oh, ok, haven't heard of that yet.
L1419[17:06:00] <gigaherz> because if you do it in init, it will seem to work, but it will be missing the models ;P
L1420[17:06:02] <Mogul> Do I NEED an ItemMeshDefinition?
L1421[17:06:06] <gigaherz> nope
L1422[17:06:09] <Mogul> Ok.
L1423[17:06:13] <gigaherz> unless your models change based on itemstack NBT
L1424[17:06:33] ⇨ Joins: SparkVGX (~SparkVGX@121.99.203.245)
L1425[17:06:37] <Mogul> I guess that's not the case for a simple ItemBlock.
L1426[17:06:42] <gigaherz> yep
L1427[17:07:30] <Mogul> But I might have to make my own ItemBlock for e.g. my own "getUnlocalizedName", right?
L1428[17:07:47] <Mogul> And setHasSubtypes to "true", right?
L1429[17:08:10] <shadekiller666> ... why does WorldServer only have addScheduledTask(Runnable) when Minecraft has that and addScheduledTask(Callable<?>)?
L1430[17:08:30] * gigaherz shrugs
L1431[17:08:49] <gigaherz> Mogul: no the default one delegates that to the block
L1432[17:08:59] <gigaherz> you usually only need to override getMetadata(int) on the itemblock
L1433[17:09:54] <Mogul> gigaherz: Hm, but I think I have only seen examples where that simply returns the damageValue that is put in?
L1434[17:10:13] <gigaherz> yes
L1435[17:10:17] <gigaherz> but the default one always returns 0
L1436[17:10:19] <gigaherz> ¬¬
L1437[17:10:21] <Mogul> Ah, ok.
L1438[17:10:33] <gigaherz> for some stupid reason, mojang implemented it that way
L1439[17:10:38] <gigaherz> instead of returning the given number
L1440[17:11:26] <Mogul> Well.... =D
L1441[17:12:54] <Mogul> So. Assuming I have registered the block via GameRegistry.register and done the same for the ItemBlock - I will then register the custom ModelResourceLocations on the client side, correct? I guess it is.
L1442[17:13:19] <shadekiller666> gigaherz, TransitMod.proxy::new doesn't work "can't find class..."
L1443[17:13:53] <Mogul> So, I got one block with four subblocks - will I have to register those four blocks as custom locations with their own meta and name each?
L1444[17:14:18] <Mogul> But refering to the same ItemBlock?
L1445[17:14:29] <shadekiller666> wait derp
L1446[17:14:36] <shadekiller666> TransitMod.proxy::handleMessage
L1447[17:15:36] <shadekiller666> if this works i'm going to be so stoked
L1448[17:16:21] <gigaherz> note ::new, lol XD
L1449[17:16:24] <gigaherz> not*
L1450[17:16:31] <shadekiller666> i know :P
L1451[17:17:03] <gigaherz> Mogul: yes
L1452[17:17:05] <gigaherz> you'd do like
L1453[17:17:28] <gigaherz> ModelLoader.setcustomMRL(itemblock,0,new MRL(itemblock.getRegistryName(), "variant=1"));
L1454[17:17:33] <gigaherz> ModelLoader.setcustomMRL(itemblock,1,new MRL(itemblock.getRegistryName(), "variant=2"));
L1455[17:17:36] <gigaherz> etc
L1456[17:17:46] <gigaherz> if you want to reference the blockstates file for the items
L1457[17:18:08] ⇨ Joins: KklyAq (KklyAq@p30032-ipngnfx01osakakita.osaka.ocn.ne.jp)
L1458[17:20:22] ⇨ Joins: AforAnonymous (bitch2k@dyn-050-100.vix2.mmc.at)
L1459[17:20:32] <Mogul> gigaherz: Ok, wait, perhaps this is what I do wrong.
L1460[17:20:46] <Mogul> I'm doing like: ModelLoader.setCustomModelResourceLocation(MyBlocksAndItems.myItemBlock, EnumLogType.VARIANT_ONE.getMetadata(), new ModelResourceLocation("mymod:my_log", "inventory"););
L1461[17:21:16] <gigaherz> that should still work
L1462[17:21:29] <gigaherz> i usually prefer to use
L1463[17:21:35] <gigaherz> Item.getItemFromBlock(theBlock)
L1464[17:21:41] <gigaherz> instead of keeping a reference to the ItemBlock object
L1465[17:21:52] <Mogul> Yeah, I had it that way one time before.
L1466[17:22:13] *** amadornes is now known as amadornes[OFF]
L1467[17:22:29] <Mogul> But you wrote "variant=2" and that's what confuses me.
L1468[17:22:55] <Mogul> I read that "inventory" is a variant that is automatically created, but I didn't understand the why.
L1469[17:23:05] <gigaherz> nono
L1470[17:23:07] <Mogul> I just read it everywhere when people register their Models.
L1471[17:23:13] <gigaherz> "inventory" by default
L1472[17:23:20] <gigaherz> tells mc to look for an item model
L1473[17:23:31] <gigaherz> so it would look for
L1474[17:23:43] <gigaherz> ... assets/mymod/models/item/my_log.json
L1475[17:23:44] <gigaherz> first
L1476[17:23:46] <gigaherz> and if not found
L1477[17:23:49] <gigaherz> then it would look for
L1478[17:23:58] <gigaherz> ... assets/mymod/blockstates/my_log.json
L1479[17:24:05] ⇨ Joins: secknv (~secknv@bl14-176-22.dsl.telepac.pt)
L1480[17:24:12] <gigaherz> and inside it, expect to find "variants": { "inventory"
L1481[17:25:09] <Mogul> This confuses me so much... So do I have to define that variant in my blockstates file? Because I can't remember having seen that been done anywhere?
L1482[17:25:19] <gigaherz> not if you have an item json
L1483[17:25:19] <gigaherz> ;p
L1484[17:25:25] <Mogul> Ok. I have one.
L1485[17:25:37] <gigaherz> then use "inventory" and let "mymod:my_log" point to the json
L1486[17:26:02] ⇦ Quits: founderio (~Thunderbi@p200300C4E3DDD6006B673193F32E9B83.dip0.t-ipconnect.de) (Quit: founderio)
L1487[17:26:02] <gigaherz> so a question
L1488[17:26:10] <gigaherz> have you tried to create an actual "basic block" first?
L1489[17:26:15] <gigaherz> without variants or any other crap? ;P
L1490[17:26:36] <gigaherz> I feel like you are getting more confused than necessary because of doing two non-trivial tasks at once
L1491[17:26:37] <Mogul> Well, I managed to create a multipart block with variants....
L1492[17:26:49] <Mogul> That's what confuses me so much - I thought I had understood it.
L1493[17:27:01] *** PaleoCrafter is now known as PaleOff
L1494[17:28:56] <diesieben07> ok, forget about the item json for a second, that is a weird Mojang special case
L1495[17:29:18] <diesieben07> how things work is: you register a ModelResourceLocation, that has 3 parts: domain (modID), path and variant (teh thing after the #)
L1496[17:29:26] <diesieben07> domain and path point to a blockstate
L1497[17:29:38] <diesieben07> blockstate json*
L1498[17:29:43] <diesieben07> variant points to one entry inside that blockstate json
L1499[17:29:48] <diesieben07> that entry then says which model to use
L1500[17:29:53] <diesieben07> does that make sense?
L1501[17:30:10] <diesieben07> don't let "blockstaet" confuse you, this applies to all ModelResourceLocations, item or block
L1502[17:31:26] <shadekiller666> the vanilla nbt structure assets are loaded on the server right?
L1503[17:34:22] <shadekiller666> oh bloody hell
L1504[17:34:23] <shadekiller666> :/
L1505[17:34:45] <shadekiller666> i have json and png files that need to be loaded server-side
L1506[17:35:12] <shadekiller666> but TextureUtil.readBufferedImage() doesn't exist on the server :/
L1507[17:35:27] <diesieben07> the whole resource system is purely client side
L1508[17:35:52] <shadekiller666> guess i'll have to write my own then :P
L1509[17:35:57] ⇨ Joins: Upthorn (~ogmar@108-204-125-173.lightspeed.frokca.sbcglobal.net)
L1510[17:36:06] <diesieben07> ImageIO.read(MyClass.class.getResource("/foo/bar/baz.png"))
L1511[17:37:02] <Mogul> diesieben07: Yeah, that basically makes sense. the ModelResource location takes in a domain+path parameter and a variable.
L1512[17:37:12] <diesieben07> ok, good
L1513[17:37:42] <shadekiller666> ResourceLocations exist on the server don't they? doesn't the game registry use them?
L1514[17:37:43] <diesieben07> now there is a special case, because Mojang. If the model is for an item and the variant is "inventory", it will try and skip the blockstate and directly load a model from models/item
L1515[17:37:48] <diesieben07> yes the do shade
L1516[17:38:18] <diesieben07> Mogul, but, as I say, that's a special case and more like an addendum. try to understand the normal process first
L1517[17:38:33] <diesieben07> (in reality, this whole thing is patched in by forge, but don't think about that :P)
L1518[17:38:35] <Mogul> Ah, but if I just wanna register a block then I have to reference it's respective variant and NOT the "inventory" variant?
L1519[17:38:45] <diesieben07> define "register a block"
L1520[17:39:28] <Mogul> Well, I got a tree log with four variants, let's say the vanilla four from BlockOldLog.
L1521[17:39:44] <diesieben07> ok
L1522[17:39:45] <Mogul> And I want those four variants registered.
L1523[17:39:54] <diesieben07> ok
L1524[17:40:07] <diesieben07> we are only talking about the item form now, right?
L1525[17:40:11] <diesieben07> not the block when placed down?
L1526[17:40:23] <Mogul> Well, do I have to register both seperately?
L1527[17:40:35] <diesieben07> In theory yes, but blocks come with reasonable defautls
L1528[17:40:38] <diesieben07> where as items don't.
L1529[17:40:45] <diesieben07> so blocks usually "just work"
L1530[17:40:47] <gigaherz> mojang hardcodes items
L1531[17:40:55] <Mogul> Gnarl.
L1532[17:40:55] <gigaherz> it's silly
L1533[17:41:11] <diesieben07> basically for every variant you have to do
L1534[17:41:14] <gigaherz> they have a system for blocks, but they keep the items hardcoded.
L1535[17:41:19] <gigaherz> anyhow, gotta sleep, night ppl
L1536[17:41:25] <Mogul> Good night.
L1537[17:41:26] *** gigaherz is now known as ghz|afk
L1538[17:41:54] <diesieben07> ModelLoader.setCustomModelResourceLocation(item, <item metadata for variant>, new MRL(modid, <blockstate json name>, "type=foo")
L1539[17:42:10] <Mogul> ...where "foo" is the respective variant, right?
L1540[17:42:13] <diesieben07> yes
L1541[17:42:19] ⇨ Joins: SquareWheel (~SquareWhe@s0106687f7463986c.ok.shawcable.net)
L1542[17:42:23] <diesieben07> the same process for blocks happens through the statemapper, which has a reasonable defualt
L1543[17:42:37] <Mogul> And not "type=foo,axis=y" ?
L1544[17:42:46] <shadekiller666> diesieben07, do i not have to close the stream that gets passed into ImageIO.read()?
L1545[17:42:56] <diesieben07> well, you need to choose a variant that exists in your blockstate json
L1546[17:43:04] <diesieben07> if oyu have "type=foo,axis=y" in there, you use that
L1547[17:43:10] <diesieben07> vairants are just strings, they are not parsed in a special way.
L1548[17:43:23] <diesieben07> shadekiller666, Class::getResource returns an URL, not an InputStream
L1549[17:43:41] <diesieben07> if you pass in a stream, you'd have to check the docs if it closes it
L1550[17:43:42] <shadekiller666> the method i'm in takes File objects
L1551[17:43:43] <diesieben07> i'd assume not.
L1552[17:43:49] <Mogul> Oh, wait, I thought this "variant=value" was a special syntax. oO
L1553[17:43:49] <diesieben07> then pass in the file?
L1554[17:44:11] <diesieben07> Mogul, nope, it's not. you could just as well make your variant "iliketrees"
L1555[17:44:30] ⇦ Quits: ThePsionic (~Psi@ip5457f909.direct-adsl.nl) (Quit: Leaving)
L1556[17:44:30] <diesieben07> shadekiller666, ImageIO.read can take a File as well
L1557[17:44:55] <diesieben07> and if you must pass in a stream, the docs says the stream will not be closed by the method, so do it in a try-with-resources
L1558[17:45:29] <diesieben07> Mogul, this "property=value,property2=value2" syntax is just what is generated by the default state mapper (the thing that generates the variatns for blocks)
L1559[17:45:46] <diesieben07> but you could register your own that generates "iliketrees" and "ilikecars"
L1560[17:45:54] <shadekiller666> and it does look like all of the ImageIO.read() methods that use a stream also close it
L1561[17:45:59] <Mogul> Hm....
L1562[17:46:24] ⇨ Joins: DaMachinator (~DaMachina@40.112.138.169)
L1563[17:46:26] <diesieben07> shadekiller666, ImageIO.read(InputStream) specifically states that it does not close the stream.
L1564[17:47:02] <shadekiller666> oh
L1565[17:47:24] <shadekiller666> it closes A stream, though i guess it makes an additional stream from the one passed in
L1566[17:47:38] <diesieben07> basically whoever creates the stream closes it
L1567[17:47:42] <diesieben07> if you create it, you close it
L1568[17:47:59] <diesieben07> ImageIO.read(File) will create the stream itself (because you only gave it a file) so it will close that stream
L1569[17:48:13] <diesieben07> ImageIO.read(InputStream) will not close the stream, because it didn't create it.
L1570[17:49:54] <shadekiller666> all of them create an ImageInputStream from whatever is passed in
L1571[17:49:57] <shadekiller666> it closes that stream
L1572[17:50:38] <DaMachinator> Hi, new modder here. I want to get the name/type/whatever of a block at a coordinate offset from a tile entity. How should I go about doing this?
L1573[17:50:56] <diesieben07> shadekiller666, yeah, but ImageInputStream is not actually an InputStream, as in it does not extend InputStream.
L1574[17:51:07] ⇦ Quits: Ashindigo_ (uid202308@id-202308.hathersage.irccloud.com) (Quit: Connection closed for inactivity)
L1575[17:51:15] <DaMachinator> Is there a getBlockAtPosition(int x, int y, int z) that returns the registry name of said block or similar?
L1576[17:51:15] <diesieben07> so closing it does not close any underlying InputStream. this whole image read thing is very weird
L1577[17:51:34] <diesieben07> DaMachinator, World::getBlock will give you the block state at that position
L1578[17:52:00] <diesieben07> BlockPos has many useful methods for "moving it around", e.g. you can do pos.offset(EnumFacing.WEST, 3) to get the position 3 blocks west
L1579[17:52:12] <diesieben07> *getBlockState
L1580[17:52:31] ⇦ Parts: Xiphirx (~xiphirx@tucana.whatbox.ca) (Leaving))
L1581[17:54:17] <DaMachinator> in this case I want the 4 blocks at y-1, (x+-1, z0) and (x0, z+-1)
L1582[17:54:20] <DaMachinator> thanks
L1583[17:55:25] <DaMachinator> does this work in 1.10
L1584[17:55:30] <diesieben07> yes of course.
L1585[17:55:39] <diesieben07> so you want the block DOWN, the block WEST and EAST and the block NORTH and SOUTH
L1586[17:56:22] <diesieben07> so make yourself a collection of those: EnumSet.of(DOWN, WEST, EAST, NORTH, SOUTH). iterate it: for (EnumFacing dir : set) and then move your position in that direction: pos.offset(dir)
L1587[17:56:52] <DaMachinator> problem: there appears to be no function World.getBlockState()
L1588[17:57:06] <Ordinastie> look better
L1589[17:57:07] <diesieben07> then you are not in 1.10 :P
L1590[17:57:18] <DaMachinator> or eclipse is lying to me
L1591[17:57:27] <diesieben07> note, it is not World.getBlockState, that would imply a static method
L1592[17:57:30] <diesieben07> the method is not static.
L1593[17:57:36] ⇨ Joins: Vigaro (Vigaro@2a06:a006:c5:8f::4)
L1594[17:58:18] <DaMachinator> is there a world object
L1595[17:58:36] <diesieben07> depends on the context.
L1596[17:58:38] <Ordinastie> in your TileEntity yes
L1597[17:58:43] <DaMachinator> there apparently is
L1598[17:58:45] <diesieben07> if you are in a TileEntity then yes
L1599[17:58:58] <diesieben07> TileEntity::getWorld iirc
L1600[18:00:32] <SquareWheel> Is there a good way to slow tile entities down? Have it tick only every 30 seconds or so, for performance reasons?
L1601[18:01:06] <Maxwell> "world" magically works in my TE code.
L1602[18:01:08] <SquareWheel> I tried playing with scheduling updates on the attached block, but had no luck.
L1603[18:01:26] <DaMachinator> make a counter, decrement it every tick, when it hits 0 reset the counter and do the thing
L1604[18:01:46] <SquareWheel> I could, but that doesn't seem very performant...
L1605[18:01:53] <diesieben07> SquareWheel, do if (world.getTotlaWorldTime() % 30 != 0) return; at the start of your tick
L1606[18:01:57] <diesieben07> that's the best you can do.
L1607[18:02:17] <DaMachinator> you're running a counter comparison and counter-- every tick
L1608[18:02:19] <Vigaro> You'd be surprised by how easy it is for your processor to perform simple integer operations
L1609[18:02:22] <SquareWheel> I think a counter would actually be more efficient. Modulo is quite slow, isn't it?
L1610[18:02:22] <DaMachinator> that isn't awful
L1611[18:02:32] <diesieben07> modulo is fast enough :P
L1612[18:02:46] <diesieben07> especially if you make it modulo a power of two
L1613[18:02:47] <DaMachinator> it's probably only microseconds of difference
L1614[18:02:57] <diesieben07> but all this doesn't matter
L1615[18:03:15] <diesieben07> what matters in modern computers is cache misses
L1616[18:03:19] <Maxwell> Unless you make a superflat world with 256 layers of the block, that is.
L1617[18:03:28] <diesieben07> because when you get a cache miss you do NOTHING for 100-200 cycles
L1618[18:03:41] <diesieben07> so it doesn't matter if you take 3 cycles or 1 computing if you want to tick this time
L1619[18:04:04] <diesieben07> because a few cycles down you just have a cache miss anyways which dominates ALL of the performance
L1620[18:04:38] <diesieben07> Maxwell, a superflat world out of furnaces actually does not bottleneck because of cpu time last i checked. what kills it is loading/unloading the chunks.
L1621[18:04:41] <diesieben07> not ticking the TEs.
L1622[18:05:30] <SquareWheel> My TE is able to spread up to a certain limit, so I'm just trying to be performance conscious. Thanks for the suggestions.
L1623[18:06:04] <SquareWheel> But just to verify, there's no easy way to do a scheduled update on the block, and have that run the TE update method, is there?
L1624[18:06:17] <SquareWheel> Assuming that'd need to do less work anyway.
L1625[18:06:20] <diesieben07> well, if you want to use scheduled updates you don't need a ticking TE
L1626[18:06:27] <diesieben07> but scheduled updates ... well, they kinda suck
L1627[18:06:34] <SquareWheel> I need to store some NBT in it sadly, or I would.
L1628[18:06:47] <diesieben07> TE and ticking TE are two different things
L1629[18:06:54] <diesieben07> a non-ticking TE will not take any CPU time
L1630[18:07:00] <SquareWheel> I'd love to kill ITickable if I could.
L1631[18:07:09] <SquareWheel> Just not sure how to update it "manually".
L1632[18:07:16] <diesieben07> scheduled updates :P
L1633[18:07:19] <shadekiller666> when does Minecraft.getMinecraft() get initialized?
L1634[18:07:22] <diesieben07> would be one
L1635[18:07:36] <diesieben07> but last time i tried to do that, it was horribly broken when used en masse
L1636[18:07:56] <diesieben07> shadekiller666, in the Minecraft class constructor
L1637[18:08:02] <diesieben07> why would you care?
L1638[18:08:27] <SquareWheel> Hrmm. So just doing a modulo check on tick update would be better than scheduled updates you think?
L1639[18:08:46] <diesieben07> i would try it first and see if you have a performance problem
L1640[18:08:54] <diesieben07> because otherwise all this is just speculation and hand waving
L1641[18:09:06] <SquareWheel> Who doesn't love some premature optimization?
L1642[18:09:17] <shadekiller666> ok, when is getRenderItem() initialized?
L1643[18:09:30] <diesieben07> you should not ever need to call that...
L1644[18:09:45] <SquareWheel> Thanks diesie.
L1645[18:10:02] <DaMachinator> so: worldObj.getBlockState(checkPos.offset(EnumFacing.NORTH)).getBlock().getRegistryName()
L1646[18:10:13] <diesieben07> why do you want the registry name?
L1647[18:10:21] <shadekiller666> Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, meta, MRL)
L1648[18:10:30] <diesieben07> shadekiller666, ModelLoader.setCustomModelResourceLocation
L1649[18:10:35] <shadekiller666> right
L1650[18:10:42] <DaMachinator> diesieben07: to see if it is equal to "aether_rune"
L1651[18:10:44] <diesieben07> are you not the guy who wrote the obj loader? why do you not know this?!ß
L1652[18:10:56] <diesieben07> DaMachinator, don't compare names, compare block instances
L1653[18:11:07] <diesieben07> eg. getBlock() == Blocks.STONE
L1654[18:11:14] <DaMachinator> got it
L1655[18:11:27] <diesieben07> string comparison is slow and error prone in this case
L1656[18:12:37] <DaMachinator> so if(worldObj.getBlockState(checkPos.offset(EnumFacing.NORTH)).getBlock() == ModBlocks.runeAether) {do stuff}
L1657[18:12:38] <shadekiller666> i was unaware that calling that directly was forbidden
L1658[18:12:56] <diesieben07> it's not forbidden... just error prone, like you found out
L1659[18:13:12] <diesieben07> use setCustomMRL in the correct event and it will never fail
L1660[18:13:16] <diesieben07> DaMachinator, looks alrihgt.
L1661[18:13:50] <shadekiller666> if i'm running a dedicated server out of my dev env, as well as a client instance, how do i connect to the server?
L1662[18:13:56] <Maxwell> localhost
L1663[18:14:31] <Maxwell> or 127.0.0.1, or in the case of IPv6, ::1 (not sure if minecraft supports that, though)
L1664[18:15:23] ⇨ Joins: ScottehBoeh (~ScottehBo@95.144.45.222)
L1665[18:15:27] <ScottehBoeh> Salutations all :D
L1666[18:15:38] <ScottehBoeh> Crayfish is doing his Modding Week livestream xD (1 mod per day) can't wait
L1667[18:15:45] <ScottehBoeh> starts in like 14 mins
L1668[18:18:13] <DaMachinator> this should work now
L1669[18:18:15] <DaMachinator> i hope
L1670[18:20:50] <Mogul> Hm. Does that state mapper set a special order on the variant string? So, e.g., if I got an "axis" and a "type" then e.g. "axis=y,type=normal" would be valid but "type=normal,axis=y" would not be?
L1671[18:20:59] <tterrag> correct
L1672[18:21:01] <tterrag> it's alphabetical
L1673[18:21:02] <diesieben07> yes, it orders alphabetically
L1674[18:21:24] <shadekiller666> hmm, i guess if the server hits a breakpoint it kicks everyone :P
L1675[18:21:38] <tterrag> after 30 seconds or so, probably
L1676[18:21:41] <tterrag> whenever the keepalive limit is
L1677[18:21:52] <Mogul> Huh, ok. But I see that I already ordered them alphabetically. I now see a typo too though...
L1678[18:23:26] ⇦ Quits: psxlover (psxlover@ppp-94-64-176-30.home.otenet.gr) (Ping timeout: 180 seconds)
L1679[18:24:16] <bjorguv> what is the default assets location?
L1680[18:25:23] <tterrag> /assets/[domain]/...
L1681[18:34:32] ⇨ Joins: Techjar (~Techjar@server.techjargaming.com)
L1682[18:37:01] ⇨ Joins: psxlover (psxlover@athedsl-289049.home.otenet.gr)
L1683[18:39:27] *** Davnit_ is now known as Davnit
L1684[18:47:03] ⇦ Quits: psxlover (psxlover@athedsl-289049.home.otenet.gr) (Ping timeout: 384 seconds)
L1685[18:49:43] <shadekiller666> when processing a packet, does everything have to go through addScheduledTask?
L1686[18:50:31] <diesieben07> technically no, but practically yes.
L1687[18:50:43] ⇨ Joins: AstralSorcerer (~AstralSor@128.151.114.24)
L1688[18:54:10] ⇨ Joins: psxlover (psxlover@athedsl-4427553.home.otenet.gr)
L1689[18:56:04] *** diesieben07 is now known as diesieben|away
L1690[19:11:28] <bjorguv> ughhhh can’t fcking get my textures to load :(
L1691[19:12:21] <shadekiller666> yay my mods run on the dedicated server! :D
L1692[19:12:50] <Mogul> bjorguv: Did you preface it with your mod-id? Like in: yourmod:blocks/your_texture_file
L1693[19:13:05] <Mogul> In your block model, I mean.
L1694[19:15:10] <bjorguv> im in 1.7.10 and working with items but yes I did
L1695[19:15:11] ⇦ Quits: TechnicianLP2 (~Technicia@p4FE5614B.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
L1696[19:15:48] <Mogul> Oh, ok, why still 1.7.10?
L1697[19:16:07] <bjorguv> other mods that I need for my pack aren’t updated
L1698[19:16:20] <Mogul> Ah, like Thaumcraft?
L1699[19:16:21] ⇨ Joins: TechnicianLP2 (~Technicia@p4FE5614B.dip0.t-ipconnect.de)
L1700[19:16:51] <bjorguv> no Flenix mods and psychedelicraft
L1701[19:17:26] <Mogul> Ah, never played with those.
L1702[19:17:53] <bjorguv> flenix mods are sick
L1703[19:17:57] <Mogul> I just thought that most mods seem to at least be at the brink of updating.
L1704[19:18:36] <tterrag> and making more mods on 1.7.10 is definitely going to solve the problem you're having, right? :P
L1705[19:18:47] <Mogul> That's the thing.
L1706[19:18:53] <tterrag> not to mention the overwhelming number of mods that are no longer on 1.7.10 (and not receiving any support)
L1707[19:19:01] <Mogul> I think we have had enough of 1.7.10.
L1708[19:19:37] <bjorguv> well those mods are necessary for my server without them it would be lame and unnoriginal.
L1709[19:19:50] <tterrag> so update them?
L1710[19:19:56] <tterrag> or...find an alternative?
L1711[19:19:57] <bjorguv> maybe once I gain more skill with java and working with forge
L1712[19:20:03] <Mogul> So I am counting on other important mods already having been updated at the time that I will have my own mod up and running; should that ever happen...
L1713[19:20:22] <bjorguv> believe me there is no alternative I’ve searched every corner of curseforge
L1714[19:20:31] <bjorguv> and other places but mostly there
L1715[19:20:41] <Mogul> Hm, let me check what Flenixes mod does...
L1716[19:20:50] <bjorguv> flenix cities core
L1717[19:21:00] <bjorguv> is the one that key to my server
L1718[19:22:01] <Mogul> With the economy system?
L1719[19:22:04] <bjorguv> yea
L1720[19:22:27] <Mogul> Hm, well, I guess you could try an economy system for Sponge, though I have not tried it yet.
L1721[19:22:29] <Maxwell> And that one seems to not have visible source
L1722[19:23:02] <bjorguv> sponge?
L1723[19:23:23] <Mogul> It's like a bridge between modded Forge servers and Bukkit servers.
L1724[19:23:33] <Mogul> Or something.
L1725[19:23:43] <Disconsented> Ehh
L1726[19:23:45] <Disconsented> not really
L1727[19:23:48] <Disconsented> That was Cauldron
L1728[19:23:54] <Mogul> But in the end it's supposed to give you solid bukkit-like features, right?
L1729[19:23:59] <Disconsented> Sponge is a new API, they just support a forge version themselves
L1730[19:24:34] <bjorguv> yea a plugin isn’t really what I’m looking for
L1731[19:25:15] ⇨ Joins: KnightMiner (~KnightMin@107-1-23-59-ip-static.hfc.comcastbusiness.net)
L1732[19:25:28] <gabizou> bjorguv what are you looking for?
L1733[19:26:10] <bjorguv> a mod with a physical currency that has ATMs and debit cards
L1734[19:26:40] <Disconsented> Well you can make that in Computer Craft
L1735[19:26:46] <Disconsented> worst case
L1736[19:27:22] <bjorguv> easier to stay on 1.7.10
L1737[19:27:55] <Mogul> Yeah, but you might stay there forever, given that you have no influence on when (or if) those mods are going to be updated.
L1738[19:28:12] <Disconsented> But then eww legacy, its the same arguement that kept everyone on 1.6..
L1739[19:29:12] <Mogul> But other then with 1.6 we are now FOUR versions behind when using 1.7.10.
L1740[19:29:32] <Mogul> It's like those people still playing on 1.4.7 for years, only because it was the last version with the original RedPower.
L1741[19:29:47] <bjorguv> yea but like I said once I gain more skill working with java and forge I may request permission to port the required mods
L1742[19:29:54] ⇦ Quits: KnightMiner (~KnightMin@107-1-23-59-ip-static.hfc.comcastbusiness.net) (Client Quit)
L1743[19:30:01] <bjorguv> right now I can’t even get item textures figured out
L1744[19:30:05] <Mogul> =D
L1745[19:30:27] <SparkVGX> textures are simpler in the newer versions ;D
L1746[19:31:05] <bjorguv> lol
L1747[19:32:06] <Mogul> I rather get the feeling that only complicated things are easier in newer version, simpler things seem much harder to me.
L1748[19:35:13] <Mogul> By the way: It seems that it was really just a) some typos in my newest blockstate file, and b) unalphabetically ordered variant strings in my previous attempt. Both work now, more or less.
L1749[19:36:23] <Mogul> BUT: The state of the block does not seem to get saved when I exit the single player game. What might cause that, where should I look? Probably in my Block class?
L1750[19:37:39] ⇨ Joins: widd (~widd@wunderkind.dad.town)
L1751[19:37:42] <tterrag> getMetaFromState/getStateFromMeta
L1752[19:37:45] <tterrag> you must implement those
L1753[19:37:54] <Mogul> I have, but probably made a mistake there.
L1754[19:37:58] <widd> hey guys, came here from #FTB since this might be a very specific technical issue
L1755[19:38:03] <tterrag> Mogul: is your block a TE?
L1756[19:38:09] <tterrag> do you mean TE info? or literal blockstate?
L1757[19:38:12] <widd> running java 1.8 on gentoo and all HTTPS connections cause jvm crashes
L1758[19:38:18] <Mogul> tterrag: Nope, just a simple log block.
L1759[19:38:27] <tterrag> then definitely your state serialization is broken
L1760[19:38:42] <tterrag> widd: that sounds beyond the scope of MC
L1761[19:39:03] <Mogul> tterrag: Ok, guess I will just adhere to the vanilla example in BlockOldLog then.
L1762[19:39:09] <widd> yeah, just was hoping it might be something somebody had run into previously
L1763[19:39:13] <tterrag> Mogul: could you post your existing code?
L1764[19:39:19] <widd> it started out of nowhere with no pkg changes
L1765[19:39:22] <tterrag> copying vanilla code without understanding it is never a good idea
L1766[19:39:44] <Mogul> tterrag: Well, that's why I coded my own, so that I understand it. Seems I didn't. xD
L1767[19:39:47] <widd> 50% of the time it causes jvm crash, other 50% just exceptions from java
L1768[19:39:54] <widd> MC eats them and just tells me the auth servers are down
L1769[19:39:55] <Mogul> And I would have to upload my code first somewhere.
L1770[19:40:03] <tterrag> not necessarily
L1771[19:40:04] <tterrag> just use gist
L1772[19:41:05] <Mogul> Oh wait, I think I already have it.
L1773[19:41:21] ⇦ Quits: Vazkii (~Vazkii@144.134.37.188.rev.vodafone.pt) (Quit: seeya m8 thx 4 playin)
L1774[19:42:43] <Mogul> tterrag: Yepp, it works now. I had: " switch (meta & 0b1100) " and then compared if that was 0, 1, 2 or 3.
L1775[19:42:48] <Mogul> Which it never was.
L1776[19:42:55] <Mogul> I made it " switch ((meta & 0b1100) >>> 2) "
L1777[19:44:27] <tterrag> btw that's the same as meta >> 2 :P
L1778[19:44:36] <tterrag> I don't think you'll ever get a number >15
L1779[19:44:58] <Mogul> Probably not.
L1780[19:45:09] <tterrag> but if you want to be safe, do (meta >> 2) & 4
L1781[19:45:13] <tterrag> err 3 :P
L1782[19:45:37] <Mogul> But what would be the big difference between that and my version?
L1783[19:45:37] <tterrag> don't need to worry about signed shifts
L1784[19:45:44] <tterrag> less operations (if you drop the &)
L1785[19:46:13] <Mogul> But not if I do the "& 0b11", right?
L1786[19:47:27] <Mogul> In any way this leads me to perhaps the last problem. If I got a blockstate file that defines texture for respective variants and does NOT use their own models - how do I get the ItemBlock use the correct texture? Or do I HAVE to have an ItemBlock for each?
L1787[19:47:38] <Mogul> Eh, an item model, I mean.
L1788[19:48:48] <quadraxis> use ItemMultiTexture?
L1789[19:49:04] <Mogul> Huh, that's new to me.
L1790[19:49:24] <tterrag> uhhh....that has nothing to do with models
L1791[19:49:31] <tterrag> you need to setCustomModelResourceLocation
L1792[19:51:55] *** DarkevilAway is now known as Darkevilmac
L1793[19:53:06] <Mogul> tterrag: Well, I need to do that anyway, right? An hour ago I was told that MC automatically looks for a respective item model; it that does not exist it looks for a variant called "inventory" in my blockstates file.
L1794[19:54:12] ⇦ Quits: CoolerExtreme__ (~CoolerExt@45.249.156.115) (Ping timeout: 194 seconds)
L1795[19:54:19] <tterrag> you need to do that for each damage of your item
L1796[19:54:20] <quadraxis> you do need to do that anyway, but you'll need to call setCustomMRL for each meta value
L1797[19:54:57] <Mogul> Well, I got four variants so I registered them with meta 0, 1, 2 and 3 respectively.
L1798[19:55:03] ⇦ Quits: IceDragon (~ThatGuy@63.143.96.21) (Ping timeout: 384 seconds)
L1799[19:55:15] <Mogul> And they show up correctly when placed in world.
L1800[19:55:20] <Mogul> Just not when held as an item.
L1801[19:55:57] <tterrag> do you have the respective item model? or inventory state?
L1802[19:56:14] <quadraxis> you should use an ItemMultiTexture or similar for your registered ItemBlock
L1803[19:56:29] <Mogul> I have on item model that refers to my old block model that I now don't use anymore.
L1804[19:59:32] <Mogul> quadraxis: I'm looking into it.
L1805[20:00:36] ⇨ Joins: Cooler (~CoolerExt@45.249.156.108)
L1806[20:03:31] <Mogul> Why does it take in two blocks in it's constructor? oO
L1807[20:05:06] <quadraxis> some wierd vanilla legacy reason, i dunno?
L1808[20:05:13] <quadraxis> they're always the same
L1809[20:05:59] <quadraxis> Item.registerItems() has examples of vanilla using it
L1810[20:06:10] <tterrag> that class is unnecessary
L1811[20:06:29] <quadraxis> you don't have to use it, but you need an implemntatoin of ItemBlock that overrides the relevant methods
L1812[20:07:02] <tterrag> all that it does is naming, and item drops
L1813[20:07:05] <tterrag> nothing that helps models
L1814[20:07:12] <Mogul> I'm not sure though if that's my problem. The different block variants show their name correctly already.
L1815[20:07:14] <tterrag> so it's pointless to mention for this problem
L1816[20:09:02] <Mogul> The question is how I can tell MC to load a different item model if I don't even use custom block models but instead just make my blockstate file use "block_column" and a different texture for each variant.
L1817[20:09:38] <quadraxis> what's your setCustomMRL look like?
L1818[20:09:59] <quadraxis> the line where you call it
L1819[20:10:13] <Mogul> Like...
L1820[20:10:28] <Mogul> ModelLoader.setCustomModelResourceLocation(Blocks.itemLogAlder, EnumLogType.NORMAL.getMetadata(), new ModelResourceLocation("mymod:log_alder", "axis=y,type=normal"));
L1821[20:13:15] <Mogul> Oh. Ok.
L1822[20:13:28] <Mogul> Just deleting the item model alltogether just seemed to do the trick.
L1823[20:14:10] <Mogul> And suddenly it just seems to work.
L1824[20:14:14] <Mogul> Brilliant.
L1825[20:15:14] <Mogul> I hate it when things are way more simple than I thought and I waste my time trying do solve complicated problems that really don't exist..... -_-
L1826[20:15:50] <tterrag> to be fair, the magic loading of item models is pretty stupid
L1827[20:16:47] <Mogul> Well, and there's not much information about it and that which exists is spread over several obscure sites and rather fragmented...
L1828[20:17:37] <Mogul> Leading me to another topic: The new registry functionality. Does it work? I found it in the docs and it was mentioned here before, but it didn't seem to work at all.
L1829[20:17:55] <Mogul> Like in - either I, again, made a stupid mistake, or the event really never got fired.
L1830[20:18:46] <Mogul> I mean, the basic principle seems easy enough: https://mcforge.readthedocs.io/en/latest/concepts/registries/#registering-things
L1831[20:23:14] ⇦ Quits: KGS (~KGS@h-155-4-129-249.na.cust.bahnhof.se) (Ping timeout: 206 seconds)
L1832[20:24:27] <tterrag> what are you trying to do?
L1833[20:27:19] ⇨ Joins: TangentDelta (~tangentde@c-68-37-224-83.hsd1.mi.comcast.net)
L1834[20:27:45] <Mogul> tterrag: Ah, I was trying to use the new registry system. And of course I did make a stupid mistake, I have to register the eventlistener first.
L1835[20:27:56] <tterrag> uhhh what?
L1836[20:28:23] <Mogul> Am I even more confused now? =D
L1837[20:28:32] <Mogul> Like: MinecraftForge.EVENT_BUS.register(myClass);
L1838[20:28:33] ⇦ Quits: Falconerd (~falconerd@ppp118-209-74-141.bras1.mel11.internode.on.net) (Ping timeout: 206 seconds)
L1839[20:28:52] <tterrag> for what purpose is that useful for item registration?
L1840[20:29:03] <Mogul> To have some: @SubscribeEvent
L1841[20:29:03] <Mogul> public void registerBlocks(RegistryEvent.Register<Block> event)
L1842[20:29:28] <Mogul> Where I would call event.getRegistry().register
L1843[20:29:32] <Mogul> Right? Wrong?
L1844[20:29:58] <TehNut> Pretty sure you need to use @EventBusSubscriber and a static handler method to use the registry methods
L1845[20:30:05] <TehNut> Since they're fired before preInit IIRC
L1846[20:31:11] <Mogul> yeah, the docs say: "These events are fired before preinit. This means that @Mod.EventBusSubscriber (or MinecraftForge.EVENT_BUS.register in the @Mod class�s constructor for e.g. Scala mods which do not support static) should be used to register the event handler before preinit."
L1847[20:31:31] <Mogul> So I made a constructor for my mod and used that mechanic.
L1848[20:33:29] <Mogul> In either way; it seems to work.
L1849[20:34:17] <tterrag> hm....I always figured the registry events were lifecycle
L1850[20:34:18] <tterrag> guess not
L1851[20:34:38] ⇨ Joins: Shawn|i7-Q720M (~shawn156@c-50-170-156-102.hsd1.co.comcast.net)
L1852[20:35:10] <Mogul> Lifecycle?
L1853[20:41:19] <widd> tterrag, do you know offhand if openjdk uses different underlying libs than oracle jre?
L1854[20:41:34] ⇦ Quits: TangentDelta (~tangentde@c-68-37-224-83.hsd1.mi.comcast.net) (Read error: Connection reset by peer)
L1855[20:42:24] ⇨ Joins: TangentDelta (~tangentde@c-68-37-224-83.hsd1.mi.comcast.net)
L1856[20:42:55] <Akkarin> afaik oracle and openjdk are the same codebase
L1857[20:43:07] <Akkarin> oracle just tosses in some proprietary fun stuff and that's it
L1858[21:05:27] ⇨ Joins: Wastl2_ (~Wastl2@x4e3441a1.dyn.telefonica.de)
L1859[21:05:53] ⇦ Quits: Wastl2 (~Wastl2@x4e350d3c.dyn.telefonica.de) (Ping timeout: 384 seconds)
L1860[21:15:27] ⇦ Quits: TechnicianLP2 (~Technicia@p4FE5614B.dip0.t-ipconnect.de) (Ping timeout: 180 seconds)
L1861[21:18:52] *** Vigaro is now known as V
L1862[21:27:12] <widd> Akkarin, well my issue seemed to be openjdk specific
L1863[21:27:19] <widd> crashes on SSL handshake
L1864[21:27:33] <widd> works fine w/ oracle java
L1865[21:28:04] ⇨ Joins: Naiten (Naiten@77.35.177.203)
L1866[21:28:33] <Akkarin> well I could only imagine that oracle compiles against an older version of openssl or something like that
L1867[21:32:07] ⇦ Quits: ScottehBoeh (~ScottehBo@95.144.45.222) (Quit: Leaving)
L1868[21:36:44] <bjorguv> this is my file structure https://gyazo.com/25ad96e4cb8822230c104fce1381e27a and I get this http://paste.ee/p/7rtZB error could anyone tell me how to fix
L1869[21:36:46] <bjorguv> ?
L1870[21:47:11] <Maxwell> Try lowercasing the file name.
L1871[21:47:30] ⇨ Joins: TechnicianLP2 (~Technicia@p4FE1C779.dip0.t-ipconnect.de)
L1872[21:47:46] <Maxwell> bjorguv^
L1873[21:47:55] <bjorguv> of the png?
L1874[21:47:57] <Maxwell> yes
L1875[21:56:15] ⇦ Quits: Maxwell (~Maxwell@pool-108-50-151-21.nwrknj.fios.verizon.net) (Quit: Leaving)
L1876[22:09:38] <bjorguv> well the item is named largeStick
L1877[22:13:26] ⇦ Quits: cpup (~cpup@32.218.112.213) (Ping timeout: 206 seconds)
L1878[22:18:59] ⇨ Joins: cpup (~cpup@32.218.117.201)
L1879[22:19:39] ⇨ Joins: McJty (~jorrit@94-224-154-146.access.telenet.be)
L1880[22:24:48] <tterrag> so?
L1881[22:24:58] <tterrag> also, what version is this?
L1882[22:25:53] <killjoy> fyi, resource locations and registry keys should be snake_case
L1883[22:25:55] <bjorguv> 1.7.10
L1884[22:27:42] <bjorguv> what is snake_case?
L1885[22:28:09] <killjoy> Actually, I mean pascal case
L1886[22:28:15] <killjoy> I think
L1887[22:28:23] <killjoy> nope..
L1888[22:28:27] <killjoy> snake case it is
L1889[22:28:36] <killjoy> all lower case, words separated by underscores
L1890[22:28:49] <SparkVGX> they don't like camelCase anymore
L1891[22:29:00] <killjoy> because caps
L1892[22:30:05] <bjorguv> is mine not in snakecase?
L1893[22:30:19] <killjoy> largeStick, right?
L1894[22:30:39] <killjoy> It's good practice for later
L1895[22:31:27] <bjorguv> so the png should be in snake?
L1896[22:31:39] <killjoy> It's not enforced until 1.11
L1897[22:32:17] <bjorguv> oh so that isn’t my problem?
L1898[22:33:07] <killjoy> But it's still suggested you use it
L1899[22:33:32] <bjorguv> yea i’ll start doing that
L1900[22:34:02] <killjoy> you could probably also use - if you wanted
L1901[22:34:13] ⇦ Quits: Lathanael|Away (~Lathanael@p54961FD4.dip0.t-ipconnect.de) (Ping timeout: 206 seconds)
L1902[22:36:03] <tterrag> underscores is more correct
L1903[22:36:06] <tterrag> that's what vanilla uses
L1904[22:37:29] <killjoy> oredict uses camel though
L1905[22:39:26] <Naiten> Why is applyPlayerInteraction() in Entity only called on client side?
L1906[22:39:58] ⇨ Joins: Lathanael|Away (~Lathanael@p54961190.dip0.t-ipconnect.de)
L1907[22:41:07] <killjoy> It's not?
L1908[22:41:31] <killjoy> client calls it in the playercontroller, server calls it in the nethandler
L1909[22:41:47] <killjoy> specifically in processUseEntity
L1910[22:44:30] ⇦ Quits: AstralSorcerer (~AstralSor@128.151.114.24) (Ping timeout: 194 seconds)
L1911[22:45:25] <Naiten> i put a breakpoint into the method body and it only stops at client thread
L1912[22:46:16] <killjoy> do it in the nethandlerplayserver
L1913[22:47:10] <Naiten> wut?
L1914[22:47:54] <killjoy> NetHandlerPlayServer#processUseEntity
L1915[22:48:05] <bjorguv> http://paste.ee/p/N6W6i could someone tell me if anything in this code is causing http://paste.ee/p/7rtZB
L1916[22:48:07] <Naiten> how is it gonna help
L1917[22:49:20] ⇨ Joins: Lunatrius` (~Lunatrius@77.38.28.116)
L1918[22:49:26] ⇦ Quits: Lunatrius (~Lunatrius@77.38.28.116) (Ping timeout: 180 seconds)
L1919[22:49:28] <killjoy> bjorguv, where is your image located?
L1920[22:50:13] <killjoy> Naiten, put the breakpoint on the server.
L1921[22:50:15] *** Lunatrius` is now known as Lunatrius
L1922[22:50:55] <bjorguv> ./java/resources/assets/emod/textures/items
L1923[22:51:18] <killjoy> you want it in src/main/resources/assets/emod/textures/items
L1924[22:51:50] <killjoy> only *.java files should go in the java folder
L1925[22:52:07] <bjorguv> oh yea sorry that’s where it is
L1926[22:53:31] <killjoy> using eclipse?
L1927[22:53:35] <bjorguv> intellij
L1928[22:53:46] <killjoy> Hm.. try rebuilding the project
L1929[22:54:24] <bjorguv> k
L1930[22:56:47] <bjorguv> ........
L1931[22:56:49] <bjorguv> wow
L1932[22:56:57] <bjorguv> just spent 4 hours trying to figure it out
L1933[22:57:07] <bjorguv> ty killjoy
L1934[22:59:39] <bjorguv> what does rebuilding do?
L1935[23:02:39] <killjoy> it put the (new) file in the output directory
L1936[23:20:09] <Mogul> Say, guys, how is compatibility between 1.10.2 and 1.11? Can I make a mod for 1.10.2 and expect it to run on 1.11?
L1937[23:21:15] <mezz> there are some very small differences. block collision methods are not compatible between the versions
L1938[23:21:45] <mezz> actually I'm thinking 1.11 to 1.11.2
L1939[23:21:56] <mezz> 1.10 to 1.11 is big enough that you will probably have small issues
L1940[23:24:51] <Mogul> I see, thanks. Looking at two bigger mods it seems like some might take a while to make the transition.
L1941[23:26:11] <McJty> Mogul, the biggest thing is ItemStack changes
L1942[23:26:13] <mezz> it definitely requires porting, yeah. it's possible to support both if you use something like McJty's compatlayer library
L1943[23:27:52] <Mogul> Hm, the mod I am aiming at would probably be small enough that a manual port might be ok to do.
L1944[23:28:17] <McJty> CompatLayer is still a manual port though. Instead of porting to 1.11 you port to CompatLayer :-)
L1945[23:28:32] <McJty> The advantage is that you can maintain two MC versions at once in one code base/one jar
L1946[23:28:43] <McJty> The disadvantage is sometimes a clumsy api due to trying to abstract hard to abstract things
L1947[23:28:52] <McJty> And an additional dependency of course
L1948[23:28:58] <Mogul> I guess that's a bit overkill for a beginner then.
L1949[23:29:32] <Mogul> I'm just asking myself to make the mod for 1.10 or rather directly for 1.11.
L1950[23:29:42] *** TTFTCUTS is now known as TTFT|Away
L1951[23:29:55] ⇨ Joins: TechnicianLP (~Technicia@p4FE1C779.dip0.t-ipconnect.de)
L1952[23:29:59] <Mogul> Eh, if I should make it for 1.10 or 1.11.
L1953[23:30:26] <killjoy> Here's a challenge. The next time Mojang updates minecraft, let's not update the mods /s
L1954[23:30:35] <killjoy> first to not update wins
L1955[23:30:51] <Mogul> Wasn't that basically what happened with 1.8?
L1956[23:30:58] <Mogul> Took ages for most mods to update.
L1957[23:31:01] <McJty> yes and that's not a good idea IMHO
L1958[23:31:08] <killjoy> with good reason
L1959[23:31:08] <McJty> Shouldn't happen before
L1960[23:31:12] <McJty> s/before/again
L1961[23:31:27] ⇨ Joins: Ashindigo_ (uid202308@id-202308.hathersage.irccloud.com)
L1962[23:31:32] <killjoy> but I see most people's reasons for developing on outdated versions is because the big mods are on that version
L1963[23:31:56] <Mogul> Well, the deal obviously is now that one might wanna update to a version that features important mods.
L1964[23:31:58] <McJty> I don't think that's still true
L1965[23:32:00] <Mogul> Yeah, exactly.
L1966[23:32:03] <McJty> Most big mods are on 1.10.2 atm
L1967[23:32:16] <killjoy> define "important"
L1968[23:32:30] <killjoy> 1.10.2 is outdated
L1969[23:32:33] <Mogul> Well, it seems like Thaumcraft won't go 1.11 anytime soon, for example.
L1970[23:32:43] <killjoy> but is thaumcraft important?
L1971[23:32:46] <Mogul> Rather porting from 1.8.9 to 1.10.2.
L1972[23:32:51] <Mogul> Oh, for many players, sure.
L1973[23:33:00] <Mogul> But that rather depends, doesn't it?
L1974[23:33:01] <killjoy> there's plenty of magic mods
L1975[23:33:03] <McJty> Thaumcraft and Thermal Expansion are both coming to 1.10.2
L1976[23:33:12] <Mogul> And not to 1.11.
L1977[23:33:17] <killjoy> ^
L1978[23:33:24] <McJty> Well not immediatelly at least
L1979[23:33:38] <Mogul> Sure, eventually they will make the step.
L1980[23:33:47] <McJty> Anyway, for me that's why I made CompatLayer. Allows me to maintain all my mods on 2 MC versions at the same time
L1981[23:35:29] <widd> McJty, ive been wanting to get into mod dev for awhile but not if its a huge pain to maintain multiple versions at once
L1982[23:35:35] <widd> what exactly can you abstract away
L1983[23:35:40] <widd> with a compat layer
L1984[23:36:19] <widd> its been awhile since ive touched mc code at all but from what i remember 1.7.10 to 1.8 was a huge overhaul(?)
L1985[23:36:46] <widd> is having a compat lib even worth the effort if mojang forces big changes like that again
L1986[23:37:32] ⇦ Quits: McJty (~jorrit@94-224-154-146.access.telenet.be) (Ping timeout: 206 seconds)
L1987[23:38:13] <Mogul> He wouldn't answer that question! ;-)
L1988[23:39:02] <widd> ikr he'd rather timeout than explain himself
L1989[23:39:23] <Mogul> Hm, by the way, has anything changed regarding biome registration? Do we still only have more or less 128 IDs available?
L1990[23:39:43] <widd> that always irked me
L1991[23:39:53] <Mogul> Oh yes.
L1992[23:39:54] <widd> why did they limit their IDs in any way
L1993[23:39:56] <widd> at all
L1994[23:40:01] <widd> like anywhere
L1995[23:40:08] <Mogul> Well, I guess some limit would be understandable.
L1996[23:40:10] <killjoy> because bytes
L1997[23:40:18] <TechnicianLP2> packetsize
L1998[23:40:29] <mezz> the current restrictions are because of the save file format
L1999[23:40:29] <widd> as if using one more byte would have been a problem
L2000[23:40:32] <killjoy> and world format
L2001[23:40:50] <widd> did they not design their save format or something
L2002[23:41:07] <killjoy> 256 blocks is plenty
L2003[23:41:35] <mezz> the game was not built for modding
L2004[23:41:59] <Mogul> 256 biomes might seem many, but it really isn't, especially when vanilla MC assumes that the upper 128 are reserved for biome variants.
L2005[23:42:22] <widd> and yet its still the most modded game ive ever seen in my life
L2006[23:42:36] <Mogul> I've had modpacks where I easily reached that and had to resort to strange methods to get all biomes in that I wanted.
L2007[23:43:03] <Mogul> My guess: It is so heavily modded BECAUSE we have no officiall API.
L2008[23:43:21] <widd> any official api they give us would be trash probably anyways
L2009[23:43:34] <killjoy> data based
L2010[23:43:37] <widd> at least compared to what the community already has
L2011[23:43:37] <Mogul> Well, compared to "do anything you want" - how could it not?
L2012[23:43:57] <widd> Mogul, not counting the people who map everything and modify the code directly
L2013[23:44:06] <widd> lmao
L2014[23:44:17] <Mogul> Huh? Is that a thing?
L2015[23:44:19] <widd> yes
L2016[23:44:23] <Mogul> Why?
L2017[23:44:41] <widd> optifine for example i think used to be done before anyone else would update in that manner
L2018[23:44:54] <widd> a few other old mods as well
L2019[23:45:02] <Mogul> Well, back in the days... but nowadays?
L2020[23:45:11] <widd> Mogul, hacked clients often do that
L2021[23:45:23] <widd> a lot of them actually just use java agents
L2022[23:45:25] <Mogul> Huh.
L2023[23:45:26] <killjoy> it was mcpatcher
L2024[23:45:29] <killjoy> it updated for snapshots
L2025[23:45:39] <killjoy> but it broke a while ago
L2026[23:46:03] <Mogul> Hm, reminds me of MCUpdater. Has anyone used that?
L2027[23:46:41] <Mogul> Dunno if it's still updated, but I felt like it was a great idea that had not enough support.
L2028[23:47:38] <widd> Mogul, i looked into that
L2029[23:47:46] <widd> definitely a good idea but too hard to setup
L2030[23:47:52] <widd> people dont have that kind of patience
L2031[23:48:09] <Mogul> Hah! I remember spending so many hours.....
L2032[23:48:40] <Mogul> And when everything worked, some of my players had diffuse complaints about the client not working as expected.
L2033[23:48:55] <Mogul> So basically I left it alone and never touched it since.
L2034[23:49:32] <widd> i would just like bootstrap git somehow
L2035[23:49:38] <widd> and bundle it with a tiny interface
L2036[23:49:40] <widd> use that for modpack updates
L2037[23:49:47] <widd> (^:
L2038[23:50:00] ⇦ Quits: sinkillerj (~sinkiller@nc-67-232-15-221.dhcp.embarqhsd.net) (Quit: またね)
L2039[23:50:35] ⇨ Joins: McJty (~jorrit@94-224-154-146.access.telenet.be)
L2040[23:50:43] <Mogul> I'm not so fluent in git-related things, but I once had the idea to at least somehow use it for mod configs.
L2041[23:50:58] <widd> Mogul, tl;dr is that its good for text based files but not binary files
L2042[23:51:06] <widd> theres a small extension that makes it easier though
L2043[23:51:17] ⇦ Quits: McJty (~jorrit@94-224-154-146.access.telenet.be) (Remote host closed the connection)
L2044[23:51:22] <widd> and the commits would be massive
L2045[23:51:33] ⇦ Quits: Searge|office (~Searge@h-85-24-130-18.na.cust.bahnhof.se) (Ping timeout: 206 seconds)
L2046[23:51:50] <Mogul> Hmmm, reminds me of when I was looking for an easy to write rich-/hypertext format that could be integrated well with git.
L2047[23:52:25] <Mogul> In the end there was not much available; either something like Markdown or using an odt flat file.
L2048[23:52:33] *** Darkevilmac is now known as DarkevilAway
L2049[23:52:57] *** DarkevilAway is now known as Darkevilmac
L2050[23:53:10] <Mogul> But in any way - the biome id mechanism doesn't seem to have been updated, right?
L2051[23:57:18] ⇨ Joins: Searge|office (~Searge@h-85-24-130-18.na.cust.bahnhof.se)
<<Prev Next>> Scroll to Top