Add one more workaround for old creative tabs

This commit is contained in:
DBotThePony 2024-01-02 11:18:24 +07:00
parent da901cee87
commit fa67353eae
Signed by: DBot
GPG Key ID: DCC23B5715498507
3 changed files with 36 additions and 1 deletions

View File

@ -0,0 +1,26 @@
package ru.dbotthepony.mc.otm.mixin;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.Item;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import ru.dbotthepony.mc.otm.OverdriveThatMatters;
import ru.dbotthepony.mc.otm.registry.MCreativeTabsKt;
@Mixin(Item.class)
public abstract class ItemMixin {
@Inject(
at = @At("HEAD"),
method = "getItemCategory()Lnet/minecraft/world/item/CreativeModeTab;",
cancellable = true
)
public void getItemCategory$hook(CallbackInfoReturnable<CreativeModeTab> info) {
if (MCreativeTabsKt.getMainTabContents().contains((Item) ((Object) this))) {
info.setReturnValue(OverdriveThatMatters.INSTANCE.CREATIVE_TAB);
} else if (MCreativeTabsKt.getDecorativeTabContents().contains((Item) ((Object) this))) {
info.setReturnValue(OverdriveThatMatters.INSTANCE.CREATIVE_TAB_DECORATIVE);
}
}
}

View File

@ -1,5 +1,6 @@
package ru.dbotthepony.mc.otm.registry
import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet
import net.minecraft.core.NonNullList
import net.minecraft.world.item.DyeColor
import net.minecraft.world.item.Item
@ -17,13 +18,20 @@ import ru.dbotthepony.mc.otm.core.registryName
class CreativeTabOutput {
private val items = ArrayList<ItemStack>()
private val itemTypes = ObjectOpenHashSet<Item>()
fun accept(value: ItemLike) {
items.add(ItemStack(value.asItem()))
itemTypes.add(value.asItem())
}
fun accept(value: ItemStack) {
items.add(value)
itemTypes.add(value.item)
}
operator fun contains(item: Item): Boolean {
return item in itemTypes
}
fun fillIn(into: NonNullList<ItemStack>) {

View File

@ -17,7 +17,8 @@
"InventoryChangeTriggerMixin",
"MixinPlayer",
"HopperBlockEntityMixin",
"DispenserBlockEntityMixin"
"DispenserBlockEntityMixin",
"ItemMixin"
],
"client": [
"MixinGameRenderer",