- Minecraft IRC Logging service - Channel #minecraftforge

If you want your channel logged here, contact KHobbits on #lain @ Esper.
Other channels Current Log Tail Older Stats

[00:00:37] #minecraftforge - Mon May 01 00:00:37 2017
[00:00:37] ---
[00:00:44] <mrburgerUS> it really didnt actually
[00:00:47] * Topic is ':Downloads: Documentation: Rules:'
[00:00:47] * Set by LexLap2 on Sun Dec 04 17:30:28
[00:00:56] <barteks2x> I have a deobfuscated version in my mod
[00:01:03] <mrburgerUS> I pulled it up splitscreen and its surpisingly simple
[00:01:07] * TechnicianLP2 ( Quit (Ping timeout: 204 seconds)
[00:01:12] <mrburgerUS> Which one, oh great barteks?
[00:01:52] <barteks2x> here is my code. Made for 16x16x16 cubes but the idea is the same, and the changes are obvious
[00:02:07] <barteks2x> (this isalso heavily refactired to be readable)
[00:02:26] <barteks2x> well, not that much. Mostly renamed and extracting constants
[00:02:55] <mrburgerUS> yeah but refactoring is a godsense
[00:02:57] <mrburgerUS> send*
[00:05:45] <barteks2x> and actually ravine generation is just caves scaled up vertically
[00:06:25] <mrburgerUS> thats actually pretty ingenious
[00:07:05] * ezterry ( Quit (Ping timeout: 190 seconds)
[00:07:15] * ezterry ( has joined #minecraftforge
[00:08:11] * c233 (~c233@ has joined #minecraftforge
[00:08:12] <barteks2x> the worldgen code looks messy, but considering how hard problem it is, it can be surprisingly simple once you understand it
[00:08:58] <mrburgerUS> how does vanilla select which trees to replace with birch trees?
[00:09:23] <barteks2x> random.nextInt(10) == 0 ? generateBirch : generateOak
[00:09:32] <barteks2x> at least in normal forest biome
[00:09:49] <barteks2x> in biomes with only birch trees, it's all birch trees
[00:09:59] * c233_ (~c233@ Quit (Ping timeout: 204 seconds)
[00:10:14] <barteks2x> (and it takes the biome from chunk origin)
[00:10:49] <barteks2x> Biome should have spomething like getRandomTreeGenerator method
[00:11:30] <barteks2x> (I hope you aren't talking about alpha here, I din't think that version had birch trees)
[00:12:54] <mrburgerUS> yeah Im currently using a ported alpha tree gen BUT id like to intersperse birch trees
[00:13:16] <barteks2x> !gm genBigTreeChance
[00:13:32] <barteks2x> This method is named incorrectly in 1.11
[00:15:12] * turmfalke ( has joined #minecraftforge
[00:18:33] * MrKickkiller is now known as MrKick|Away
[00:21:30] <Shambling> oh dear god, no wonder the mod is so strange, they use kotlin
[00:22:12] <Shambling> not sure why the registration methods are screwed up, but my guess would be the language they use :P
[00:23:16] * An_Sar ( Quit (Read error: Connection reset by peer)
[00:25:42] * Upthorn ( Quit (Read error: Connection reset by peer)
[00:25:54] * SquareWheel (~SquareWhe@ has joined #minecraftforge
[00:27:27] * Upthorn (~ogmar@ has joined #minecraftforge
[00:27:48] * Chais (~Chais@ has joined #minecraftforge
[00:28:00] * williewillus ( has joined #minecraftforge
[00:35:25] * Tao ( Quit (Read error: Connection reset by peer)
[00:35:26] * mrburgerUS ( Quit (Quit: Leaving)
[00:42:40] <AshIndigo> thanks for the review mezz ;)
[00:43:19] <+mezz> you're welcome
[00:43:26] <+mezz> feel free to ask me about anything
[00:44:05] <AshIndigo> alright, thanks
[00:52:37] * TechnicianLP2 ( has joined #minecraftforge
[01:04:21] * Arcanox ( has joined #minecraftforge
[01:04:21] * MineBot sets mode: +b *!*
[01:04:21] * Arcanox was kicked by MineBot (User is banned from this channel)
[01:05:02] <AshIndigo> i dont get the 3rd image/description if you go into tab2 or tab3 theres nothing in there because i didnt add anything for the test in those tabs
[01:05:17] <AshIndigo> tab1 contains the list of tab3's though
[01:05:18] * EmptyM (sid115453@2604:8300:100:200b:6667:5:1:c2fd) has joined #minecraftforge
[01:05:29] <+mezz> I think the concept of tab groups is extremely confusing to navigate right now
[01:05:56] <+mezz> there's no indication of what group you're "in" and no way to get back
[01:06:26] <+mezz> imo it may be overengineered, having flat tabs may be good enough and easier to understand
[01:06:55] <AshIndigo> "flat"?
[01:07:13] <+mezz> all tabs are always shown, there is no nesting of tabs inside other tabs
[01:09:05] <+mezz> that would be flat
[01:10:00] <AshIndigo> i would need to check if its already in a tab though, as its currently setup the tab3's have there target guis set to the 1st tabs GuiContainer
[01:12:00] <+mezz> what I think about make sense is: you have 1 main gui with tabs (for example the regular player inventory), and the tab guis do not have their own tabs, they still show the same main gui tabs
[01:12:01] <tterrag> what's this?
[01:12:31] <+mezz> tterrag,
[01:12:58] <+mezz> my review is at the bottom
[01:13:54] <tterrag> I see
[01:14:05] <AshIndigo> so i.e playerInv (contains tab1, 2 and 3) -> tab1 (which would show all of playerInv's tabs)
[01:14:11] <+mezz> yep
[01:14:15] * Shambling ( Quit (Quit: Leaving)
[01:14:41] <+mezz> playerInv should also have a 'self' tab in front so you can get back to it once you click another tab
[01:15:04] <tterrag> wouldn't most GUIs have a "self" tab? i.e. the default one?
[01:15:07] <+mezz> yes
[01:15:37] <+mezz> the current implementation is pretty confusing and I'm requesting changes to make it more standard
[01:18:02] <+mezz> oh I see what you mean, yeah playerInv is a stand-in for any gui with tabs
[01:23:41] * brandon3055 ( has joined #minecraftforge
[01:38:04] * theFlaxbeard ( has joined #minecraftforge
[01:38:55] * kinggoesgaming ( Quit (Quit: Connection closed for inactivity)
[01:48:28] <mallrat208> arcanon
[01:48:30] <mallrat208> heh
[01:48:36] * mallrat208 ( Quit (Quit: Leaving)
[01:55:41] * mallrat208 ( has joined #minecraftforge
[02:01:27] * Wastl2 ( Quit (Ping timeout: 204 seconds)
[02:04:08] * Wastl2 ( has joined #minecraftforge
[02:14:17] * Clank is now known as Clank[Away]
[02:15:52] * RichardG (~richardg8@ Quit (Read error: Connection reset by peer)
[02:16:03] * RichardG (~richardg8@ has joined #minecraftforge
[02:16:03] * MineBot sets mode: +v RichardG
[02:23:35] * c233_ (~c233@ has joined #minecraftforge
[02:25:42] * c233 (~c233@ Quit (Ping timeout: 186 seconds)
[02:35:39] * TechnicianLP2 ( Quit (Ping timeout: 204 seconds)
[02:47:41] * williewillus ( Quit (Quit: Leaving)
[03:12:38] * Doty1154 (~Doty1154@2601:648:8000:134f:c8de:3ad4:78f0:15fb) Quit (Ping timeout: 186 seconds)
[03:13:27] * McJty ( has joined #minecraftforge
[03:25:27] * sinkillerj ( Quit (Quit: またね)
[03:29:03] * killjoy ( has joined #minecraftforge
[03:29:30] * Naiten (Naiten@ has joined #minecraftforge
[03:34:28] <McJty> Question, why doesn't ItemStack.isEmpty() simply do getCount() == 0? Is there a reason for all these extra tests there?
[03:34:52] <McJty> Or in other words: are there cases where and itemstack can be empty but count > 0?
[03:35:28] * TechnicianLP2 ( has joined #minecraftforge
[03:35:57] <tterrag> McJty: yeah, null item (or AIR item)
[03:36:03] <tterrag> and damage being outside acceptable range
[03:36:25] <tterrag> no longer can mods accidentally allow damage values > Short.MAX_VALUE and have it invisibly break
[03:36:26] <kashike> and, of course, ItemStack.EMPTY itself
[03:36:39] <McJty> yes but ItemStack.EMPTY has count == 0
[03:37:32] <kashike> implying no one will maliciously, or accidentally, set it greater than 0?
[03:38:26] <tterrag> I think the check for EMPTY is just a performance short-circuit
[03:39:23] <kashike> Item.getItemFromBlock(Blocks.AIR) should be cached imo
[03:40:31] <McJty> Well it just gets it from a map
[03:40:38] <McJty> None of these tests in that function are really dramatic
[03:40:55] <McJty> Just that it is doing a lot of work for a relatively simple thing
[03:41:26] <McJty> And EMPTY itemstack should have been immutable
[03:41:35] <McJty> (well all itemstacks should have been immutable)
[03:41:38] <McJty> But that's another thing
[03:42:01] <kashike> completely immutable itemstacks is... urf
[03:42:05] <kashike> all that copying of nbt, etc
[03:42:34] <McJty> kashike, well many mods that do item handling have to do copy() now just because they cannot be sure the itemstack will not be modified behind their backs
[03:42:45] <McJty> With immutable stacks you can keep a reference to an itemstack and be sure it never changes
[03:42:50] <McJty> So you avoid copies that way
[03:43:08] <tterrag> I think it would hurt more than help
[03:43:18] <tterrag> already copy is 100x more expensive than it used to be
[03:43:37] <tterrag> if everything was immutable, every little NBT edit or damage change would require a copy
[03:43:56] <kashike> it's not so bad for stacks without a tag, but ones with tags hurt
[03:44:03] <kashike> and now, that's almost all stacks really
[03:44:10] <kashike> enchantments, names, lore, etc
[03:44:16] <tterrag> yeah, caps make it expensive
[03:44:22] <tterrag> the cap impl on stacks is meh
[03:46:53] <McJty> Actually you can make a copy efficient even with NBT. If the NBT would be immutable itself you can just copy a reference to it when you make a copy of an itemstack (provided the NBT itself doesn't change)
[03:47:00] <McJty> Of course that requires big changes
[03:47:06] <McJty> But it is not impossible
[03:47:31] <McJty> And even for modifying NBT you can do it by allowing partial copying of the NBT data
[03:47:51] * BlueMonster ( Quit (Quit: Connection closed for inactivity)
[03:47:59] <kashike> immutable nbt won't be a thing in vanilla, and is a terrible idea
[03:48:56] * Lathanael|Away ( Quit (Ping timeout: 180 seconds)
[03:52:11] * Lathanael|Away ( has joined #minecraftforge
[03:59:32] * covers1624_ ( Quit (Read error: Connection reset by peer)
[03:59:56] * covers1624_ ( has joined #minecraftforge
[04:04:28] <+mezz> I would love improvements to ItemStack like immutability
[04:04:36] <+mezz> or copy-on-write
[04:06:03] <McJty> yes, something like that
[04:20:47] * StormCloud ( Quit (Ping timeout: 204 seconds)
[04:22:02] * StormCloud ( has joined #minecraftforge
[04:22:10] <killjoy> I think sponge has that
[04:24:22] <+mezz> sponge is a lot more willing to get their hands dirty heh
[04:24:56] <+mezz> I'm not sure how you'd get that feature to work without a lot of changes
[04:24:59] <killjoy> Sponge will talk about mods while shoulder-deep in minecraft bytecode
[04:33:45] <kashike> killjoy: we have ItemStackSnapshot, which isn't inheriting/etc from ItemStack
[04:33:47] <kashike>
[04:36:40] <killjoy> A custom implementation
[04:37:01] <killjoy> Unfortunately, ItemStack (vanilla) is not an interface
[04:37:36] <kashike> fortunately* - you'd have mods creating 50 thousand different types which all do everything differently
[04:38:36] <killjoy> That would be their problem
[04:39:27] <McJty> kashike, that's a weird argument against interfaces
[04:39:35] <McJty> Bugs will happen regardless
[04:40:04] <kashike> it's not a weird one against ItemStack. other things, sure.
[04:40:15] * Brokkoli ( has joined #minecraftforge
[04:40:43] <McJty> I don't see why ItemStack shouldn't have been an interface. Makes many things a lot easier IMHO
[04:40:56] <kashike> such as?
[04:40:58] <McJty> For example, making tests for your item manipulation code
[04:41:37] <McJty> And making your own immutable itemstack variant in case that makes sense for your situation
[04:42:10] <McJty> Or having immutable lazy copies of other itemstacks
[04:42:33] <McJty> Well mutable lazy copies I mean
[04:44:06] <+mezz> I think ItemStack is kind of a broken idea in a lot of ways and an interface wouldn't help much... being able to test ItemStack code would be nice though
[04:44:49] <+mezz> I wonder if some test framework can inject its own first into the class path?
[04:44:58] <+mezz> could get ugly though
[04:45:41] <killjoy> You're forgetting about new ItemStack()
[04:46:09] <+mezz> what about it?
[04:46:20] <killjoy> What do you  mean by "inject its own"?
[04:46:27] <+mezz> like replace the whole class
[04:46:34] <+mezz> just for testing purposes
[04:46:50] <McJty> Put another ItemStack.class first in the classpath
[04:46:56] <+mezz> yeah
[04:47:10] <killjoy> What would you suggest to be changed?
[04:47:15] <+mezz> I guess you'd have to do Item and possibly Block as well
[04:47:25] <McJty> killjoy, adding hooks to test for conditions
[04:47:29] <McJty> i.e. for unittesting
[04:47:31] <+mezz> well the way ItemStack is written, you have to load all of  Minecraft
[04:47:33] <+mezz> yes ^
[04:47:55] <killjoy> I don't think ItemStack is that way
[04:47:57] <McJty> If you have mods that do a lot of itemstack manipulations having such tests might help a lot
[04:48:48] <+mezz> it may be smarter to create a unit test utility that runs on a minecraft server... then I can launch it with the build script or something? hm
[04:49:09] <+mezz> pretty slow to run tests that way but it's better than none
[04:49:10] <killjoy> that might take some time to test
[04:49:21] <+mezz> it would mainly be a sanity test for builds
[04:49:24] <killjoy> Very few are likely to use that
[04:49:39] <killjoy> the few that do unit tests anyway
[04:49:41] <+mezz> would be nice for Forge perhaps
[04:50:11] <+mezz> any serious library mod would want some tests
[04:50:18] <+mezz> it's just really hard to do right now
[05:10:56] * secknv ( Quit (Ping timeout: 180 seconds)
[05:16:33] * iari ( has joined #minecraftforge
[05:22:47] * Corosus ( Quit (Ping timeout: 200 seconds)
[05:31:35] * Hunterz (~hunterz@ has joined #minecraftforge
[05:32:58] * Vigaro is now known as V
[05:36:53] <SquareWheel> Bit of an odd issue.  I copied my mod (/src folder) from one IntelliJ project to another.  For some reason though, the new version doesn't seem to be loading the resources folder.  Code is exactly the same, textures/lang files just won't load.  Any idea what might be up?
[05:37:50] <SquareWheel>  /resources is marked as a "Resource Folder" in Intellij, whatever that does.
[05:38:08] <killjoy> try restarting intellij
[05:40:18] <SquareWheel> No bueno
[05:40:37] <killjoy> can you screencap your directory structure?
[05:40:53] <SquareWheel> Sure
[05:41:55] <SquareWheel> Fairly simple:
[05:44:32] <SquareWheel> "Failed to load texture: nutrition:textures/gui/nutrition.png"
[05:46:10] * Brokkoli ( Quit (Quit: Die Sprache der Politik ist dafür gemacht, dass Lügen wahr klingen und das Töten angemessen wirkt. (George Orwell))
[05:47:46] <SquareWheel> Ah, yeah even the file isn't being loaded.  So definitely not just a typo somewhere.
[05:47:54] <SquareWheel> Seems like resources/assets isn't being loaded at all.
[05:48:00] * AbrarSyed is now known as Abrar|gone
[05:50:19] * bochen415 (~bochen415@ Quit (Quit: quit)
[06:07:06] <SquareWheel> Think I see the problem...  Resources are going into /build, while classes are going into /out.
[06:09:37] * Corosus ( has joined #minecraftforge
[06:14:13] * KGS ( has joined #minecraftforge
[06:14:26] * mallrat208 ( Quit (Ping timeout: 180 seconds)