<<Prev Next>> Scroll to Bottom
Stuff goes here
L1[00:11:19] <raoulvdberge> mezz: tape safety with consequences
L2[00:11:25] <raoulvdberge> s/tape/type
L3[00:11:39] <mezz> so much consequences
L4[00:11:55] <mezz> I eliminated some casting at the cost of... a lot
L5[00:13:09] <fry> always worth it
L6[00:13:15] <fry> :D
L7[00:13:53] <fry> in 95% of cases it leads to better overall design :D
L8[00:14:40] *** cpw is now known as cpw|out
L9[00:21:00] ⇦ Quits: Ashindigo (uid202308@id-202308.hathersage.irccloud.com) (Quit: Connection closed for inactivity)
L10[00:28:47] <mezz> fry, unfortunately Forestry's API is not exactly the best candidate for redesigning, it's massive and old and stuff depends on it
L11[00:29:05] <fry> that actually makes it the BEST :D
L12[00:39:56] ⇦ Quits: Shukaro (Shukaro@cpe-24-209-226-133.cinci.res.rr.com) (Read error: Connection reset by peer)
L13[00:49:59] ⇨ Joins: cppchriscpp (~cppchrisc@c-76-24-45-127.hsd1.nh.comcast.net)
L14[01:04:41] ⇨ Joins: Ashindigo (uid202308@id-202308.hathersage.irccloud.com)
L15[01:05:09] <tterrag> mezz: in my experience generics can make for way cleaner frontend, but almost always have a way messier backend
L16[01:05:15] <tterrag> in terms of unsafe casts, etc
L17[01:05:36] <tterrag> FusionLord: if you use the same key, it should just load
L18[01:06:12] <mezz> yea I have a lot of generics magic in JEI and it requires some strange data structures with casting and type enforcement to make it clean for the API
L19[01:06:29] <fry> wtf are you doing :D
L20[01:06:38] <tterrag> the way java generics are....there's always an unsafe cast at some level
L21[01:06:44] <fry> I almost never have any casting at all in the backend
L22[01:06:45] <tterrag> unless it's something really simple
L23[01:07:19] <tterrag> even java data structures are "unsafe" because they have to be backed by arrays
L24[01:07:19] <mezz> fry to support this, I need some casting internally: https://github.com/mezz/JustEnoughItems/blob/1.11/src/main/java/mezz/jei/api/ingredients/IIngredients.java
L25[01:07:26] <tterrag> it's safe in practice, of course. but in an IDE that would be a warning
L26[01:08:12] <fry> Class<T> - 1st red flag
L27[01:08:29] <fry> what are you using the Class for?
L28[01:08:39] ⇨ Joins: SatanicSanta (~SatanicSa@c-76-115-175-15.hsd1.or.comcast.net)
L29[01:08:41] <mezz> ItemStack.class, FluidStack.class, PokemoneStack.class
L30[01:08:49] <fry> and why do you need it?
L31[01:08:55] <mezz> for the type
L32[01:09:05] <fry> but how do you actually use it?
L33[01:09:10] <mezz> I can set inputs for each, itemstack, fluidstack
L34[01:09:22] <mezz> and then get outputs later for itemstack, fluidstack
L35[01:09:24] <fry> but why do you need to have the class object? :D
L36[01:09:44] <SatanicSanta> Is there a way to have a player capability that both persists across deaths and is synchronized on both sides? PlayerEvent.Clone only happens on the server side, sending a packet for this instance doesn't seem to do anything. I'm guessing that has to do with the order in which entities are loaded into the world.
L37[01:09:58] <mezz> so you can say get(ItemStack.class) ingredients or set(ItemStack.class, List<List<Itemstack>> stacks)
L38[01:10:11] ⇨ Joins: Davnit_ (~Davnit@72-189-115-20.res.bhn.net)
L39[01:10:38] <fry> so, one IIngredients object can have both ItemStack and FluidStack ingredients?
L40[01:10:43] <mezz> yes
L41[01:11:53] <fry> so, it's used only when you actually "run" the recipe?
L42[01:12:31] ⇦ Quits: Davnit (~Davnit@72-189-115-20.res.bhn.net) (Ping timeout: 206 seconds)
L43[01:12:46] <tterrag> it's also used for the lookup methods
L44[01:12:49] <mezz> it's a translation layer between modded recipes and jei
L45[01:13:05] <mezz> yeah
L46[01:13:23] <FusionLord> tterrag, yeah I removed the required constructor by mistake. :/
L47[01:14:16] <fry> so, JEI only uses that Class as a "type identifier", and doesn't actually use any of the Class methods? :D
L48[01:14:20] <FusionLord> which caused an NPE hiding the underlying issue
L49[01:14:32] <mezz> fry right
L50[01:14:38] <fry> then use an Enum
L51[01:14:52] <tterrag> what
L52[01:14:55] <tterrag> no
L53[01:14:57] <mezz> I have to support arbitrary ingredients, like pokemon and gasses
L54[01:15:03] <mezz> and thaumcraft aspects
L55[01:15:10] <tterrag> enums make worse API objects than classes
L56[01:15:11] <fry> then use an interface :D
L57[01:15:20] <fry> tterrag: not always
L58[01:15:35] <tterrag> an interface for what? if I wanted to query for X type of ingredients, how would I know what object to supply?
L59[01:15:51] <mezz> the idea is to make this simple to use, additional layers of indirection will probably make more modders vomit and/or unhappy
L60[01:15:55] <fry> interface IIngredientType {}; enum DefaultTypes implements IIngredientType { ITEM, BLOCK, FLUID, WHATEVER; }
L61[01:16:23] <mezz> I suppose but those need to keep the type
L62[01:16:25] <fry> using Class makes me vomit, and it should make any sane programmer vomit :D
L63[01:16:32] <fry> "keep the type"?
L64[01:16:36] <mezz> or else how will I do get(ITEM) and have it return List<List<ItemStack>> ?
L65[01:16:54] <tterrag> you'd need IIngredientType to be generic in itself
L66[01:16:56] <tterrag> which throws out the enum idea
L67[01:17:09] *** DarkevilAway is now known as Darkevilmac
L68[01:17:29] *** Davnit_ is now known as Davnit
L69[01:17:31] <SatanicSanta> fry: why would using a class make any sane programmer vomit?
L70[01:17:48] ⇦ Quits: Cooler (~CoolerExt@45.249.156.150) (Read error: Connection reset by peer)
L71[01:17:53] <fry> yup, would actually be final class Item implements IIngredientType<ItemStack>
L72[01:17:54] <SatanicSanta> or do you mean an actual Class object?
L73[01:18:02] <fry> yes, Class objects
L74[01:18:05] <SatanicSanta> oh ok
L75[01:18:13] ⇨ Joins: Cooler (~CoolerExt@45.249.156.150)
L76[01:18:22] <fry> people somehow forgot that using Class = reflection
L77[01:18:33] <mezz> fry I admit that would be the clean way to do it but I think ItemStack.class is still easier to use
L78[01:18:42] <fry> it's not
L79[01:18:48] <Ordinastie> it is
L80[01:18:57] <SatanicSanta> mezz: I agree with you even though I don't really know what you guys are talking about.
L81[01:19:02] <mezz> lol
L82[01:19:04] <fry> it's just what every java programmer was doing since before generics
L83[01:19:15] <fry> and stuck with it due to inertia :D
L84[01:19:28] <mezz> for Forestry's generic-hell-branch I am using stuff like IIngredientType<ItemStack>
L85[01:19:33] <fry> using Class -> giving up on generics and going back to java 1.4 days
L86[01:20:00] <mezz> I don't really understand your zealous hatred for .class, is there a real disadvantage here or is it personal?
L87[01:20:46] <tterrag> I hate any API that forces class objects
L88[01:20:50] <tterrag> but in this case, it's a marker
L89[01:20:54] <tterrag> I think it's fine
L90[01:20:56] <mezz> one thing I would like about IIngredientType is that it would have set types, so people wouldn't get get(Fluid.class) instead of FluidStack
L91[01:20:57] <fry> why not also use string names for everything and do map lookups? :D
L92[01:21:07] <SatanicSanta> ew
L93[01:21:11] <SatanicSanta> strings
L94[01:21:53] <mezz> so fry if I use IIngredientType<ItemStack> as keys, how am I storing that internally so that I am not casting?
L95[01:22:08] <fry> storing what exactly?
L96[01:22:17] <fry> ingredients?
L97[01:22:28] <mezz> I need something like Map<IIngredientType, List<List>> to hold ingredients
L98[01:22:50] <fry> yup, Map<IIngredientType<?>, List<List<?>>, with 1 actual cast
L99[01:22:58] <mezz> so I save... exactly no casts
L100[01:23:17] <mezz> because that's what I have now
L101[01:23:31] <fry> or, if you want to be fancy, List<Entry<?>>, with Entry<T> holding both IIngredientType<T> and List<List<T>>
L102[01:23:50] <Ordinastie> that's... a map
L103[01:23:53] <mezz> sounds like I lose the lookup time of map heh
L104[01:24:01] <mezz> well there are only like 4 keys so whatever
L105[01:24:24] <fry> you use the cast exactly in the place where the type system is not precise enough
L106[01:24:33] <fry> + you don't use silly class objects in the API
L107[01:25:50] <mezz> you're solving the problem I didn't have heh
L108[01:25:55] ⇨ Joins: founderio (~Thunderbi@p200300C4E3C240002069A62C76AE0887.dip0.t-ipconnect.de)
L109[01:25:59] ⇦ 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))
L110[01:26:53] <fry> your problem is "strange data structures with casting and type enforcement", is it not? :D
L111[01:27:01] <mezz> yes
L112[01:27:18] <fry> I'm making it less strange :D
L113[01:27:32] <mezz> very slightly less strange. the fundamental issue is still there
L114[01:27:42] <fry> if you actually think about it, Class is very strange :D
L115[01:27:51] <mezz> I need Map<Something<Type>, SomethingElse<Type>>
L116[01:28:25] <fry> no, you need <T> Value<T> get(Key<T> key)
L117[01:28:36] <tterrag> which, tbf, you could make yourself :p
L118[01:28:43] <tterrag> the limitation is the java stdlib, not generics :P
L119[01:28:44] <fry> and <T> put(Key<T> key, Value<T> value)
L120[01:28:46] <mezz> I did make it myself! with casting lol
L121[01:29:37] <mezz> I will implement the IIngredientType if it will help you sleep at night fry, I don't see why not
L122[01:29:50] <fry> <3
L123[01:30:57] <fry> you limit the casting to 1 place - http://stackoverflow.com/questions/18156788/java-generics-enforce-same-type-for-keys-and-values-of-map/18156818#18156818
L124[01:31:08] <fry> and you completely hide it behind the api
L125[01:31:14] <mezz> yeah
L126[01:31:21] <mezz> I already have that part though
L127[01:31:32] <mezz> I just want _no_ casting but java does not support generics to that level
L128[01:31:43] <fry> barely anything does
L129[01:32:05] <fry> you need dependent types for that :D
L130[01:32:22] <mezz> it's like solving a redstone logical puzzle only to find out pistons get stuck in certain positions
L131[01:32:27] <fry> which have their own set of downsides
L132[01:32:51] <mezz> hm
L133[01:33:10] <fry> type system should be used everywhere, except for a small set of low-level things
L134[01:33:17] <fry> and this is one of them :D
L135[01:33:57] <mezz> heh
L136[01:34:00] <fry> if you actually do that everywhere, everything magically starts to make sense
L137[01:34:10] <fry> and work, and have no type errors :D
L138[01:34:24] <mezz> I'd call myself pretty proficient at generics at this point, you're preaching to the choir
L139[01:34:34] <fry> and yet you still use Class :D
L140[01:34:53] <mezz> it's Class<Type> instead of Whatever<Type>, that's all
L141[01:34:56] <fry> the only place you CAN use it is inside the deserialization code
L142[01:35:19] <fry> and even then you often don't have to :D
L143[01:37:22] <fry> also, every time you use Class<T> instead of TypeToken<T> you create this issue: https://github.com/MinecraftForge/MinecraftForge/issues/2097
L144[01:38:24] <mezz> how do I implement IngredientType<T> without using .class ?
L145[01:38:42] <fry> just do "interface IngredientType<T> {}"
L146[01:38:44] <fry> done :D
L147[01:38:57] <mezz> I mean implement the ItemStack one
L148[01:39:42] <fry> "final class ItemType implements IngredientType<ItemStack> { instance; // singleton boilerplate }"
L149[01:39:59] <mezz> ok
L150[01:40:26] ⇦ Quits: Doty1154 (~Doty1154@2601:648:8000:134f:a8bd:f9f:4380:7121) (Read error: Connection reset by peer)
L151[01:40:28] <fry> might actually be able to use enum singleton for that :D
L152[01:41:05] <fry> yup
L153[01:41:10] <fry> enum ItemType implements IIngradient<ItemStack> { INSTANCE; }
L154[01:41:12] <fry> works :D
L155[01:41:13] <mezz> barf no enums for me any more
L156[01:41:20] <mezz> public static final IngredientType<ItemStack> ITEM = new IngredientType<ItemStack>();
L157[01:41:35] <fry> enum singletons are the best singletons actually :D
L158[01:41:55] <mezz> forestry is built on enums and it gets brittle quickly
L159[01:42:13] <fry> don't forget to make the constructor private/class final
L160[01:42:14] <mezz> espeically with generics
L161[01:42:18] ⇦ Quits: Larry1123 (Larry1123@irc.larry1123.net) (Ping timeout: 384 seconds)
L162[01:42:27] <fry> yes, but again, in the case of the singleton it's actually fine :D
L163[01:42:33] <mezz> the constructor is public because people need to extend it to make their own ingredient types
L164[01:42:47] <fry> IngredientType constructor - yes
L165[01:42:54] <fry> ItemType constructor - no
L166[01:43:16] <mezz> it's just new IngredientType<ItemStack>();
L167[01:43:16] <fry> there's no sane reason to extend ItemType I can think of
L168[01:43:32] <fry> new IngredientType<ItemStack>(){}?
L169[01:43:48] <mezz> https://gist.github.com/mezz/01d2f69553eb5808ec769e5fe40f12c7
L170[01:44:28] <fry> ah, that works, yes
L171[01:44:40] <fry> but you won't get the T value in the stack traces :D
L172[01:46:08] <mezz> tell me why class is bad again
L173[01:46:15] <mezz> heh
L174[01:46:17] <fry> class or Class? :D
L175[01:46:24] <mezz> ItemStack.class
L176[01:46:41] <fry> because you're not actually using any methods of the Class class :D
L177[01:46:53] <mezz> I get its value in the stack traces
L178[01:46:58] <fry> which means your API isn't precise enough :P
L179[01:47:02] <Ordinastie> meanwhile, you're using all the available methods of your IngredientType
L180[01:47:52] *** Keridos is now known as Keridos|away
L181[01:48:17] <fry> see, eventually, you would add, for example, .render(T thing) to it, or smth similar (if you actually need to have some different logic per-type at some point)
L182[01:48:23] <fry> which you can't do if you use Class
L183[01:49:12] <mezz> you mean this? https://github.com/mezz/JustEnoughItems/blob/1.11/src/main/java/mezz/jei/api/ingredients/IIngredientRenderer.java
L184[01:49:56] <fry> see how this T is the same T? as the IngredientType T? and the mapping is 1 to 1? :D
L185[01:50:06] <fry> good indication to merge them together :D
L186[01:50:37] <mezz> then I'd merge this too https://github.com/mezz/JustEnoughItems/blob/1.11/src/main/java/mezz/jei/api/ingredients/IIngredientHelper.java
L187[01:50:54] <fry> yes :D
L188[01:50:54] ⇨ Joins: quadraxis (~quadraxis@cpc77293-basf12-2-0-cust699.12-3.cable.virginm.net)
L189[01:50:57] <mezz> nope
L190[01:51:16] <mezz> you can have multiple ingredient renderers, different depending on where you're rendering
L191[01:51:29] <mezz> like a tank renderer vs item list renderer for fluids
L192[01:51:48] <fry> so, you actually have double dispatch
L193[01:52:02] <fry> on both the IngredientType and RenderContext or whatever
L194[01:52:26] <fry> then they don't always go together, but they can :D
L195[01:52:41] <fry> still, you should probably merge IngredientType and IIngredientHelper
L196[01:52:58] <fry> unless you can think of any cases where the mapping isn't always 1 to 1 :D
L197[01:53:04] <mezz> they are used in entirely different contexts
L198[01:53:29] <fry> can one exist without another existing at the same time for the same T?
L199[01:53:31] <mezz> it's like using a gold brick as a doorstop because you can
L200[01:54:11] <mezz> it would be confusing
L201[01:54:18] <fry> what would be?
L202[01:54:29] <tterrag> mezz: your metaphor game needs work ;D
L203[01:54:41] <tterrag> so does mine, because that was a similie :C
L204[01:54:52] <fry> naming a class Helper is another red flag :D
L205[01:55:05] <mezz> using IIngredientHelper in an api that uses none of the methods on it doesn't make sense
L206[01:55:32] <mezz> I have lots of lazily named classes, there's only so many abstract names for things
L207[01:55:58] <fry> not having a good name for a thing is a good indicator that that thing shouldn't exist on it's own :D
L208[01:55:58] <FusionLord> ... doesn't seem IronNugget was added to the ore dictionary.
L209[01:56:30] <mezz> fry I think you are spouting generalizations at this point :P
L210[01:56:51] <fry> first of all, IIngredientHelper has both "render text and color property thingies" and "mathing helper methods"
L211[01:57:37] ⇦ Quits: kinggoesgaming (uid23106@id-23106.tooting.irccloud.com) (Quit: Connection closed for inactivity)
L212[01:57:41] <fry> "render text and color property thingies" should probably be a simple property-holding final class, passed into the constructor of IngradientType
L213[01:58:07] <fry> with a non-public getter used only by JEI, unless you want to expose it for orher people for some reason
L214[01:58:28] <mezz> JEI uses its own API for almost everything, it's built on top
L215[01:59:12] <fry> which is why you split up IngredientType and IIngredientHelper probably
L216[01:59:23] <fry> but using 2 interfaces is not the only way to do that :D
L217[02:00:03] <MCPBot_Reborn> [TEST CSV] Pushing snapshot_20161227 mappings to Forge Maven.
L218[02:00:07] <MCPBot_Reborn> [TEST CSV] Maven upload successful for mcp_snapshot-20161227-1.11.zip (mappings = "snapshot_20161227" in build.gradle).
L219[02:00:17] <MCPBot_Reborn> Semi-live (every 10 min), Snapshot (daily ~3:00 EST), and Stable (committed) MCPBot mapping exports can be found here: http://export.mcpbot.bspk.rs/
L220[02:00:38] ⇨ Joins: Larry1123 (Larry1123@irc.larry1123.net)
L221[02:00:48] <fry> hmm, did MCPBot_Reborn shift to DST, or am I going crazy? :D
L222[02:01:09] <mezz> it's 3AM EST right now
L223[02:01:53] <fry> 2016-11-05 10:00:17MCPBot_RebornSemi-live (every 10 min), Snapshot (daily ~3:00 EST),
L224[02:01:57] <fry> 2016-11-06 11:00:17MCPBot_RebornSemi-live (every 10 min), Snapshot (daily ~3:00 EST),
L225[02:02:22] <mezz> hm
L226[02:02:35] <fry> DST ended Nov 6, 2016
L227[02:02:39] <fry> good, not crazy
L228[02:02:52] <mezz> heh
L229[02:03:01] <Ordinastie> that's still debatable
L230[02:03:07] <mezz> ^
L231[02:03:34] <fry> "this observation wasn't caused by me being crazy"
L232[02:03:55] <fry> aaaanyway
L233[02:04:35] <fry> API doesn't have to consist solely of interfaces, using actual classes is good too, especially if they're final :D
L234[02:05:06] <mezz> I like separate implementation and interface
L235[02:05:45] <fry> something about a hammer and a nail :D
L236[02:06:04] <mezz> I have only a couple non-interface classes in the API, usually to hold static final keys, or as an abstract implementation of an interface for people to extend if they don't want to implement all the methods
L237[02:06:16] <mezz> omg looks who's talking here Mr. hates Class
L238[02:06:19] <mezz> :P
L239[02:06:27] <fry> again, Class != class :D
L240[02:06:41] <mezz> elaborate?
L241[02:06:54] <fry> last 6 methods of IIngredientHelper beg to be held in a class together :D
L242[02:07:39] <fry> they beg more to live inside V, but that's not always possible, is it? :D
L243[02:07:59] <mezz> weren't you just asking me to combine unrelated classes ?
L244[02:08:18] <fry> combine related things, separate unrelated things :D
L245[02:08:24] <mezz> huh
L246[02:08:26] <mezz> ok
L247[02:09:00] <fry> there's nothing tying first 2 methods of IIngredientHelper and the rest of them together
L248[02:09:09] <fry> which is part of the reason for the "helper" name :D
L249[02:09:29] <mezz> fair enough
L250[02:09:47] <fry> you need RenderProperties getRenderProperties(V v) somewhere
L251[02:10:01] <fry> probably inside IngredientType
L252[02:10:14] <mezz> what's RenderProperties?
L253[02:10:25] <fry> second half of IIngredientHelper
L254[02:10:38] <mezz> those are used for lookups
L255[02:10:57] <fry> RenderOrLookupProperties
L256[02:11:09] <fry> you come up with the name - you know the actual use cases :D
L257[02:11:18] <mezz> "Or" is a cardinal sin punishable by death
L258[02:11:29] <mezz> begone heathen
L259[02:11:43] <fry> using getDisplayName for logic is probably a sin too :D
L260[02:12:03] <mezz> is it? I'm searching for items based on their display name
L261[02:12:20] <mezz> I could make people search by their item ID but I think they might get mad at me
L262[02:12:20] ⇦ Quits: RebelKeithy (~RebelKeit@173-240-139-59.pool.dsl.nctc.com) (Ping timeout: 198 seconds)
L263[02:12:21] <fry> searching in the JEI GUI is fine
L264[02:13:00] <fry> that was just a nitpick :D
L265[02:13:05] ⇨ Joins: thomas15v (~thomas15v@149.56.143.158)
L266[02:13:06] <killjoy> is there a git command to do something for every tag?
L267[02:13:25] <mezz> killjoy, that's a sort of scary question. what are you up to?
L268[02:13:34] <fry> git tag | xargs "do stuff"
L269[02:13:36] <killjoy> I want to build every single tag I've made
L270[02:13:57] <killjoy> for luls
L271[02:13:57] <mezz> fry's got it, just use command line piping
L272[02:14:13] ⇦ Quits: thomas15v (~thomas15v@149.56.143.158) (Client Quit)
L273[02:14:56] ⇨ Joins: thomas15v (~thomas15v@149.56.143.158)
L274[02:16:18] <fry> git tag | xargs -n1 sh -c 'git checkout "$1"; gradle build' dummy
L275[02:16:22] ⇨ Joins: CoderPuppy (~cpup@32.218.113.202)
L276[02:16:37] <mezz> and then wait like 1000 years
L277[02:17:03] <fry> add & inside cmd for more lulz
L278[02:18:15] ⇦ Quits: cpup (~cpup@32.218.113.169) (Ping timeout: 206 seconds)
L279[02:19:33] <killjoy> most of them failed q.q
L280[02:22:22] <mezz> heh
L281[02:29:58] <killjoy> I'd need to modify the buildscript manually for each tag. Not doing that.
L282[02:30:06] <killjoy> I've got copies of the jars on github anyway
L283[02:38:16] <fry> > manually
L284[02:39:09] <fry> sed -i "s/%BUILD_TAG_NAME%/$1/" build.gradle
L285[02:50:13] ⇦ Quits: Everseeking (~Everseeki@pool-100-6-95-214.pitbpa.fios.verizon.net) (Quit: Big Gulps, huh? Alright... Welp, see ya later)
L286[02:56:03] ⇦ Quits: Alex_hawks (~Alex_hawk@2001:8003:84a5:7a00:cd1d:f539:4568:39eb) (Read error: No route to host)
L287[02:56:21] ⇨ Joins: Alex_hawks (~Alex_hawk@2001:8003:84a5:7a00:cd1d:f539:4568:39eb)
L288[02:56:34] ⇦ Quits: AforAnonymous (bitch2k@dyn-050-100.vix2.mmc.at) (Read error: Connection reset by peer)
L289[02:58:40] ⇦ Quits: I9hdkill (~quassel@static.102.152.243.136.clients.your-server.de) (Remote host closed the connection)
L290[03:00:09] ⇦ Quits: founderio (~Thunderbi@p200300C4E3C240002069A62C76AE0887.dip0.t-ipconnect.de) (Quit: founderio)
L291[03:00:35] ⇦ Quits: Zed (~Zed@213.152.161.15) (Read error: Connection reset by peer)
L292[03:01:07] ⇨ Joins: AforAnonymous (bitch2k@dyn-050-100.vix2.mmc.at)
L293[03:01:57] ⇨ Joins: Zed (~Zed@213.152.161.15)
L294[03:02:11] ⇦ Quits: AforAnonymous (bitch2k@dyn-050-100.vix2.mmc.at) (Read error: Connection reset by peer)
L295[03:02:12] ⇦ Quits: wolfmitchell (~wolfmitch@149.56.182.12) (Ping timeout: 384 seconds)
L296[03:02:12] ⇦ Quits: Baughn (~Baughn@madoka.brage.info) (Ping timeout: 384 seconds)
L297[03:02:34] ⇨ Joins: founderio (~Thunderbi@p200300C4E3C240002069A62C76AE0887.dip0.t-ipconnect.de)
L298[03:02:45] ⇦ Quits: Keridos|away (~Keridos@ironhide.stw-bonn.de) (Quit: ZNC - http://znc.in)
L299[03:02:46] ⇦ Quits: Matthew (~matthew@vps01.cloud.prenger.co) (Ping timeout: 384 seconds)
L300[03:03:41] ⇨ Joins: Keridos|away (~Keridos@ironhide.stw-bonn.de)
L301[03:03:43] ⇨ Joins: I9hdkill (~quassel@static.102.152.243.136.clients.your-server.de)
L302[03:04:12] ⇨ Joins: Baughn (~Baughn@madoka.brage.info)
L303[03:06:24] ⇨ Joins: AforAnonymous (bitch2k@dyn-050-100.vix2.mmc.at)
L304[03:07:07] ⇦ Quits: AforAnonymous (bitch2k@dyn-050-100.vix2.mmc.at) (Read error: Connection reset by peer)
L305[03:10:01] ⇦ Quits: hk (~HiddenKn@93.ip-158-69-206.net) (Quit: ZNC 1.6.2 - http://znc.in)
L306[03:10:08] ⇨ Joins: HiddenKnowledge (~HiddenKn@93.ip-158-69-206.net)
L307[03:10:18] ⇦ Quits: g (~g@ultros.tentacles.are.evidently.sexy) (Quit: Leaving)
L308[03:10:45] ⇨ Joins: AforAnonymous (bitch2k@dyn-050-100.vix2.mmc.at)
L309[03:12:23] ⇦ Quits: killjoy (~killjoy@cpe-76-182-16-229.nc.res.rr.com) (Ping timeout: 206 seconds)
L310[03:27:31] ⇨ Joins: Matthew (~matthew@vps01.cloud.prenger.co)
L311[03:31:00] ⇦ Quits: Ashindigo (uid202308@id-202308.hathersage.irccloud.com) (Quit: Connection closed for inactivity)
L312[03:45:04] *** Kolatra|away is now known as Kolatra
L313[03:59:27] ⇨ Joins: ThePsionic (~ThePsioni@ip5457f909.direct-adsl.nl)
L314[03:59:56] *** Darkevilmac is now known as DarkevilAway
L315[04:10:05] ⇨ Joins: Meow-J (~Meow-J@45.32.34.121)
L316[04:26:20] ⇦ Quits: Flenix (~Flenix@2a01:4f8:201:63e2::2) (Quit: ZNC 1.6.1+deb1~ubuntu14.04.0 - http://znc.in)
L317[04:39:19] ⇨ Joins: Flenix (~Flenix@static.227.9.251.148.clients.your-server.de)
L318[04:39:45] *** Flenix is now known as Flenix|Away
L319[04:40:12] ⇨ Joins: Umbraco (~Umbraco@113x37x12x233.ap113.ftth.ucom.ne.jp)
L320[04:43:40] ⇦ Quits: SatanicSanta (~SatanicSa@c-76-115-175-15.hsd1.or.comcast.net) (Quit: sleep)
L321[04:43:44] ⇦ Quits: Umbraco (~Umbraco@113x37x12x233.ap113.ftth.ucom.ne.jp) (Ping timeout: 206 seconds)
L322[04:51:20] ⇦ Quits: LiftLeft (~loser@im.from.the.gigamatrix.xyz) (Ping timeout: 198 seconds)
L323[04:58:01] *** PaleOff is now known as PaleoCrafter
L324[04:59:21] <PaleoCrafter> what the heck's going on with all the PRs? :D
L325[05:00:07] <gigaherz> ?
L326[05:00:57] <PaleoCrafter> I have a GH notification extension for Chrome and was just surprised that there were 30 updates in the Forge repo :P
L327[05:01:11] <PaleoCrafter> I guess it's mostly m.ezz asking for updates XD
L328[05:01:16] <gigaherz> ah
L329[05:04:01] ⇨ Joins: TechnicianLP (~Technicia@p4FE1C1F5.dip0.t-ipconnect.de)
L330[05:19:35] ⇨ Joins: Ipsis (~Ipsis@82-69-71-184.dsl.in-addr.zen.co.uk)
L331[05:31:20] ⇨ Joins: sciguyryan (~sciguyrya@45.62.37.38)
L332[05:34:58] ⇨ Joins: Jezza (~Jezza@92.206.161.17)
L333[05:56:36] ⇨ Joins: Umbraco (~Umbraco@113x37x12x233.ap113.ftth.ucom.ne.jp)
L334[06:11:28] ⇦ Quits: Umbraco (~Umbraco@113x37x12x233.ap113.ftth.ucom.ne.jp) ()
L335[06:20:42] ⇦ Quits: immibis (~chatzilla@122-61-224-36.jetstream.xtra.co.nz) (Ping timeout: 189 seconds)
L336[06:23:15] ⇨ Joins: g (~g@ultros.tentacles.are.evidently.sexy)
L337[06:23:35] <g> man, I'd love that registered nick redirect if esper didn't split so much..
L338[06:37:32] <gigaherz> 13:37
L339[06:38:16] *** amadornes[OFF] is now known as amadornes
L340[06:42:49] ⇨ Joins: Keanu73 (~Keanu73@host-92-28-72-70.as13285.net)
L341[06:52:13] ⇨ Joins: Ashindigo (uid202308@id-202308.hathersage.irccloud.com)
L342[06:55:54] <gigaherz> So, apparently someone hacked sony music's twitter account, and said britney spears was dead
L343[06:56:01] <gigaherz> before sony had a time to un-hack their account
L344[06:56:12] <gigaherz> someone else hacked the account and corrected the other hack's lie
L345[06:56:22] <InusualZ> lol
L346[07:04:34] ⇦ Quits: Alex_hawks (~Alex_hawk@2001:8003:84a5:7a00:cd1d:f539:4568:39eb) (Read error: Connection reset by peer)
L347[07:05:10] ⇨ Joins: Alex_hawks (~Alex_hawk@2001:8003:84a5:7a00:cd1d:f539:4568:39eb)
L348[07:16:11] ⇨ Joins: Girafi (Girafi@0x555178eb.adsl.cybercity.dk)
L349[07:20:11] <TechnicianLP> !gf FontRendererglyphWidth
L350[07:21:19] ⇨ Joins: Oblivion (~Oblivion@cpc93476-roch7-2-0-cust213.10-1.cable.virginm.net)
L351[08:23:12] *** cpw|out is now known as cpw
L352[08:23:35] ⇨ Joins: fatguylaughing (~fatguylau@worx01.worxco.net)
L353[08:29:02] ⇦ Quits: sciguyryan (~sciguyrya@45.62.37.38) (Remote host closed the connection)
L354[08:42:07] ⇨ Joins: Necro (~Necro@p200300700D6E1AC775A242E68F746A0A.dip0.t-ipconnect.de)
L355[08:55:14] ⇦ Quits: bilde2910 (bilde2910@51.174.170.178) (Ping timeout: 384 seconds)
L356[08:55:52] ⇨ Joins: bilde2910 (bilde2910@51.174.170.178)
L357[08:57:40] *** PaleoCrafter is now known as PaleOff
L358[09:03:14] ⇨ Joins: CsokiCraft (~CsokiCraf@87.97.30.153.pool.invitel.hu)
L359[09:03:51] <CsokiCraft> What's the SoundEvent parameter in EnumHelper.addArmorMaterial()?
L360[09:05:42] ⇦ Quits: Alex_hawks (~Alex_hawk@2001:8003:84a5:7a00:cd1d:f539:4568:39eb) (Read error: Connection reset by peer)
L361[09:06:50] ⇨ Joins: Alex_hawks (~Alex_hawk@101.186.108.103)
L362[09:12:42] ⇦ Quits: bilde2910 (bilde2910@51.174.170.178) (Ping timeout: 195 seconds)
L363[09:14:24] ⇨ Joins: bilde2910 (bilde2910@51.174.170.178)
L364[09:17:29] ⇨ Joins: c233 (~c233@164.40.206.76)
L365[09:22:02] <TechnicianLP> equip-sound for when you rightclick it
L366[09:22:20] <TechnicianLP> (or add it to a horse)
L367[09:26:16] <masa> has something changed recently in forge in regards to starting the game? it seems to take a lot longer now in the latest 1.11.2 version that it did a few weeks back in 1.11
L368[09:26:51] <masa> this is even without any mod added blocks or items, ie. just with my other small utility type mods
L369[09:28:19] <Girafi> Yeah I noticed the same thing updating my mods to 1.11.2. No clue what is causing it.
L370[09:28:47] <gigaherz> 1.11.2 forge is out?
L371[09:28:52] <CsokiCraft> TechnicianLP> How do I get one? SoundEvent.soundEventRegistry.getObject(new ResourceLocation("sound.name"))?
L372[09:29:57] <TechnicianLP> CsokiCraft: i have no clue on ho to do sounds ... i just know what that one is for because i looked it up ... you could look at how vanilla gets its sounds in there ...
L373[09:30:05] <CsokiCraft> Ok
L374[09:33:11] <CsokiCraft> I found this, but it's private: SoundEvents.getRegisteredSoundEvent()
L375[09:33:29] <CsokiCraft> So I'm gonna have to re-make it
L376[09:35:07] <TechnicianLP> if it is private that cant be the method vanilla uses to init its armormaterials ....
L377[09:37:39] <gigaherz> CsokiCraft: did you try looking at how vanilla minecraft constructs its armor materials?
L378[09:38:00] <CsokiCraft> Yes, that's where I found SoundEvents.getRegisteredSoundEvent()
L379[09:48:00] <CsokiCraft> BTW I know this isn't the best place for this question, but does anyone know what's up with CurseForge? I've been waiting for ~3 hrs for my new projects to get approved. Are they on Christmas holiday?
L380[09:48:22] <Lord_Ralex> Probably
L381[09:49:00] <CsokiCraft> Yay the sounds work!
L382[09:51:56] ⇨ Joins: sinkillerj (~sinkiller@nc-67-232-15-221.dhcp.embarqhsd.net)
L383[09:53:55] ⇨ Joins: howtonotwin (~howtonotw@r75-110-22-15.gvllcmtc01.gnvlnc.ab.dh.suddenlink.net)
L384[10:00:11] ⇨ Joins: Tazz (socks@ds003.info)
L385[10:03:32] ⇨ Joins: williewillus (~williewil@cpe-24-28-24-13.austin.res.rr.com)
L386[10:08:14] <Necro> wait. you can accelerate animal growth by feeding them their breeding item? Has this always been in the game?
L387[10:08:31] <williewillus> yes
L388[10:08:33] <williewillus> 1.8
L389[10:08:36] <gigaherz> for a while,yes
L390[10:08:37] <gigaherz> XD
L391[10:09:54] <Necro> ok, I just found out about it because I looked at the interaction code for breedable animals. This may come in handy.
L392[10:10:09] <williewillus> so, about https://github.com/MinecraftForge/MinecraftForge/pull/3214
L393[10:10:18] <williewillus> should I leave it as is or move it to Potion?
L394[10:12:39] <howtonotwin> I say you put defaults on Potion
L395[10:12:41] <gigaherz> last thing lex said is "why not both"
L396[10:12:52] <gigaherz> so I'd make Potion have the defaults
L397[10:12:54] <TechnicianLP> what is a curativeitem?
L398[10:12:56] <gigaherz> PotionEffect copy from Potion
L399[10:13:00] <williewillus> TechnicianLP: e.g. milk bucket
L400[10:13:03] <gigaherz> TechnicianLP: the milk bucket
L401[10:13:14] <gigaherz> mod potions can have different ones
L402[10:13:45] <williewillus> hm
L403[10:14:54] ⇦ Quits: c233 (~c233@164.40.206.76) (Quit: Leaving)
L404[10:15:24] ⇨ Joins: edr (~edr@d-65-175-180-73.cpe.metrocast.net)
L405[10:18:27] ⇨ Joins: c233 (~c233@164.40.206.76)
L406[10:24:22] ⇦ Quits: CsokiCraft (~CsokiCraf@87.97.30.153.pool.invitel.hu) (Quit: Leaving)
L407[10:33:31] <FusionLord> I think one of Pam's mods adds a milk bottle for example
L408[10:35:53] *** MrKick|Away is now known as MrKickkiller
L409[10:37:54] <williewillus> where do i turn off intellij's runtime null asserts again
L410[10:42:35] ⇦ Quits: bilde2910 (bilde2910@51.174.170.178) (Ping timeout: 189 seconds)
L411[10:45:02] ⇨ Joins: bilde2910 (bilde2910@51.174.170.178)
L412[10:48:24] <gigaherz> williewillus: in the settings ;P
L413[10:49:14] <gigaherz> if you search for "runtime"
L414[10:49:33] <gigaherz> you'll get "Build, Execution, Deployment" -> "Add runtime assertions for not-null-annotated methods and parameters"
L415[10:49:45] <gigaherz> you'll get "Build, Execution, Deployment" -> Compiler -> "Add runtime assertions for not-null-annotated methods and parameters"
L416[10:58:12] ⇦ Quits: Ipsis (~Ipsis@82-69-71-184.dsl.in-addr.zen.co.uk) (Ping timeout: 384 seconds)
L417[11:01:00] ⇦ Quits: Ashindigo (uid202308@id-202308.hathersage.irccloud.com) (Quit: Connection closed for inactivity)
L418[11:01:19] ⇨ Joins: Hgrebnednav (~Hgrebnedn@d8d872a6e.access.telenet.be)
L419[11:01:40] ⇨ Joins: [com]buster (~EternalFl@ip5457c57d.direct-adsl.nl)
L420[11:02:10] ⇦ Quits: CoderPuppy (~cpup@32.218.113.202) (Ping timeout: 384 seconds)
L421[11:02:23] ⇨ Joins: cpup (~cpup@32.218.113.202)
L422[11:03:07] ⇨ Joins: IceDragon (~ThatGuy@69.160.115.240)
L423[11:09:12] ⇦ Quits: turmfalke (~turmfalke@p5DCE035C.dip0.t-ipconnect.de) (Quit: turmfalke)
L424[11:18:24] ⇨ Joins: Ashindigo (uid202308@id-202308.hathersage.irccloud.com)
L425[11:23:45] ⇦ Quits: cpup (~cpup@32.218.113.202) (Ping timeout: 189 seconds)
L426[11:28:36] <barteks2x> a big question: should I update all my license headers from 2015 to 2016 now, or wait until 2017 and do 2015->2017? :D
L427[11:29:37] ⇨ Joins: cpup (~cpup@32.218.113.202)
L428[11:30:59] <Akkarin> Why do people always feel like they need to update those without changing anything?
L429[11:31:09] <fry> update to 2017 now? :D
L430[11:31:25] <barteks2x> I don't know how to cofngure gradle license plugin to ginore mismatchign year
L431[11:31:29] <barteks2x> *ignore
L432[11:31:46] <barteks2x> or if it's possible to configure it that way
L433[11:31:50] <fry> date 2017; do things; ntpdate
L434[11:33:00] <barteks2x> maybe automating it was a bad idea, but if I didn't do that, I would always forget about it
L435[11:33:16] <Lord_Ralex> i mean, the copyright has a long-life anyways
L436[11:33:48] <barteks2x> creating new files with years 2015 in years 2016 seems weird
L437[11:33:56] <barteks2x> and I'm doing it for the whole year now
L438[11:34:52] ⇦ Quits: RichardG (~richardg8@201.37.255.130) (Read error: Connection reset by peer)
L439[11:36:02] ⇨ Joins: RichardG (~richardg8@201.37.255.130)
L440[11:36:02] MineBot sets mode: +v on RichardG
L441[11:38:31] <williewillus> the interaction system is so convoluted t-t
L442[11:38:44] <williewillus> + me being at flow charts => this is a mess
L443[11:38:51] <williewillus> I should get someone to clean it up for me after i finish
L444[11:38:55] <williewillus> *being bad
L445[11:39:13] ⇨ Joins: McJty (~jorrit@94-224-154-146.access.telenet.be)
L446[11:40:39] <barteks2x> this computer is so slow that my unit test times out...
L447[11:41:04] *** diesieben|away is now known as diesieben07
L448[11:45:31] ⇨ Joins: Brokkoli (~Brokkoli@p5B23C6BC.dip0.t-ipconnect.de)
L449[11:49:10] <masa> should I always have the pack.mcmeta file in my mods, or only if I actually have some resources like at least a lang file?
L450[11:49:33] <williewillus> is it even necessary to have that?
L451[11:49:37] ⇨ Joins: iso2013 (~iso2013@c-67-176-10-45.hsd1.co.comcast.net)
L452[11:49:42] <williewillus> i've seen mods that just don't have one
L453[11:49:47] <McJty> It is usually optional
L454[11:49:47] <masa> I never had those before but I just now notived that JEI has one, when I was looking at why my lang file broke...
L455[11:50:02] <McJty> Except if you want to support both 1.11 and 1.10 in one mod :-)
L456[11:50:29] <masa> so then I'd have to have version 2 in there or something?
L457[11:51:14] <McJty> yes
L458[11:51:49] <masa> hmm right good point... and then I also need to keep the lang file as en_US.lang instead of en_us.lang?
L459[11:52:25] <McJty> yes, en_US.lang
L460[11:52:41] <masa> hmm, meh, I'll just drop < 1.11 from most of my mods..
L461[11:53:07] <McJty> I think it is still a bit too early for that. With most major packs newly arrived on 1.10 and staying there for a while still
L462[11:53:37] <masa> I guess I'll need to keep it in JED and do that there, since my current release for it is 1.10.2 & 1.11
L463[11:54:46] <masa> well yes, I meant that most of my small mods haven't gotten any actual changes in ages, just porting for new mc versions. So I'll just make the new ports 1.11.x exclusive instead of marking them also for 1.10.2 and 1.9 where they were before
L464[11:57:07] <williewillus> i still haven't done blocks....or the server side of everything t-t: http://imgh.us/rightclick.svg
L465[12:00:36] <barteks2x> anyone using windows normally knows if there is a way to make a window stay on top? switching is too annoying
L466[12:02:00] <diesieben07> there is a program that can do it
L467[12:02:07] <diesieben07> don't remember the name though
L468[12:03:10] <barteks2x> if I have to install a program for that than I can as well switch back and forth for a while...
L469[12:04:23] ⇦ Quits: iso2013 (~iso2013@c-67-176-10-45.hsd1.co.comcast.net) (Quit: Bye :))
L470[12:09:13] ⇨ Joins: KnightMiner (~KnightMin@adsl-75-5-73-22.dsl.emhril.sbcglobal.net)
L471[12:12:30] ⇨ Joins: iso2013 (~iso2013@c-67-176-10-45.hsd1.co.comcast.net)
L472[12:13:39] ⇨ Joins: Samario (~Samario@cpc5-bigg3-2-0-cust219.9-2.cable.virginm.net)
L473[12:22:04] ⇦ Quits: Kaiyouka (~IdiotNono@c-75-71-231-133.hsd1.co.comcast.net) (Ping timeout: 384 seconds)
L474[12:22:24] ⇦ Quits: iso2013 (~iso2013@c-67-176-10-45.hsd1.co.comcast.net) (Quit: Bye :))
L475[12:43:05] <barteks2x> I was wondering how I made lapis generation work with infinite depth.... I didn't
L476[12:45:03] <barteks2x> I really don't have any good idea how to implement lapis generation
L477[12:45:22] ⇨ Joins: zxc (blk@198-48-175-31.cpe.pppoe.ca)
L478[12:45:25] ⇦ Quits: srs_bsns (blk@198-48-175-31.cpe.pppoe.ca) (Killed (NickServ (GHOST command used by zxc)))
L479[12:45:25] *** zxc is now known as srs_bsns
L480[12:52:17] ⇨ Joins: Ipsis (~Ipsis@82-69-71-184.dsl.in-addr.zen.co.uk)
L481[13:01:09] <FusionLord> !latest 1.10.2
L482[13:05:20] ⇦ Quits: ThePsionic (~ThePsioni@ip5457f909.direct-adsl.nl) (Quit: Leaving)
L483[13:14:11] <barteks2x> are comments allowed in .lang files?
L484[13:14:33] <Akkarin> To my understanding they are standard properties files
L485[13:16:29] <gigaherz> not quite
L486[13:16:30] <diesieben07> they are not
L487[13:16:33] <diesieben07> but you can make them
L488[13:16:36] <gigaherz> if you look at Locale#loadLocaleData
L489[13:16:51] <gigaherz> it will read the file, split by lines
L490[13:16:54] <Akkarin> because using properties files were far too simple for the use as languages!
L491[13:16:56] <gigaherz> and then parse each line as either empty
L492[13:16:56] <Akkarin> m(
L493[13:17:01] <gigaherz> or key=value
L494[13:17:10] <diesieben07> put #PARSE_ESCAPES on the first line
L495[13:17:19] <diesieben07> then it becomes a normal properties file
L496[13:17:48] <gigaherz> diesieben07: is that processed at compile time?
L497[13:17:52] <diesieben07> no
L498[13:17:56] <diesieben07> that's a forge hook
L499[13:18:00] <gigaherz> I see
L500[13:18:47] <gigaherz> I don't see how that handles comments
L501[13:18:50] <barteks2x> I'm trying to find out where is vanilla unlocalized name for the Yes/No in customized world settings on buttons and I can't find it
L502[13:18:53] <barteks2x> any idea where it is?
L503[13:19:00] <diesieben07> has nothing to do with comments specifically
L504[13:19:11] <diesieben07> it just loads it as a normal properties file instead of using mojang's format
L505[13:19:59] <gigaherz> I can't find anything overriding loadLocaleData
L506[13:20:17] <diesieben07> it calls FMLCommonHandler#loadLanguage
L507[13:20:52] <gigaherz> oh
L508[13:20:54] * gigaherz facepalms
L509[13:20:56] <gigaherz> it's right at the top
L510[13:21:00] <gigaherz> and I didn't see it
L511[13:21:35] <barteks2x> so now I see that comments should work. But now I want to know how I should handle text on a button in format Something: Yes/No
L512[13:21:49] <gigaherz> barteks2x: patience. XD
L513[13:22:11] <gigaherz> I18n.format("gui.yes")
L514[13:22:22] <gigaherz> in GuiCustomizeWorldScreen
L515[13:22:32] ⇦ Quits: KnightMiner (~KnightMin@adsl-75-5-73-22.dsl.emhril.sbcglobal.net) (Ping timeout: 198 seconds)
L516[13:32:09] <Zaggy1024> is there a way to update a pull request to apply to the new branch?
L517[13:32:13] <Zaggy1024> or do I have to just create a new one?
L518[13:32:21] <tterrag> you can rebase it on github
L519[13:32:54] ⇦ Quits: Samario (~Samario@cpc5-bigg3-2-0-cust219.9-2.cable.virginm.net) (Ping timeout: 384 seconds)
L520[13:35:24] ⇨ Joins: KnightMiner (~KnightMin@adsl-75-5-73-22.dsl.emhril.sbcglobal.net)
L521[13:35:54] * williewillus sighs
L522[13:35:55] <williewillus> http://imgh.us/rightclick_1.svg
L523[13:36:26] <Zaggy1024> dang
L524[13:37:09] <williewillus> that's without some details I cut out too lol
L525[13:37:58] <gigaherz> I thought FAIL also cancelled iteration
L526[13:38:14] <Ordinastie> that shows the design is kinda bad
L527[13:38:43] <williewillus> gigaherz: not on the client
L528[13:38:44] <williewillus> lol
L529[13:39:23] <williewillus> almost everything checks result == SUCCESS
L530[13:39:34] <Ordinastie> PIE should be sent first, and you should be able to chose whether it should test the other hand, and if it should send to server
L531[13:39:42] <Ordinastie> independently of what vanilla does
L532[13:39:55] ⇦ Quits: Darkhax (~darkhax@node-1w7jra24u4wfq878aqe56bl3w.ipv6.telus.net) (Quit: Leaving)
L533[13:40:21] <williewillus> problem is you don't know what interactions are necessarily going to occur ahead of time, esp with the right click block case
L534[13:40:33] <barteks2x> Worldgen is simple compared to that :D
L535[13:41:05] <Ordinastie> williewillus, you don't need to know
L536[13:41:25] <Ordinastie> you only need to know if it's cancelled and if you need to send to server
L537[13:41:39] <williewillus> then you lose the granularity of UseBlock and useItem
L538[13:41:51] ⇦ Quits: McJty (~jorrit@94-224-154-146.access.telenet.be) (Quit: Leaving)
L539[13:41:52] <williewillus> PIE is "sent first", the chart just looks like shit because that's vanilla's logic in there too
L540[13:41:58] ⇦ Quits: Ipsis (~Ipsis@82-69-71-184.dsl.in-addr.zen.co.uk) (Ping timeout: 384 seconds)
L541[13:42:44] ⇨ Joins: KGS (~KGS@h-155-4-129-249.na.cust.bahnhof.se)
L542[13:42:59] <Ordinastie> but if you don't cancel, the server doesn't receive the event
L543[13:43:38] ⇨ Joins: iso2013 (~iso2013@c-67-176-10-45.hsd1.co.comcast.net)
L544[13:43:42] <williewillus> ? the server always receives the event
L545[13:43:45] <williewillus> currently
L546[13:44:07] <Ordinastie> not according to your chart anyway
L547[13:44:26] <williewillus> where
L548[13:45:32] <Ordinastie> Fire PIE.RightClickBlock <= that happens client side, right ?
L549[13:45:46] <williewillus> this whole chart is client
L550[13:45:52] <williewillus> lol
L551[13:46:15] <williewillus> yes and you are wondering why the right side doesn't have a packet send right? look further down. the packet send happens halfway through
L552[13:46:18] <williewillus> because vanilla does it that way
L553[13:46:37] <williewillus> (which is dumb but I didn't want big patches refactoring their stuff)
L554[13:47:06] *** Clank[Away] is now known as Clank
L555[13:49:49] <williewillus> i should highlight the parts patched in by forge or something, to visually separate that vs vanilla logic
L556[13:54:34] ⇦ Quits: KGS (~KGS@h-155-4-129-249.na.cust.bahnhof.se) (Read error: Connection reset by peer)
L557[14:00:20] ⇦ Quits: Zaggy1024 (~Zaggy1024@184-100-102-214.mpls.qwest.net) (Ping timeout: 198 seconds)
L558[14:03:37] ⇨ Joins: Snapples (uid167569@id-167569.stonehaven.irccloud.com)
L559[14:13:10] ⇨ Joins: Zaggy1024 (~Zaggy1024@184-100-102-214.mpls.qwest.net)
L560[14:14:38] ⇨ Joins: armctec (~Thunderbi@201.83.171.128)
L561[14:14:52] ⇦ Quits: armctec (~Thunderbi@201.83.171.128) (Client Quit)
L562[14:15:41] ⇨ Joins: Kaiyouka (~IdiotNono@c-75-71-231-133.hsd1.co.comcast.net)
L563[14:28:38] *** Keridos|away is now known as Keridos
L564[14:37:23] ⇦ Quits: Hunterz (~hunterz@62.182.234.189) (Remote host closed the connection)
L565[14:41:32] ⇦ Quits: primetoxinz (~primetoxi@ip68-107-226-229.hr.hr.cox.net) (Remote host closed the connection)
L566[14:42:20] ⇨ Joins: primetoxinz (~primetoxi@ip68-107-226-229.hr.hr.cox.net)
L567[14:42:21] ⇨ Joins: Genuine (~Genuine@104.156.228.160)
L568[14:45:36] <mezz> williewillus, jesus christ
L569[14:46:06] <mezz> the chart is nice, the logic is not heh
L570[14:46:23] <williewillus> indeed lol
L571[14:46:27] <williewillus> it's mostly vanilla though
L572[14:46:31] <mezz> yep
L573[14:46:38] <williewillus> and that's just the client side :P
L574[14:46:44] <mezz> I noticed...
L575[14:46:47] <mezz> sigh
L576[14:46:49] <williewillus> though the server side is much simpler
L577[14:46:56] <mezz> ok
L578[14:47:17] <williewillus> it's basically the three trees from this client chart, in separate methods, and not jumbled together
L579[14:47:52] <mezz> I think this could benefit from a couple things: colors for vanilla vs forge event, and client vs server colors and different arrow type for sending packets once you add that
L580[14:50:43] <mezz> man this logic is...
L581[14:51:11] <howtonotwin> it's worse than TileEntityBeacon
L582[14:51:23] <howtonotwin> and that's saying honestly impressive
L583[14:51:28] <mezz> it's worse than villager trading
L584[14:51:57] <williewillus> howtonotwin: what's the beacon do that's bad? :P
L585[14:52:00] <williewillus> calculating the beam color?
L586[14:52:09] <howtonotwin> the decompiler screws it horribly
L587[14:52:29] <howtonotwin> ALL the logic is a total clusterfuck
L588[14:55:04] ⇦ Quits: quadraxis (~quadraxis@cpc77293-basf12-2-0-cust699.12-3.cable.virginm.net) (Ping timeout: 384 seconds)
L589[14:55:13] <williewillus> the interaction isn't even decompiler artifacts
L590[14:55:16] <williewillus> it's just that complex :P
L591[14:55:19] <williewillus> *:D
L592[14:55:24] <williewillus> *t-t
L593[14:55:47] <howtonotwin> And here we see willie's sanity finally cracking under the strain
L594[14:55:51] <howtonotwin> he will be misse
L595[14:55:53] <howtonotwin> *missed
L596[14:56:16] ⇨ Joins: KGS (~KGS@h-155-4-129-249.na.cust.bahnhof.se)
L597[15:01:18] <barteks2x> would I need a custom serializer to serialize a Set/List/SomeContainer to/from json?
L598[15:01:47] <Ordinastie> depends on what's inside the list/Set
L599[15:01:55] <barteks2x> Strings
L600[15:02:00] <barteks2x> or at least a type I control
L601[15:02:01] <Ordinastie> then probably not
L602[15:02:32] <barteks2x> Actually, does biome generator support disabling/enabling specific bioomes?
L603[15:02:39] <barteks2x> or only what vanilla worldgen config can do?
L604[15:03:24] <barteks2x> if biome generator doesn't support that, no point in adding that list/set
L605[15:07:24] <barteks2x> um... nope
L606[15:07:45] <barteks2x> biome generator directly uses ChunkProviderSettings
L607[15:07:49] *** mumfrey is now known as Mumfrey
L608[15:08:00] <barteks2x> so even if I want to I can't make it possible to enable/disable specific biomes
L609[15:08:01] ⇨ Joins: Shambling (~Shambling@24-181-186-74.dhcp.nwtn.ct.charter.com)
L610[15:09:33] <Shambling> well turns out it wasn't anything I thought it was causing that crash yesterday for me
L611[15:10:15] <Shambling> was some hard to reproduce bug from quark that was fixed later in the day, lol :P
L612[15:11:40] ⇦ Quits: Zesty (~Zesty@2002:b461:1c0c::b461:1c0c) (Quit: cya)
L613[15:11:42] <barteks2x> I would think that if mods can add custom biomes, forge/mods can control which biomes are generated but the only way seems to be hacking GenLayerBiome with reflection
L614[15:12:28] *** amadornes is now known as amadornes[OFF]
L615[15:12:40] <Shambling> just because we can add to a list, doesn't mean forge has full control of he list I'd imagine if it wasn't built in by default
L616[15:13:08] <Shambling> it is fairly easy to add to the end of a linked list, for example. Coding the ability to remove on demand is alot harder afaik
L617[15:13:25] <howtonotwin> adding to the end of a linked list is rather inefficient :P
L618[15:13:34] <howtonotwin> I think you mean adding to the start
L619[15:13:46] <Shambling> you know, you're right
L620[15:14:02] <Shambling> either way, its still easier to add one item than go through an entire list to find a biome to hide/replace it
L621[15:14:24] <gigaherz> it is on a single-linked list
L622[15:14:33] <mezz> linked lists can keep reference to the start and the end, there's no reason it's inefficient to add to the end
L623[15:14:34] <barteks2x> The thign is minecraft has to create and add all needed biomes to list every time it creates GenLayerBiome
L624[15:14:36] <gigaherz> but on a doubly-linked list, it's equally as efficient
L625[15:14:41] <barteks2x> so changing that wouldn't be too hard
L626[15:14:52] <barteks2x> \the only problem could be biomes generated in other layers
L627[15:14:54] ⇨ Joins: Zesty (~Zesty@180.97.28.12)
L628[15:25:36] ⇨ Joins: shadekiller666 (~shadekill@adsl-108-71-36-38.dsl.lsan03.sbcglobal.net)
L629[15:28:38] ⇨ Joins: ThePsionic (~ThePsioni@ip5457f909.direct-adsl.nl)
L630[15:31:45] ⇦ Quits: shadekiller666 (~shadekill@adsl-108-71-36-38.dsl.lsan03.sbcglobal.net) (Quit: Leaving)
L631[15:32:20] ⇨ Joins: GenuineSounds (~Genuine@104.156.228.160)
L632[15:32:51] ⇦ Quits: Genuine (~Genuine@104.156.228.160) (Ping timeout: 206 seconds)
L633[15:39:50] ⇦ Quits: Necro (~Necro@p200300700D6E1AC775A242E68F746A0A.dip0.t-ipconnect.de) (Ping timeout: 384 seconds)
L634[15:46:39] ⇦ Quits: Hgrebnednav (~Hgrebnedn@d8d872a6e.access.telenet.be) (Ping timeout: 189 seconds)
L635[15:51:05] ⇨ Joins: kinggoesgaming (uid23106@id-23106.tooting.irccloud.com)
L636[15:51:27] ⇦ Quits: Shambling (~Shambling@24-181-186-74.dhcp.nwtn.ct.charter.com) (Read error: Connection reset by peer)
L637[15:55:38] ⇨ Joins: killjoy (~killjoy@cpe-76-182-16-229.nc.res.rr.com)
L638[15:56:37] ⇨ Joins: shadekiller666 (~shadekill@adsl-108-71-36-38.dsl.lsan03.sbcglobal.net)
L639[15:57:58] ⇦ Quits: bilde2910 (bilde2910@51.174.170.178) (Ping timeout: 384 seconds)
L640[15:59:12] ⇨ Joins: Necro (~Necro@p4FE05278.dip0.t-ipconnect.de)
L641[15:59:31] ⇨ Joins: bilde2910 (bilde2910@51.174.170.178)
L642[16:04:07] <williewillus> does anyone know of a good flowchart creator tool on linux? the one I'm using (Dia) doesn't let me do different colored text in one object
L643[16:04:43] ⇦ Quits: Keanu73 (~Keanu73@host-92-28-72-70.as13285.net) (Read error: Connection reset by peer)
L644[16:05:44] ⇦ Quits: KnightMiner (~KnightMin@adsl-75-5-73-22.dsl.emhril.sbcglobal.net) (Ping timeout: 198 seconds)
L645[16:11:49] <mezz> how about LibreOffice, williewillus ?
L646[16:12:55] <gigaherz> google suggests LibreOffice Draw, and yEd
L647[16:13:13] <gigaherz> http://alternativeto.net/software/dia/?platform=linux
L648[16:13:16] ⇦ Quits: TechnicianLP (~Technicia@p4FE1C1F5.dip0.t-ipconnect.de) (Ping timeout: 384 seconds)
L649[16:13:37] <mezz> neat
L650[16:14:13] <fry> http://graphicdesign.stackexchange.com/questions/16629/drawing-block-diagram/39509#39509
L651[16:14:26] <mezz> lol
L652[16:14:30] <williewillus> lol
L653[16:15:20] <mezz> that suggestion is so linuxy it just melted my face off
L654[16:15:57] <gigaherz> I wonder if programming that in postscript wouldn't be easier than in TeX
L655[16:16:16] <fry> >.>
L656[16:16:31] <diesieben07> tikz is a fucking nightmare
L657[16:16:32] <fry> http://www.texample.net/tikz/examples/tag/block-diagrams/
L658[16:16:36] <gigaherz> what? http://jbrazile.blogspot.com/2012/04/postscript-flowchart-symbols-for.html
L659[16:17:58] <mezz> TikZ looks nice if you're writing a book and have infinite time and patience
L660[16:19:07] <fry> www.texample.net/media/tikz/examples/TEX/flowchart.tex oh my god 90 lines of code good thing I indeed to have infinite time and patience
L661[16:21:17] <mezz> who counts time in lines of code? :P
L662[16:21:45] <diesieben07> it reads worse than perl goddamnit :D
L663[16:22:03] ⇨ Joins: Samario (~Samario@cpc5-bigg3-2-0-cust219.9-2.cable.virginm.net)
L664[16:23:01] <fry> hurr durr look at a weird unknown language
L665[16:23:14] <shadekiller666> at least its not brainfuck...
L666[16:23:48] <williewillus> writing it in "code" is only worth it if you're going to be revisiting it, collaborating on it, etc. for one of things I'll take dragging boxes around :P
L667[16:23:52] <williewillus> *one off
L668[16:24:20] <fry> your loss :P
L669[16:24:23] <mezz> sorry I don't pick up new languages instantly fry
L670[16:24:30] <diesieben07> someone's butthurt :D
L671[16:24:46] *** MrKickkiller is now known as MrKick|Away
L672[16:25:37] ⇨ Joins: gr8pefish (~gr8pefish@24-121-184-14.flagcmtk01.res.dyn.suddenlink.net)
L673[16:25:44] <fry> that starts to happen after the second dozen, if you vary them enough :D
L674[16:26:05] ⇨ Joins: KnightMiner (~KnightMin@adsl-75-5-73-22.dsl.emhril.sbcglobal.net)
L675[16:26:19] <diesieben07> and it's not "weird and unknown", i worked with TeX for a good year every week because some asshat at uni wanted the homework done in TeX ...
L676[16:26:27] <diesieben07> still sucks :D
L677[16:26:50] <gigaherz> I had a teacher like that one
L678[16:26:53] <gigaherz> once*^
L679[16:26:56] <fry> http://s.pikabu.ru/images/big_size_comm/2012-06_2/13392969946731.jpg
L680[16:27:09] <gigaherz> I wrote the paper in msword
L681[16:27:17] <gigaherz> and then used a word-to-tex exporter
L682[16:27:20] <williewillus> lol
L683[16:27:28] <williewillus> i just downloaded a template and ran with it
L684[16:27:36] <shadekiller666> is there an event that gets fired when the world gets saved/loaded?
L685[16:27:38] <mezz> yea I did homework in latex one year just to learn it... not the most fun I've ever inflicted on myself
L686[16:27:58] <gigaherz> shadekiller666: maybe, but what do you need it for?
L687[16:28:01] <diesieben07> shadekiller666, WorldEvent.Save / Load? :D
L688[16:28:10] <diesieben07> but yeah
L689[16:28:13] <diesieben07> what he said
L690[16:29:14] <shadekiller666> custom multiblock system, need to save data to nbt about each structure in the world when the game is closed on SP/when the world is saved in MP
L691[16:29:28] <gigaherz> use WorldSavedData
L692[16:29:33] <gigaherz> keep all the structures in there
L693[16:29:35] <shadekiller666> and load the data back when the world is opened
L694[16:29:47] <gigaherz> it will save whenever the world saves to disk
L695[16:29:51] <gigaherz> and load on demand
L696[16:29:59] <gigaherz> http://mcforge.readthedocs.io/en/latest/datastorage/worldsaveddata/
L697[16:30:29] <gigaherz> all you ahveto do is implement a few methods, and make sure that you call markDirty to notify mc that there's data worth saving
L698[16:30:40] <shadekiller666> ok
L699[16:31:13] <gigaherz> for a practical example: https://github.com/gigaherz/Ender-Rift/blob/master/src/main/java/gigaherz/enderRift/rift/storage/RiftStorageWorldData.java
L700[16:31:18] <williewillus> !gf field_191552_t
L701[16:31:23] <williewillus> !gf field_191552_t 1.11.2
L702[16:33:24] *** DarkevilAway is now known as Darkevilmac
L703[16:33:49] <shadekiller666> gigaherz, when are you using the methods in RiftStorageWorldData?
L704[16:34:16] <gigaherz> when I need the data
L705[16:34:19] <gigaherz> you do like
L706[16:34:35] <gigaherz> RSWD.get(id) -- don't cache the result)
L707[16:34:42] <gigaherz> and then call the methods on that afterward
L708[16:35:24] <gigaherz> https://github.com/gigaherz/Ender-Rift/blob/master/src/main/java/gigaherz/enderRift/rift/TileEnderRift.java#L138
L709[16:35:39] <gigaherz> oops .get(id) I meant .get(world)
L710[16:37:27] <shadekiller666> ok so if i was to make my StructureManager class extend WorldSavedData, and i placed a new structure (ie. updated the contents of a map in the class) i would just call markDirty() as well to make sure that writeToNBT gets called at the correct time?
L711[16:37:52] <gigaherz> yes
L712[16:37:54] ⇨ Joins: NineChickens (uid196646@id-196646.ealing.irccloud.com)
L713[16:38:35] <shadekiller666> and i'm guessing readFromNBT gets called automatically whenever the world is loaded?
L714[16:38:50] <gigaherz> sortof
L715[16:39:03] <gigaherz> it gets called when someone calls getOrLoadData
L716[16:39:22] <gigaherz> hence why I said it loads on demand
L717[16:39:35] <shadekiller666> would i need to catch a WorldEvent.Load to make sure that happens?
L718[16:39:41] <gigaherz> no
L719[16:39:49] <gigaherz> if you do it right, no
L720[16:39:56] ⇦ Quits: howtonotwin (~howtonotw@r75-110-22-15.gvllcmtc01.gnvlnc.ab.dh.suddenlink.net) (Read error: Connection reset by peer)
L721[16:40:04] <shadekiller666> ok...
L722[16:40:09] <gigaherz> all you have to do is let your multiblocks access the data whenever they need it
L723[16:40:14] <williewillus> i think he's saying it loads whenever it's first used
L724[16:40:20] ⇨ Joins: howtonotwin (~howtonotw@r75-110-22-15.gvllcmtc01.gnvlnc.ab.dh.suddenlink.net)
L725[16:40:22] <williewillus> regardless of if that's 2 or 3000 ticks after the server starts
L726[16:40:25] <gigaherz> don't rely on worldsaveddata for active logic
L727[16:40:51] <gigaherz> as the name implies, it's for managing data that gets saved into the world save files
L728[16:41:17] <gigaherz> so keep the active logic separate, and just query the data when you need it
L729[16:41:37] <shadekiller666> here is the scenario: for SP: the player has just launched the game and is loading an existing world, the data in question must be available to any structure members before they can be placed/broken/checked/activated
L730[16:41:55] <gigaherz> yes
L731[16:41:55] <gigaherz> so
L732[16:42:00] <williewillus> it loads when anyone asks for it
L733[16:42:03] <gigaherz> whenever any one of those operations has to happen
L734[16:42:07] <gigaherz> you'll call
L735[16:42:19] <gigaherz> StructureManager.get(world).getData(whatever)
L736[16:42:31] <gigaherz> the get method will in turn call getOrLoadData
L737[16:42:31] <shadekiller666> for MP: the world has just been loaded by the server and the data needs to be available before structures can do anything
L738[16:42:36] <gigaherz> which will trigger the data to load
L739[16:42:45] <gigaherz> before returning from the call
L740[16:42:49] <gigaherz> so either way
L741[16:42:59] <gigaherz> whatever gets returned from the get(world) method, will have the data loaded
L742[16:43:05] <gigaherz> or be a brand-new object if no data existed before
L743[16:44:23] <shadekiller666> i have StructureManager set up to be the middle-man for all 4 of those situations, so i suppose i could have a check to see if the map is null/empty (or a flag determining if data has been loaded), and then call the load method to load everything
L744[16:45:27] <shadekiller666> there is only supposed to be one instance of StructureManager, which all of the structures call to for operations
L745[16:46:45] *** GenuineSounds is now known as Genuine
L746[16:51:18] <williewillus> anyone have a 1.11.2 workspace handy right now? can you just run it and see if milk buckets clear potions properly?
L747[16:51:22] <williewillus> might of come across a porting bug
L748[16:51:29] <williewillus> *have
L749[16:51:40] <gigaherz> shadekiller666: uhhh you don't have to test if it's loaded
L750[16:51:44] <gigaherz> getOrLoadData does that for you
L751[16:51:52] <gigaherz> you just query it whenever you need access to the data
L752[16:52:07] ⇦ Quits: howtonotwin (~howtonotw@r75-110-22-15.gvllcmtc01.gnvlnc.ab.dh.suddenlink.net) (Ping timeout: 206 seconds)
L753[16:52:13] ⇦ Quits: KGS (~KGS@h-155-4-129-249.na.cust.bahnhof.se) (Read error: Connection reset by peer)
L754[16:52:18] <gigaherz> check my example "get" method
L755[16:52:22] ⇨ Joins: KGS (~KGS@h-155-4-129-249.na.cust.bahnhof.se)
L756[16:52:27] <gigaherz> the static one
L757[16:53:08] <shadekiller666> i'm just wondering when i should do that whole thing with getOrLoadData
L758[16:53:23] <shadekiller666> let me throw this on a gist and i'll show you what i mean
L759[16:54:35] ⇦ Quits: KGS (~KGS@h-155-4-129-249.na.cust.bahnhof.se) (Client Quit)
L760[16:54:36] <gigaherz> what do you mean "when"?
L761[16:54:44] <gigaherz> at some point in your code
L762[16:54:45] <diesieben07> need access to the data? call getOrLoadData
L763[16:54:46] ⇨ Joins: KGS (~KGS@h-155-4-129-249.na.cust.bahnhof.se)
L764[16:54:48] <gigaherz> you'll need access to the data
L765[16:54:57] <gigaherz> so you query the world storage manager
L766[16:55:03] <williewillus> just treat it like a getter, it loads from disk if it's not in memory already, otherwise it returns it from memory
L767[16:55:04] <gigaherz> and ask for the instance
L768[16:55:05] ⇨ Joins: Delaxarnyazer (~Delaxarny@2a02:a44e:91ce:1:80dc:7855:5421:3308)
L769[16:55:09] <williewillus> look at the impl of getOrLoadData
L770[16:55:10] <shadekiller666> StructureManager has a public static final instance variable
L771[16:55:15] <gigaherz> don't
L772[16:55:18] <gigaherz> you don't want that
L773[16:55:24] <gigaherz> use a static get(World) method
L774[16:55:27] <gigaherz> like I suggest in the docs
L775[16:55:48] <gigaherz> you do need a World instance to query the world storage map
L776[16:56:15] <shadekiller666> :/
L777[16:56:25] <gigaherz> any time you'd do
L778[16:56:31] <gigaherz> StructureManager.instance
L779[16:56:33] <gigaherz> reaplce that with
L780[16:56:38] <gigaherz> StructureManager.get(this.world)
L781[16:56:38] <gigaherz> or
L782[16:56:43] <gigaherz> StructureManager.get(worldIn)
L783[16:56:47] <gigaherz> whichever the case
L784[16:57:14] <gigaherz> this will ensure that you don't use stale data
L785[16:57:29] <gigaherz> and if you choose to have separate data structures per dimension
L786[16:57:32] ⇨ Joins: Everseeking (~Everseeki@pool-100-6-95-214.pitbpa.fios.verizon.net)
L787[16:57:34] <gigaherz> that you query the right one
L788[16:58:06] <shadekiller666> i just don't want to have A. a bunch of different instances of StructureManager if i can avoid it, and B. have to read from disk everytime a structure needs to be placed/broken/checked/updated
L789[16:58:21] <gigaherz> that's not how it works
L790[16:58:39] <gigaherz> getOrLoadData will return the same instance every time
L791[16:58:41] <gigaherz> if it's already loaded
L792[16:58:52] <gigaherz> it only loads once, and gets the rest of the times
L793[16:58:54] <shadekiller666> or a new one if it hasn't
L794[16:59:00] <shadekiller666> ok
L795[16:59:08] ⇦ Quits: KnightMiner (~KnightMin@adsl-75-5-73-22.dsl.emhril.sbcglobal.net) (Ping timeout: 198 seconds)
L796[17:00:07] <shadekiller666> i'm assuming that having a private constructor then is a bad idea?
L797[17:00:26] <shadekiller666> given that getOrLoadData needs to be able to instantiate one?
L798[17:00:45] <shadekiller666> wait no, what am i saying
L799[17:01:01] <gigaherz> add the constructors exactly how I describe them in the documentation page ;P
L800[17:01:06] <gigaherz> you need the two
L801[17:06:20] <shadekiller666> hmmm
L802[17:06:51] ⇦ Quits: founderio (~Thunderbi@p200300C4E3C240002069A62C76AE0887.dip0.t-ipconnect.de) (Quit: founderio)
L803[17:06:56] ⇦ Quits: Oblivion (~Oblivion@cpc93476-roch7-2-0-cust213.10-1.cable.virginm.net) ()
L804[17:07:13] <shadekiller666> wonder how long it takes on of my structure templates to load...
L805[17:07:21] <shadekiller666> load from disk that is
L806[17:09:51] <gigaherz> depends on how big it is?
L807[17:10:41] <shadekiller666> each template is defined as a single json and at least one png
L808[17:11:29] <shadekiller666> where each pixel in the png is one block in the template
L809[17:12:23] <shadekiller666> if the template is more than 1 block tall, then the png is layed out similar to how the textures for lava and water are layed out
L810[17:12:33] <shadekiller666> where each "frame" is one section of the png
L811[17:13:24] <shadekiller666> i don't anticipate a structure being much more than 16x16x16 in size, so the pngs are pretty small
L812[17:14:22] <shadekiller666> and yes, i know that minecraft has its own way of storing structures in NBT from the structure blocks, but myself and the other developer working on this mod wanted a more visual way of defining a structure
L813[17:14:27] <gigaherz> sounds like it would be just a few milliseconds
L814[17:14:58] <williewillus> if you wanted a "visual" way couldn't you use the structure blocks in game and save them? :P
L815[17:15:32] <shadekiller666> in that case, reading all of them from disk every time a new instance is made in the get() method won't be unreasonable
L816[17:15:44] <shadekiller666> williewillus, not with how we're using structures
L817[17:15:52] <williewillus> ?
L818[17:15:55] <williewillus> which is?
L819[17:16:11] <gigaherz> wat
L820[17:16:21] <gigaherz> why would the "get" method imply that you have to load from disk?!
L821[17:16:23] <shadekiller666> all of our "block that takes up multiple blocks" (ie. beds, chests) go through this system
L822[17:16:54] <gigaherz> wait you are worrying about the one single time it will be loaded?
L823[17:16:56] <williewillus> lol
L824[17:16:59] <shadekiller666> gigaherz, because the manager needs to have a look-up map of ResourceLocation->StructureTemplate
L825[17:17:19] <shadekiller666> so that when something needs to happen with a structure, it actually knows what template to use
L826[17:17:27] <williewillus> what part exactly are you worried about underperforming?
L827[17:17:31] <gigaherz> yeah that should be trivial
L828[17:17:32] <gigaherz> IMO
L829[17:17:40] <gigaherz> if loading the structure fromdisk is a performance issue
L830[17:17:44] <gigaherz> your design may be wrong
L831[17:17:53] <shadekiller666> well, i was doing this loading from disk in preInit()
L832[17:18:14] <shadekiller666> but i now have to do it in get() when getOrLoadData returns null and a new instance has to be made
L833[17:18:36] <williewillus> yes but once you call it once it's cached in memory right?
L834[17:18:46] <gigaherz> wait those structures
L835[17:18:50] <shadekiller666> for that instance of the StructureManager, yes
L836[17:18:53] <gigaherz> are something stored in like, the config folder?
L837[17:18:57] <williewillus> then you shouldn't be worried
L838[17:18:58] <gigaherz> or in the save folder?
L839[17:19:02] <williewillus> memory is fast compared to disk
L840[17:19:12] <gigaherz> because I'm confused if you are talking about the "patterns" only
L841[17:19:17] <williewillus> you shouldn't really be worried at all unless it becomes an issue (premature opt)
L842[17:19:19] <gigaherz> or the actual structures placed into the world
L843[17:19:26] <shadekiller666> no, the mod's assets directory contains a "structures" folder, which contains 1 folder for each template
L844[17:19:35] <gigaherz> those can load in preinit, then
L845[17:19:37] <gigaherz> ?
L846[17:19:40] <gigaherz> you don't need the world for it
L847[17:19:41] <shadekiller666> each of those folders contains at least 1 json and 1 png
L848[17:19:53] <gigaherz> just keep the data elsewhere, separate from WorldSavedData instances
L849[17:20:34] <gigaherz> (could be a static map inside StructureManager, it just doesn't need to be an instance field)
L850[17:21:36] <shadekiller666> right, derp
L851[17:30:32] *** Clank is now known as Clank[Away]
L852[17:31:57] ⇨ Joins: Umbraco (~Umbraco@113x37x12x233.ap113.ftth.ucom.ne.jp)
L853[17:32:33] ⇨ Joins: immibis (~chatzilla@122-61-224-36.jetstream.xtra.co.nz)
L854[17:34:18] ⇨ Joins: GenuineSounds (~Genuine@66-191-1-249.dhcp.knwc.wa.charter.com)
L855[17:35:08] ⇦ Quits: Genuine (~Genuine@104.156.228.160) (Ping timeout: 198 seconds)
L856[17:40:42] ⇨ Joins: MoxieGrrl (~MoxieGrrl@173-23-172-139.client.mchsi.com)
L857[17:59:27] ⇨ Joins: AstralSorcerer (~AstralSor@2601:981:c002:98c0::a)
L858[18:04:13] ⇨ Joins: PrinceCat (~PrinceCat@58-7-228-28.dyn.iinet.net.au)
L859[18:06:15] ⇦ Quits: AstralSorcerer (~AstralSor@2601:981:c002:98c0::a) (Remote host closed the connection)
L860[18:06:55] ⇨ Joins: AstralSorcerer (~AstralSor@2601:981:c002:98c0::a)
L861[18:07:55] ⇦ Quits: AstralSorcerer (~AstralSor@2601:981:c002:98c0::a) (Remote host closed the connection)
L862[18:08:19] ⇨ Joins: AstralSorcerer (~AstralSor@2601:981:c002:98c0::a)
L863[18:12:02] ⇨ Joins: Shambling (~Shambling@24-181-186-74.dhcp.nwtn.ct.charter.com)
L864[18:13:27] ⇦ Quits: bilde2910 (bilde2910@51.174.170.178) (Ping timeout: 195 seconds)
L865[18:14:51] ⇦ Quits: ThePsionic (~ThePsioni@ip5457f909.direct-adsl.nl) (Quit: Leaving)
L866[18:15:13] ⇨ Joins: bilde2910 (bilde2910@51.174.170.178)
L867[18:16:53] <shadekiller666> sweet, the WorldSavedData seems to have worked, thanks
L868[18:17:07] <gigaherz> :)
L869[18:36:54] ⇦ Quits: Shambling (~Shambling@24-181-186-74.dhcp.nwtn.ct.charter.com) (Quit: Leaving)
L870[18:37:54] ⇦ Quits: gr8pefish (~gr8pefish@24-121-184-14.flagcmtk01.res.dyn.suddenlink.net) (Quit: I'm gone)
L871[18:44:23] ⇦ Quits: bilde2910 (bilde2910@51.174.170.178) (Ping timeout: 189 seconds)
L872[18:46:45] ⇨ Joins: bilde2910 (bilde2910@51.174.170.178)
L873[18:49:59] *** Clank[Away] is now known as Clank
L874[18:54:12] ⇦ Quits: Upthorn (~ogmar@108-85-88-44.lightspeed.frokca.sbcglobal.net) (Ping timeout: 384 seconds)
L875[18:54:53] ⇦ Quits: Jezza (~Jezza@92.206.161.17) (Ping timeout: 206 seconds)
L876[18:56:18] ⇨ Joins: CoderPuppy (~cpup@32.218.117.140)
L877[18:58:30] ⇨ Joins: howtonotwin (~howtonotw@r75-110-22-15.gvllcmtc01.gnvlnc.ab.dh.suddenlink.net)
L878[19:00:26] ⇦ Quits: cpup (~cpup@32.218.113.202) (Ping timeout: 384 seconds)
L879[19:01:22] <killjoy> I need an opinion. Which looks better? http://imgur.com/a/axkDD
L880[19:01:58] <shadekiller666> the top one
L881[19:02:08] <killjoy> That makes 2
L882[19:02:16] <killjoy> (2 people chose that one)
L883[19:02:19] <killjoy> nobody chose the bottom one
L884[19:02:29] <killjoy> I was told it looked ugly, so I'm changing it
L885[19:02:44] ⇦ Quits: williewillus (~williewil@cpe-24-28-24-13.austin.res.rr.com) (Ping timeout: 198 seconds)
L886[19:05:03] ⇦ Quits: Samario (~Samario@cpc5-bigg3-2-0-cust219.9-2.cable.virginm.net) (Quit: You think you are above consequences.)
L887[19:06:09] <shadekiller666> theres no point for it to be yellow
L888[19:06:18] <shadekiller666> none of the rest of the ui is yellow
L889[19:16:56] ⇨ Joins: williewillus (~williewil@cpe-24-28-24-13.austin.res.rr.com)
L890[19:18:01] <tterrag> what is this for?
L891[19:18:25] <killjoy> It's a simple items mod.
L892[19:21:14] <killjoy> It's mainly been for the server I play on
L893[19:22:32] <tterrag> soo...why not use JEI?
L894[19:22:42] <killjoy> this doesn't use forge.
L895[19:22:46] <tterrag> oh
L896[19:23:01] <killjoy> Had to fill the gap that voxelget left
L897[19:25:07] <killjoy> I do encourage people to use JEI if they do have forge installed, though.
L898[19:27:15] <mezz> you can use forge to connect to vanilla servers though
L899[19:27:36] <mezz> seems like a lot of work
L900[19:27:39] <killjoy> so?
L901[19:27:51] <tterrag> do you ping on JEI?
L902[19:28:00] <killjoy> huh?\
L903[19:28:09] <mezz> no, I just read this channel relatively often
L904[19:28:39] <mezz> I used to ping on it before people actually started using it heh
L905[19:30:02] <killjoy> People act like certain mods have monopolies
L906[19:31:40] *** Clank is now known as Clank[Away]
L907[19:33:49] <mezz> not really, I'm just curious why you would want to reinvent the wheel
L908[19:34:24] <killjoy> It wasn't _that_ hard
L909[19:34:32] <killjoy> It's a simple mod afterall
L910[19:34:36] <mezz> mhm
L911[19:35:03] <killjoy> I do plan on adding an nbt editor though
L912[19:35:57] ⇨ Joins: Guest2771 (~wolfmitch@149.56.182.12)
L913[19:35:58] <Guest2771> ed
L914[19:36:09] <killjoy> edd & eddy?
L915[19:36:10] <Guest2771> aand accidentally clicked a challel while typing
L916[19:36:12] <Guest2771> stupid trackpad
L917[19:36:23] <mezz> at least it wasn't your password
L918[19:36:33] <killjoy> last 2 chars of it
L919[19:36:33] <Guest2771> ikr
L920[19:36:39] <Guest2771> no, i was saying 'i tried'
L921[19:36:45] <killjoy> well, you tried
L922[19:36:54] * killjoy boos himself
L923[19:36:55] <Guest2771> i did,
L924[19:36:57] <Guest2771> https://screenshits.nofla.me/2016-12-27-203652_678x72.png
L925[19:37:14] <Guest2771> ooo ihave a message on reddit!
L926[19:37:17] ⇦ Quits: kashike (kashike@is.a.miserable.ninja) (Quit: WeeChat 1.7-dev)
L927[19:37:18] * Guest2771 feels important now
L928[19:37:22] ⇦ Quits: sinkillerj (~sinkiller@nc-67-232-15-221.dhcp.embarqhsd.net) (Quit: またね)
L929[19:37:23] *** Guest2771 is now known as wolfmitchell
L930[19:37:24] <killjoy> I get those a lot
L931[19:37:32] <killjoy> Today it was a double post
L932[19:37:37] <wolfmitchell> aww it was just the remind me bot
L933[19:38:14] <mezz> !remindme 200 hours I'm proud of you son
L934[19:38:46] <mezz> good to pat yourself on the back every now and then
L935[19:39:04] <wolfmitchell> lmao
L936[19:39:26] <killjoy> !remindme 100 hours Son, I am dissapoint
L937[19:39:28] <wolfmitchell> every 8 days 8 hours?
L938[19:39:28] <wolfmitchell> lmao
L939[19:39:38] ⇨ Joins: Doty1154 (~Doty1154@2601:648:8000:134f:5c74:272e:85cf:425a)
L940[19:39:38] <wolfmitchell> or in killjoy's case, every 4 days 4 hours?
L941[19:40:00] <howtonotwin> $ yes "I'm proud of you" & yes "I'm disappointed in you" &
L942[19:40:14] <howtonotwin> mixed messages forever at light speed
L943[19:41:15] <howtonotwin> hmm not that mixed on my system...
L944[19:41:20] <howtonotwin> more mood swings...
L945[19:43:44] *** fry is now known as fry|sleep
L946[19:47:08] ⇦ Quits: c233 (~c233@164.40.206.76) (Ping timeout: 198 seconds)
L947[19:53:10] ⇦ Quits: RandomX45 (~random@2601:44:8802:2060:1431:2e5e:1bd7:fb7b) (Quit: [Sein] Sein is just strong enough to throw it. [Prospero] but now you've dented the poor companion cube, you monster.)
L948[19:53:42] ⇦ Quits: IceDragon (~ThatGuy@69.160.115.240) (Ping timeout: 384 seconds)
L949[20:08:28] ⇨ Joins: kashike (kashike@is.a.miserable.ninja)
L950[20:21:05] ⇦ Quits: NineChickens (uid196646@id-196646.ealing.irccloud.com) (Quit: Connection closed for inactivity)
L951[20:29:14] ⇨ Joins: RebelKeithy (~RebelKeit@173-240-139-59.pool.dsl.nctc.com)
L952[20:34:23] *** TTFT|Away is now known as TTFTCUTS
L953[20:35:08] ⇦ Quits: KklyAq (KklyAq@p30032-ipngnfx01osakakita.osaka.ocn.ne.jp) (Ping timeout: 198 seconds)
L954[20:36:32] ⇨ Joins: KklyAq (~KklyAq@p30032-ipngnfx01osakakita.osaka.ocn.ne.jp)
L955[20:49:32] ⇦ Quits: KGS (~KGS@h-155-4-129-249.na.cust.bahnhof.se) (Ping timeout: 198 seconds)
L956[20:56:09] ⇨ Joins: RandomX45 (~random@2601:44:8802:2060:4189:1285:80b1:37fa)
L957[21:03:36] <killjoy> https://i.imgur.com/BDy6rCb.jpg
L958[21:04:03] ⇦ Quits: Girafi (Girafi@0x555178eb.adsl.cybercity.dk) (Read error: Connection reset by peer)
L959[21:04:56] ⇨ Joins: Wastl2_ (~Wastl2@x4e34c332.dyn.telefonica.de)
L960[21:05:40] ⇦ Quits: Wastl2 (~Wastl2@x4e340c4c.dyn.telefonica.de) (Ping timeout: 384 seconds)
L961[21:06:35] *** Kolatra is now known as Kolatra|away
L962[21:12:50] ⇦ Quits: edr (~edr@d-65-175-180-73.cpe.metrocast.net) (Quit: Leaving)
L963[21:22:40] ⇦ Quits: howtonotwin (~howtonotw@r75-110-22-15.gvllcmtc01.gnvlnc.ab.dh.suddenlink.net) (Ping timeout: 384 seconds)
L964[21:23:47] *** Mumfrey is now known as mumfrey
L965[21:27:56] *** Kolatra|away is now known as Kolatra
L966[21:35:19] ⇨ Joins: KnightMiner (~KnightMin@adsl-75-5-73-22.dsl.emhril.sbcglobal.net)
L967[21:41:01] *** GenuineSounds is now known as Genuine
L968[21:48:38] ⇨ Joins: LiftLeft (~loser@im.from.the.gigamatrix.xyz)
L969[22:09:13] ⇨ Joins: coDE_RP (~coDE_RP@47-32-3-205.dhcp.ftbg.wi.charter.com)
L970[22:09:19] <coDE_RP> hello
L971[22:09:31] *** diesieben07 is now known as diesieben|away
L972[22:09:51] <coDE_RP> anyone?
L973[22:09:54] <killjoy> hello
L974[22:10:00] <coDE_RP> hi
L975[22:10:01] <williewillus> hi
L976[22:10:17] <coDE_RP> this is my first time using IRC
L977[22:12:40] <coDE_RP> I am currently a noob at making forge mods, I was wondering if anyone knows any good guides on the basic API
L978[22:14:45] ⇦ Quits: Redfoxmoon (~Red@177.92-221-236.customer.lyse.net) (Read error: Connection reset by peer)
L979[22:16:35] <killjoy> It's simple.
L980[22:16:44] <killjoy> Annotate your main class with @Mod
L981[22:16:59] <killjoy> lifecycle methods on that mod get annotated with @EventHandler
L982[22:17:22] <killjoy> you can register other events using MinecraftForge.EVENT_BUS.register()
L983[22:17:28] <williewillus> outside of the lifecycle events there's not much of a "basic API"
L984[22:17:36] <williewillus> it immediately branches out depending on what you want to do
L985[22:17:40] <killjoy> everything else is just minecraft
L986[22:17:46] <killjoy> which is constantly changing
L987[22:17:54] <williewillus> it's easier to help if it's a specific subsystem
L988[22:18:04] <killjoy> need help on getting started?
L989[22:18:06] <coDE_RP> I know that but I mean what all the methods do
L990[22:18:11] <williewillus> what methods?
L991[22:19:06] <coDE_RP> like how do i make keybinds or armor or weapons
L992[22:19:19] ⇨ Joins: McJty (~jorrit@94-224-154-146.access.telenet.be)
L993[22:19:30] <williewillus> which one]
L994[22:19:34] <williewillus> do you want to do first? :P
L995[22:19:44] <coDE_RP> probably weapons
L996[22:20:11] <killjoy> Do you understand items yet?
L997[22:20:26] <coDE_RP> yes for the most part
L998[22:20:38] <williewillus> what do you want the weapon to do?
L999[22:21:39] <coDE_RP> I think I should start with something like applying fire or potion effect
L1000[22:21:48] <coDE_RP> probably fire
L1001[22:21:51] <killjoy> So a basic sword?
L1002[22:22:02] <coDE_RP> basically
L1003[22:22:04] <williewillus> subclass the vanilla sword
L1004[22:22:26] <williewillus> and look around in the Item class for a method that looks like it does things when you hit something
L1005[22:22:48] <williewillus> then override it and have it do stuff (tm)
L1006[22:23:14] <coDE_RP> exactly where do I find vanilla item classes?
L1007[22:23:21] <williewillus> in your IDE
L1008[22:23:24] <killjoy> extend Item
L1009[22:23:29] <killjoy> then just organize imports
L1010[22:23:39] <williewillus> a standard workspace should include all of the vanilla/forge code
L1011[22:23:40] <shadekiller666> 1. override class 2. examine methods 3. override method 4. ???? 5. profit!
L1012[22:23:57] <coDE_RP> ok
L1013[22:24:06] <coDE_RP> let me try
L1014[22:24:26] <shadekiller666> i think williewillus also forgot the parts about registering said custom item
L1015[22:24:34] ⇨ Joins: Lathanael (~Lathanael@p54960B73.dip0.t-ipconnect.de)
L1016[22:24:36] <shadekiller666> and the whole thing with models and such
L1017[22:24:42] <williewillus> i mean you left it out of the list too lol
L1018[22:24:50] <williewillus> let's get it working before making it look nice
L1019[22:24:53] * shadekiller666 wasn't involved with the list
L1020[22:24:59] <coDE_RP> yeah i know how to register an item and block
L1021[22:25:00] ⇦ Quits: Lathanael|Away (~Lathanael@p54960D19.dip0.t-ipconnect.de) (Ping timeout: 384 seconds)
L1022[22:25:27] <coDE_RP> and crafting/smelting
L1023[22:25:48] <coDE_RP> and edit mob drops, and thats about it
L1024[22:31:17] <williewillus> geez why do piston movements take so much memory 0.o
L1025[22:32:20] *** PrinceCat is now known as PrinceCat`Away
L1026[22:32:43] <coDE_RP> I wonder why they called the shovel item ItemSpade
L1027[22:32:50] <williewillus> historic reasons
L1028[22:33:03] ⇨ Joins: Upthorn (~ogmar@108-85-88-44.lightspeed.frokca.sbcglobal.net)
L1029[22:33:04] <williewillus> iir
L1030[22:33:06] <williewillus> c
L1031[22:33:39] ⇨ Joins: Redfoxmoon (~Red@177.92-221-236.customer.lyse.net)
L1032[22:35:13] *** PrinceCat`Away is now known as PrinceCat
L1033[22:35:40] <killjoy> Names can change, and they have
L1034[22:36:55] <williewillus> but not for really good reason though
L1035[22:36:57] <coDE_RP> all I learned from that is how to make an item get damaged when it attacks a mob
L1036[22:36:58] <williewillus> *not without
L1037[22:37:04] <williewillus> from what
L1038[22:37:26] <coDE_RP> looking at nitminecraft.item.ItemSword
L1039[22:37:35] <williewillus> which method
L1040[22:37:57] <coDE_RP> damageItem
L1041[22:38:02] <williewillus> wat
L1042[22:38:07] <williewillus> you want to apply fire right
L1043[22:38:11] ⇦ Quits: iso2013 (~iso2013@c-67-176-10-45.hsd1.co.comcast.net) (Quit: Bye :))
L1044[22:38:14] <coDE_RP> yes
L1045[22:38:22] <williewillus> so look for the method that seems like it's called when you "hit something" (hint hint)
L1046[22:38:35] <coDE_RP> hitEntity
L1047[22:38:46] <williewillus> okay then override it and do what you want to do
L1048[22:39:14] <coDE_RP> so how would i apply fire to the entity?
L1049[22:39:35] <williewillus> use your IDE's autocomplete. Write "target." and your IDE lists out every single thing you can do to an EntityLivingBase
L1050[22:39:37] <williewillus> look for something fire related
L1051[22:40:14] <coDE_RP> ok, now i feel sorry for people wh write in straight-p notepad
L1052[22:41:07] <williewillus> that can happen after people get a feel for the codebase and API, but for rapid learning auto-complete is indispensable
L1053[22:41:28] <williewillus> external javadoc would also work but forge stopped providing those years ago
L1054[22:42:15] <williewillus> oh and you might want to call super in your subclass as well unless your sword is undamageable :P
L1055[22:46:27] ⇨ Joins: BURN447 (webchat@71-212-0-171.tukw.qwest.net)
L1056[22:50:12] ⇦ Quits: BURN447 (webchat@71-212-0-171.tukw.qwest.net) (Ping timeout: 195 seconds)
L1057[23:04:30] <RebelKeithy> is there a way for my mod to tell what version of Minecraft it's being run on?
L1058[23:04:53] <killjoy> ForgeVersion
L1059[23:04:56] <killjoy> use that class
L1060[23:05:17] <RebelKeithy> ah, that's easy. Thanks
L1061[23:14:55] ⇦ Quits: McJty (~jorrit@94-224-154-146.access.telenet.be) (Ping timeout: 206 seconds)
L1062[23:15:16] ⇨ Joins: McJty (~jorrit@94-224-154-146.access.telenet.be)
L1063[23:15:20] ⇦ Quits: PrinceCat (~PrinceCat@58-7-228-28.dyn.iinet.net.au) (Quit: Textual IRC Client: www.textualapp.com)
L1064[23:16:33] <coDE_RP> How do you make something happen when a key is pressed?
L1065[23:18:16] ⇦ Parts: coDE_RP (~coDE_RP@47-32-3-205.dhcp.ftbg.wi.charter.com) (Leaving))
L1066[23:19:08] <ayyliens> keybinds and the InputEvent.KeyInputEvent evnt
L1067[23:20:04] <williewillus> see class KeyBinding
L1068[23:22:57] ⇦ Quits: KnightMiner (~KnightMin@adsl-75-5-73-22.dsl.emhril.sbcglobal.net) (Quit: Leaving)
L1069[23:31:17] <williewillus> !latest
L1070[23:33:40] <Zidane> Anyone have any experience adding a custom FolderResourcePack class to the ResourceManagerRespository?
L1071[23:49:41] <killjoy> Why?
L1072[23:50:39] ⇦ Quits: Cooler (~CoolerExt@45.249.156.150) (Ping timeout: 189 seconds)
L1073[23:52:08] <Zidane> Fallback location to load assets from should they not be in the jar
L1074[23:52:19] <killjoy> Why would they not be there?
L1075[23:52:21] <Zidane> Since I roll out content dynamically
L1076[23:52:43] <williewillus> killjoy: for e.g. runtime generation of assets
L1077[23:53:21] <Zidane> ^ I've got a LOT of assets...if I had to roll out a jar for every code change I make, my users would be downloading 20-30mb jars semi regularly.
L1078[23:53:26] <killjoy> could use a fallback resource
L1079[23:53:36] <Zidane> Easier to just introduce a way to load them outside the jar
L1080[23:53:45] <Zidane> and put them there and roll out assets separately
L1081[23:56:00] *** cpw is now known as cpw|out
L1082[23:56:31] <killjoy> I think I did it a while ago when I needed to add a sourceset as a resource pack
L1083[23:56:34] <killjoy> let me find it
L1084[23:57:15] <Zidane> The one way I see to do it is to access the defaultResourcePacks list and add it to it
L1085[23:57:22] <Zidane> but that involves reflection or ASM
L1086[23:57:24] <tterrag> you're shipping 20-30MB of resources?
L1087[23:57:24] <Zidane> Both nasty
L1088[23:57:29] <Zidane> Yes lol
L1089[23:57:30] <killjoy> Forge actually has a method for that
L1090[23:57:42] <tterrag> you should try compressing your images
L1091[23:57:48] <tterrag> chisel currently totals a bit under 7MB
L1092[23:57:48] <Zidane> killjoy, I've not found it but I've probably missed it
L1093[23:57:55] <tterrag> and that has quite a few assets
L1094[23:57:56] <Zidane> tterrag, no kidding, that is a WIP
L1095[23:58:05] <Zidane> I don't handle that part
L1096[23:58:06] <tterrag> well, maybe do that before you go worrying about some crazy resource system
L1097[23:58:38] <Zidane> tterrag, I don't see why having another folder that provides assets be crazy but okay lol
L1098[23:59:07] <tterrag> reducing the ludicrous size of your jar should be step 1, imo
L1099[23:59:29] <Zidane> Again, I don't handle that and its being gotten to
L1100[23:59:35] <Zidane> I handle code only
<<Prev Next>> Scroll to Top