From 1ee071bfdb91e40ead25c6078fc37d6aeafc353c Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Tue, 18 Jul 2023 13:32:02 +0700 Subject: [PATCH] Build creative mode tabs contents when it is not built when using creativetabsorter --- .../mc/otm/core/util/ItemSorter.kt | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/core/util/ItemSorter.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/core/util/ItemSorter.kt index fe6c1b229..a2034d840 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/core/util/ItemSorter.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/core/util/ItemSorter.kt @@ -3,8 +3,10 @@ package ru.dbotthepony.mc.otm.core.util import it.unimi.dsi.fastutil.objects.Reference2IntFunction import it.unimi.dsi.fastutil.objects.Reference2IntOpenHashMap import net.minecraft.network.chat.Component +import net.minecraft.world.item.CreativeModeTabs import net.minecraft.world.item.Item import net.minecraftforge.common.CreativeModeTabRegistry +import ru.dbotthepony.mc.otm.client.minecraft import ru.dbotthepony.mc.otm.core.TranslatableComponent import ru.dbotthepony.mc.otm.core.nullsFirst import ru.dbotthepony.mc.otm.core.nullsLast @@ -23,14 +25,26 @@ object CreativeMenuComparator : Comparator { item2index.defaultReturnValue(Int.MAX_VALUE) } + private fun doRebuild() { + var i = 0 + + for (tab in CreativeModeTabRegistry.getSortedCreativeModeTabs()) { + for (item in tab.displayItems) { + item2index.computeIfAbsent(item.item, Reference2IntFunction { i++ }) + } + } + } + private fun rebuild() { if (item2index.isEmpty()) { - var i = 0 + doRebuild() - for (tab in CreativeModeTabRegistry.getSortedCreativeModeTabs()) { - for (item in tab.displayItems) { - item2index.computeIfAbsent(item.item, Reference2IntFunction { i++ }) - } + if (item2index.isEmpty()) { + val player = minecraft.player ?: return + // creative tabs were not populated yet + CreativeModeTabs.tryRebuildTabContents(player.connection.enabledFeatures(), false /* operator tabs */, player.level().registryAccess()) + + doRebuild() } } }