From 1d34d58d3dbc4d12a11a2e5b7a0f71ef4196b28d Mon Sep 17 00:00:00 2001 From: TheClashFruit Date: Mon, 14 Aug 2023 19:26:51 +0200 Subject: [PATCH] feat: testing, trying to make tabs wider --- .../theclashfruit/cc/ClutteredCreative.java | 123 ++++++++++++++++++ .../mixin/CreativeInventoryScreenMixin.java | 28 ++++ .../cc/mixin/ItemGroupsMixin.java | 54 ++++++-- src/main/resources/cc.mixins.json | 1 + 4 files changed, 194 insertions(+), 12 deletions(-) create mode 100644 src/main/java/me/theclashfruit/cc/mixin/CreativeInventoryScreenMixin.java diff --git a/src/main/java/me/theclashfruit/cc/ClutteredCreative.java b/src/main/java/me/theclashfruit/cc/ClutteredCreative.java index 9a5a3b4..83873b8 100644 --- a/src/main/java/me/theclashfruit/cc/ClutteredCreative.java +++ b/src/main/java/me/theclashfruit/cc/ClutteredCreative.java @@ -1,10 +1,133 @@ package me.theclashfruit.cc; import net.fabricmc.api.ModInitializer; +import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroup; +import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents; +import net.minecraft.item.*; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.text.Text; +import net.minecraft.util.Identifier; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class ClutteredCreative implements ModInitializer { + + private static final ItemGroup YES = FabricItemGroup.builder() + .icon(() -> new ItemStack(Items.DIAMOND)) + .displayName(Text.translatable("itemGroup.tutorial.test_group")) + .entries((displayContext, content) -> { + content.add(Items.DIAMOND); + }) + .build(); + + private static final ItemGroup NO = FabricItemGroup.builder() + .icon(() -> new ItemStack(Items.DIAMOND)) + .displayName(Text.translatable("itemGroup.tutorial.test_group")) + .entries((displayContext, content) -> { + content.add(Items.DIAMOND); + }) + .build(); + + private static final ItemGroup SHIT = FabricItemGroup.builder() + .icon(() -> new ItemStack(Items.DIAMOND)) + .displayName(Text.translatable("itemGroup.tutorial.test_group")) + .entries((displayContext, content) -> { + content.add(Items.DIAMOND); + }) + .build(); + + private static final ItemGroup YES2 = FabricItemGroup.builder() + .icon(() -> new ItemStack(Items.DIAMOND)) + .displayName(Text.translatable("itemGroup.tutorial.test_group")) + .entries((displayContext, content) -> { + content.add(Items.DIAMOND); + }) + .build(); + + private static final ItemGroup NO2 = FabricItemGroup.builder() + .icon(() -> new ItemStack(Items.DIAMOND)) + .displayName(Text.translatable("itemGroup.tutorial.test_group")) + .entries((displayContext, content) -> { + content.add(Items.DIAMOND); + }) + .build(); + + private static final ItemGroup SHIT2 = FabricItemGroup.builder() + .icon(() -> new ItemStack(Items.DIAMOND)) + .displayName(Text.translatable("itemGroup.tutorial.test_group")) + .entries((displayContext, content) -> { + content.add(Items.DIAMOND); + }) + .build(); + + private static final ItemGroup YES3 = FabricItemGroup.builder() + .icon(() -> new ItemStack(Items.DIAMOND)) + .displayName(Text.translatable("itemGroup.tutorial.test_group")) + .entries((displayContext, content) -> { + content.add(Items.DIAMOND); + }) + .build(); + + private static final ItemGroup NO3 = FabricItemGroup.builder() + .icon(() -> new ItemStack(Items.DIAMOND)) + .displayName(Text.translatable("itemGroup.tutorial.test_group")) + .entries((displayContext, content) -> { + content.add(Items.DIAMOND); + }) + .build(); + + private static final ItemGroup SHIT3 = FabricItemGroup.builder() + .icon(() -> new ItemStack(Items.DIAMOND)) + .displayName(Text.translatable("itemGroup.tutorial.test_group")) + .entries((displayContext, content) -> { + content.add(Items.DIAMOND); + }) + .build(); + + private static final ItemGroup YES4 = FabricItemGroup.builder() + .icon(() -> new ItemStack(Items.DIAMOND)) + .displayName(Text.translatable("itemGroup.tutorial.test_group")) + .entries((displayContext, content) -> { + content.add(Items.DIAMOND); + }) + .build(); + + private static final ItemGroup NO4 = FabricItemGroup.builder() + .icon(() -> new ItemStack(Items.DIAMOND)) + .displayName(Text.translatable("itemGroup.tutorial.test_group")) + .entries((displayContext, content) -> { + content.add(Items.DIAMOND); + }) + .build(); + + private static final ItemGroup SHIT4 = FabricItemGroup.builder() + .icon(() -> new ItemStack(Items.DIAMOND)) + .displayName(Text.translatable("itemGroup.tutorial.test_group")) + .entries((displayContext, content) -> { + content.add(Items.DIAMOND); + }) + .build(); + + public static final Logger LOGGER = LoggerFactory.getLogger("ClutteredCreative"); + @Override public void onInitialize() { + Registry.register(Registries.ITEM_GROUP, new Identifier("cc", "yes"), YES); + Registry.register(Registries.ITEM_GROUP, new Identifier("cc", "no"), NO); + Registry.register(Registries.ITEM_GROUP, new Identifier("cc", "shit"), SHIT); + Registry.register(Registries.ITEM_GROUP, new Identifier("cc", "yes2"), YES2); + Registry.register(Registries.ITEM_GROUP, new Identifier("cc", "no2"), NO2); + Registry.register(Registries.ITEM_GROUP, new Identifier("cc", "shit2"), SHIT2); + + Registry.register(Registries.ITEM_GROUP, new Identifier("cc", "yes3"), YES3); + Registry.register(Registries.ITEM_GROUP, new Identifier("cc", "no3"), NO3); + Registry.register(Registries.ITEM_GROUP, new Identifier("cc", "shit3"), SHIT3); + + Registry.register(Registries.ITEM_GROUP, new Identifier("cc", "yes4"), YES4); + Registry.register(Registries.ITEM_GROUP, new Identifier("cc", "no4"), NO4); + Registry.register(Registries.ITEM_GROUP, new Identifier("cc", "shit4"), SHIT4); } } diff --git a/src/main/java/me/theclashfruit/cc/mixin/CreativeInventoryScreenMixin.java b/src/main/java/me/theclashfruit/cc/mixin/CreativeInventoryScreenMixin.java new file mode 100644 index 0000000..f6c29ac --- /dev/null +++ b/src/main/java/me/theclashfruit/cc/mixin/CreativeInventoryScreenMixin.java @@ -0,0 +1,28 @@ +package me.theclashfruit.cc.mixin; + +import net.minecraft.client.gui.screen.ingame.CreativeInventoryScreen; +import net.minecraft.item.ItemGroup; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(CreativeInventoryScreen.class) +public class CreativeInventoryScreenMixin { + + /** + * @author TheClashFruit + * @reason pre 1.19.3 inventory layout :3 + */ + @Overwrite + private int getTabX(ItemGroup group) { + int i = group.getColumn(); + int j = 32; + int k = 32 * i; + if (group.isSpecial()) { + k = 176 - 32 * (6 - i) + 1; + } + return k; + } +} diff --git a/src/main/java/me/theclashfruit/cc/mixin/ItemGroupsMixin.java b/src/main/java/me/theclashfruit/cc/mixin/ItemGroupsMixin.java index a69eeed..f9782cd 100644 --- a/src/main/java/me/theclashfruit/cc/mixin/ItemGroupsMixin.java +++ b/src/main/java/me/theclashfruit/cc/mixin/ItemGroupsMixin.java @@ -5,30 +5,49 @@ import net.minecraft.enchantment.EnchantmentLevelEntry; import net.minecraft.enchantment.EnchantmentTarget; import net.minecraft.enchantment.Enchantments; import net.minecraft.item.*; -import net.minecraft.potion.Potion; import net.minecraft.potion.PotionUtil; import net.minecraft.potion.Potions; import net.minecraft.registry.Registry; import net.minecraft.registry.RegistryKey; import net.minecraft.registry.RegistryKeys; -import net.minecraft.registry.RegistryWrapper; import net.minecraft.registry.tag.InstrumentTags; -import net.minecraft.registry.tag.TagKey; import net.minecraft.text.Text; import net.minecraft.village.raid.Raid; import org.spongepowered.asm.mixin.*; -import org.spongepowered.asm.mixin.gen.Invoker; import java.util.EnumSet; import java.util.Set; +import static me.theclashfruit.cc.ClutteredCreative.LOGGER; import static net.minecraft.item.ItemGroups.*; @Mixin(ItemGroups.class) public class ItemGroupsMixin { - @Shadow @Final public static RegistryKey COLORED_BLOCKS; - @Shadow @Final public static RegistryKey REDSTONE; + @Shadow + private static RegistryKey register(String id) { + throw new AssertionError(); + } + + @Unique + private static final RegistryKey BUILDING_BLOCKS = register("building_blocks"); + @Unique + private static final RegistryKey DECORATION = register("decoration"); + @Unique + private static final RegistryKey REDSTONE = register("redstone"); + @Unique + private static final RegistryKey TRANSPORTATION = register("transportation"); + @Unique + private static final RegistryKey MISC = register("misc"); + @Unique + private static final RegistryKey FOOD = register("food"); + @Unique + private static final RegistryKey TOOLS = register("tools"); + @Unique + private static final RegistryKey COMBAT = register("combat"); + @Unique + private static final RegistryKey BREWING = register("brewing"); + @Unique private static final ItemGroup hotbarGroup = ItemGroup .create(ItemGroup.Row.TOP, 5) @@ -52,10 +71,12 @@ public class ItemGroupsMixin { /** * @author TheClashFruit - * @reason pre 1.19.4 inventory layout :3 + * @reason pre 1.19.3 inventory layout :3 */ @Overwrite public static ItemGroup registerAndGetDefault(Registry registry) { + LOGGER.info("ItemGroups Working!"); + final ItemGroup searchGroup = ItemGroup .create(ItemGroup.Row.TOP, 6) .displayName(Text.translatable("itemGroup.search")) @@ -84,6 +105,7 @@ public class ItemGroupsMixin { BUILDING_BLOCKS, ItemGroup .create(ItemGroup.Row.TOP, 0) + .type(ItemGroup.Type.CATEGORY) .displayName(Text.translatable("itemGroup.buildingBlocks")) .icon(() -> new ItemStack(Blocks.BRICKS)) .entries((displayContext, content) -> { @@ -535,9 +557,10 @@ public class ItemGroupsMixin { Registry.register( registry, - NATURAL, + DECORATION, ItemGroup .create(ItemGroup.Row.TOP, 1) + .type(ItemGroup.Type.CATEGORY) .displayName(Text.translatable("itemGroup.decorations")) .icon(() -> new ItemStack(Blocks.PEONY)) .entries((displayContext, content) -> { @@ -937,6 +960,7 @@ public class ItemGroupsMixin { REDSTONE, ItemGroup .create(ItemGroup.Row.TOP, 2) + .type(ItemGroup.Type.CATEGORY) .displayName(Text.translatable("itemGroup.redstone")) .icon(() -> new ItemStack(Items.REDSTONE)) .entries((displayContext, content) -> { @@ -1034,9 +1058,10 @@ public class ItemGroupsMixin { Registry.register( registry, - FUNCTIONAL, + TRANSPORTATION, ItemGroup .create(ItemGroup.Row.TOP, 3) + .type(ItemGroup.Type.CATEGORY) .displayName(Text.translatable("itemGroup.transportation")) .icon(() -> new ItemStack(Items.POWERED_RAIL)) .entries((displayContext, content) -> { @@ -1080,9 +1105,10 @@ public class ItemGroupsMixin { Registry.register( registry, - INGREDIENTS, + MISC, ItemGroup .create(ItemGroup.Row.BOTTOM, 0) + .type(ItemGroup.Type.CATEGORY) .displayName(Text.translatable("itemGroup.misc")) .icon(() -> new ItemStack(Items.LAVA_BUCKET)) .entries((displayContext, content) -> { @@ -1323,9 +1349,10 @@ public class ItemGroupsMixin { Registry.register( registry, - FOOD_AND_DRINK, + FOOD, ItemGroup .create(ItemGroup.Row.BOTTOM, 1) + .type(ItemGroup.Type.CATEGORY) .displayName(Text.translatable("itemGroup.food")) .icon(() -> new ItemStack(Items.APPLE)) .entries((displayContext, content) -> { @@ -1376,6 +1403,7 @@ public class ItemGroupsMixin { TOOLS, ItemGroup .create(ItemGroup.Row.BOTTOM, 2) + .type(ItemGroup.Type.CATEGORY) .displayName(Text.translatable("itemGroup.tools")) .icon(() -> new ItemStack(Items.IRON_AXE)) .entries((displayContext, content) -> { @@ -1441,6 +1469,7 @@ public class ItemGroupsMixin { COMBAT, ItemGroup .create(ItemGroup.Row.BOTTOM, 3) + .type(ItemGroup.Type.CATEGORY) .displayName(Text.translatable("itemGroup.combat")) .icon(() -> new ItemStack(Items.GOLDEN_SWORD)) .entries((displayContext, content) -> { @@ -1504,9 +1533,10 @@ public class ItemGroupsMixin { Registry.register( registry, - COLORED_BLOCKS, + BREWING, ItemGroup .create(ItemGroup.Row.BOTTOM, 4) + .type(ItemGroup.Type.CATEGORY) .displayName(Text.translatable("itemGroup.brewing")) .icon(() -> new ItemStack(PotionUtil.setPotion(new ItemStack(Items.POTION), Potions.WATER).getItem())) .entries((displayContext, content) -> { diff --git a/src/main/resources/cc.mixins.json b/src/main/resources/cc.mixins.json index 3ea717b..f82ad3f 100644 --- a/src/main/resources/cc.mixins.json +++ b/src/main/resources/cc.mixins.json @@ -8,6 +8,7 @@ "ItemGroupsMixin" ], "client": [ + "CreativeInventoryScreenMixin" ], "injectors": { "defaultRequire": 1