Spectrum

Spectrum

2M Downloads

[BUG] Game crashes when opening Creative Menu

blondeKat opened this issue ยท 25 comments

commented

Opening creative menu causes the game to crash.

Error Thread
[Render thread/WARN]:
Can't update entries of ItemGroups!
java.lang.IllegalStateException: Accidentally adding the same item stack twice [Seven-League Boots] to a Creative Mode Tab: Equipment
at net.minecraft.class_1761$class_7703.method_45417(class_1761.java:252) ~[minecraft-1.20.1.i0:0/:?]
at net.minecraft.class_1761$class_7704.method_45420(class_1761.java:278) ~[minecraft-1.20.1.i0:0/:?]
at de.dafuqs.spectrum.registries.SpectrumItemGroups.lambda$static$2(SpectrumItemGroups.java:113) ~[spectrum-1.7.3.i0:0/:?]
at de.dafuqs.fractal.api.ItemSubGroup.method_47306(ItemSubGroup.java:38) ~[fractal-1.1.0.i0:0/:?]
at net.minecraft.class_7706.md1b91dd$fractal$lambda$updateEntries$0$0(class_7706.java:2129) ~[minecraft-1.20.1.i0:0/:?]
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(Unknown Source) ~[?:?]
at java.util.stream.ReferencePipeline$Head.forEach(Unknown Source) ~[?:?]
at net.minecraft.class_7706.handler$cei000$fractal$updateEntries(class_7706.java:2128) ~[minecraft-1.20.1.i0:0/:?]
at net.minecraft.class_7706.method_47337(class_7706.java) ~[minecraft-1.20.1.i0:0/:?]
at net.minecraft.class_7706.callUpdateEntries$polymer-core_$md$1b91dd$1(class_7706.java) ~[minecraft-1.20.1.i0:0/:?]
at eu.pb4.polymer.core.mixin.other.ItemGroupsAccessor.callUpdateEntries(ItemGroupsAccessor.java) ~[polymer-core-0.5.151.20.1.i0:0/:?]
at eu.pb4.polymer.core.impl.client.InternalClientRegistry.lambda$clear$6(InternalClientRegistry.java:339) ~[polymer-core-0.5.151.20.1.i0:0/:?]
at net.minecraft.class_1255.execute(class_1255.java:102) ~[minecraft-1.20.1.i0:0/:?]
at eu.pb4.polymer.core.impl.client.InternalClientRegistry.clear(InternalClientRegistry.java:325) ~[polymer-core-0.5.151.20.1.i0:0/:?]
at eu.pb4.polymer.core.impl.client.InternalClientRegistry.disable(InternalClientRegistry.java:170) ~[polymer-core-0.5.151.20.1.i0:0/:?]
at net.minecraft.class_310.handler$heh000$polymer-core$polymer$onDisconnect(class_310.java:31050) ~[minecraft-1.20.1.i0:0/:?]
at net.minecraft.class_310.method_18096(class_310.java:2197) ~[minecraft-1.20.1.i0:0/:?]
at net.minecraft.class_310.method_1519(class_310.java:1392) ~[minecraft-1.20.1.i0:0/:?]
at net.minecraft.class_310.method_1514(class_310.java:828) ~[minecraft-1.20.1.i0:0/:?]
at net.minecraft.client.main.Main.main(Main.java:250) ~[1.20.1-0.23.0-beta.1.jar:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:?]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:?]
at org.quiltmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:551) ~[quilt-loader-0.23.0-beta.1.jar:?]
at org.quiltmc.loader.impl.launch.knot.Knot.launch(Knot.java:84) ~[quilt-loader-0.23.0-beta.1.jar:?]
at org.quiltmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:28) ~[quilt-loader-0.23.0-beta.1.jar:?]

Mod version
1.7.3, Quilt Loader

commented

Unnecessarily rude comment aside...

I have now fixed this bug, it was an oversight since my code didn't expect items to be pre-enchanted in the creative tab. Are there any other issues specifically with Spectrum that would need to be addressed before I should release? I assume some of the items come pre-enchanted when crafted, which will assign them a random one (from vanilla or Enchancement, once I push that commit) if the given enchantment is disabled. Do any items come pre-enchanted with more than one enchantment? Are there any actual bugs? This is the first time I've had anything related to Spectrum reported to me, so I don't know anything that may cause problems.

commented

there aren't any items that come pre-enchanted with more than one enchantment afaik but there are 2 items that can switch between enchantments, which may be something to look out for

commented

Which items?

commented

the Malachite Workstaff and the Glass Crest Workstaff

commented

Fabric 1.20.1
Spectrum 1.7.6

Encountering the same error. Attaching the crash log.
crash-2024-02-20_22.56.48-client.txt

EDIT: I also have the following mods: AE2 15.0.20 / Alloy Forgery 2.1.2 / Botania 443 / REI 12.0.684 / Shimmer 0.2.0.

commented

Does it crash every time when joining the first world or loading the game?

Since I could never reproduce it, try removing mods until it magically starts working.
Once I know how to get it to crash myself I'm sure it will be easy to fix.

commented

Nope, it only crashes when I enter my inventory in creative mode. Let me try what you suggested and see if I can find the issue. I'll also test a superflat world to see if the client crash still happens. (after I watch the Nintendo Direct of course ๐ŸŽฎ)

commented

๐Ÿ‘€ Oh yes. I like your priorities.
Thanks a lot!

commented

Oh man, not again. Thank you.
I am starting to get really tired of that mod.

commented

Of course! I guess it's not the first time you've run into a problem with this mod? ๐Ÿ˜“

commented

Alright, so I found that it's an issue between Spectrum and Enchancement.

I'm using Enchancement 17 (with ToolTipFix 1.1.1 dependency) and Spectrum 1.7.6 / Revelationary 1.3.7 / Patchouli 84 / Trinkets 3.7.1.

commented

I had issues with Enchancement with other mods in the past, namely DaFuqs/EnchantmentGroups#8. The one mixin that mod uses would never fire, but since Enchancement's Github mentions versions lower than the most recent release should not get reported and will never be fixed, am unable to do something about it myself, despite really wanting to.
I even wanted to write a pull request to improve compat on Enchancements side, but since there is just a single branch, I can't PR it.๐Ÿ’€

To address your questions and explain some things

  • Some items use vanilla enchantments for doing additonal stuff. Some examples:
    • The Ender Splice uses Unbreaking to reduce the change for it to break on use, scaling with level
    • The Knowledge Gem uses Quick Charge and Efficiency to increase XP capacity and transfer speed, scaling with level
    • The Glass Crest Greatsword has an AoE ground slam attack, which scales on Sweeping Edge
    • The Takeoff Belt uses Feather Falling to reduce Fall damage for it's boost jumps
    • This is done to give vanillas enchantments more uses and to not dilute the enchantment pool with highly specific enchantments
  • Some items are listed with >1 enchantment in the creative menu. I went through the list of items for all that are listed preenchanted with >1 enchant:
    • Ender Splice (Unbreaking III, Resonance, Indestructible)
    • Knowledge Gem (Efficiency V, Quick Charge III)
    • Bottomless Bundle (Power V, Curse of the Void)
    • Takeoff Belt (Feather Falling IV, Power V)
    • Of course that's just for the creative menu which this crash is about. Ingame, lots of items benefit from having more. The Exchanging Staff is listed 4x for ease of use, for example (no enchants, fortune, silk touch, resonance)
  • Spectrum supports nbt on recipe outputs, which is used to give some items enchantments, when crafted
  • Like the others already mentioned, Some items come with the ability to hot-swap enchants (Fortune, Silk Touch & Spectrum's Resonance on the Workstaffs)
commented

Oh interesting, I've seen a bunch of people in my discord say Enchantment Groups works fine. Unfortunately yeah I don't support older versions since managing quite literally a dozen mods over multiple versions of Minecraft is... a lot of work, for little to no gain ๐Ÿ˜…

Thank you for the list! I think for the items that use vanilla enchantments, I'll just not have them added since there's not really an equivalent (and Enchancement tries to lower the power ceiling anyway), but at least for the Workstaff items I added specific compat which I think makes reasonable sense if Fortune is disabled. This only accounts for Fortune being removed, which is the default config, but I think that's fine since most players only play with either the default config or all enchantments enabled :p.
2024-02-25_10 49 10

Right now I have pre-enchanted items simply just remove the enchantments if they're not part of the game, I don't think it makes too much of a difference, but some special changes are:

  • Ender Splice: durability is outright removed, so Unbreaking and Indestructible are pointless (and I've added Indestructible to the disallowed enchantments list by default)
  • Knowledge Gem: Since transfer speed is quality of life, the item has Quick Charge built in without actually having the enchantment. Efficiency is still required for storage space
  • Glass Crest Greatsword: AOE slam doesn't seem to function without Sweeping Edge, so the item has Sweeping Edge built in without actually having the enchantment
  • Takeoff Belt: Funnily enough has the exact same function as Bouncy, and they stack, so I think I'll keep it unenchanted lol. There are plenty of ways to avoid fall damage in Enchancement, so Feather Falling isn't necessary
  • Bottomless Bundle: Since the storage space is quality of life, the item has Power built in without actually having the enchantment
  • Razor Falchion: Has Scooping instead of Looting as the default enchantment

*The items that have enchantments built in without actually having the enchantment only have this effect if the enchantment is disabled

Obviously a bunch of enchanting recipes fail to load since some enchantments don't exist, but those are only in the log and afaik don't break anything in gameplay.

The only other issue I can think of the is Lucky Pickaxe, which does nothing since Fortune is disabled. Do you have any ideas on what it could do?

commented

Thanks! I also suggest doing it for the Spectrum enchantments in case they're disabled (indestructible and the autosmelt one are disabled by default)

commented

The Spectrum ones besides Resonance have that already. โœ…
Disabling Resonance will break progression anyways, so having an error in the log will do more good than harm.

commented

Sorry to keep you waiting.

  • The changes sound perfect, within the realms of possibility.
  • For the Lucky Pickaxe, Molten makes the most sense, to complete the Silk Touch-Molten-Resonance set the workstaff has.
  • I will add load conditions for the enchanting recipes, so they do not fail to load on startup
commented

Thank you! The third point will make my life easier haha, I have a very annoying mixin to just ignore the recipe, but it doesn't work for everything. I'll add Molten to the Lucky Pickaxe

commented

Implemented in e37a777

commented

Seems to work! The only remaining problem is Enchantment Upgrading is pointless with Single Level Mode since all enchantments only have 1 level, is there a safe way I can disable them from loading? I had a complicated setup that mixined into both the recipe manager and the recipe sync packet, but if there's a cleaner way then I'd rather do that.

commented

1.7.3 has been having issues running on 1.20.1 with Quilt for uncertain reasons. Fabric should be working fine, if you're able to switch launchers.

you mean loaders

commented

1.7.3 has been having issues running on 1.20.1 with Quilt for uncertain reasons. Fabric should be working fine, if you're able to switch launchers.

commented

Can you try without Polymer, please?

commented

1.7.3 has been having issues running on 1.20.1 with Quilt for uncertain reasons. Fabric should be working fine, if you're able to switch launchers.

It's not an issue with Quilt by itself. Honestly it very rarely is for Fabric mods. I've loaded both versions of 1.20.1 using Quilt and they both work fine.

commented

I am having this issue and i am using fabric loaded. I removed it and my mod pack is working again. Modpack i am using is Saphsgamingworld on curse.

commented

Can confirm. Error is happening on Fabric.