Ever wanted to sort the Items in your creative tab in a specific order? I'm going to show you how.   Basic Idea You are going to need a new class that extends CreativeTabs. In that class you override the displayAllRelevantItems method. It is the core method of the tab, it fills the NonNullList<ItemStack> parameter with the ItemStack instances that should be displayed on this particular tab. The idea is that you first call the super method to fill the list and then sort it, using a Comparator: items.sort(comparator);   Making the Comparator The easiest way to create a Comparator for your Items is by creating a List that specifies the order of your Items. In the simplest way: List<Item> myItemsInOrder = Arrays.asList(itemA, itemB, itemC);   The Guava library, which is included with Minecraft, has a handy method which can sort according to an already sorted List: Comparator<Item> c = Ordering.explicit(myItemsInOrder);   That Comparator will sort any List so that it conforms to the order you've specified.   The problem here is that this Comparator sorts a List of Items, the List we want to sort contains ItemStacks though. But thanks to Guava and Java 8's method references we can easily convert it: Comparator<ItemStack> c = Ordering.explicit(myItemsInOrder).onResultOf(ItemStack::getItem);   Finishing up The Comparator you've created can be reused, you only need to create it once. Then store it in a static field in your Main mod class and use it from your CreativeTabs class.   Metadata Any Sub-ItemStacks that you create in getSubItems (resp. getSubBlocks) will not be reordered, they stay in the order you add them to the List.   Example The following code does not compile. This is intentional, do not simply copy&paste it. @Mod class MyMod {     static Comparator<ItemStack> tabSorter;     private static final CreativeTabs creativeTab = new CreativeTabs() {         @Override         public void displayAllRelevantItems(NonNullList<ItemStack> items) {             super.displayAllRelevantItems(items);             items.sort(tabSorter);         }     }     void preInit() {         // create items, blocks, etc.         List<Item> order = Arrays.asList(myItemA, myItemB, Item.getItemFromBlock(myBlockA), ...);         tabSorter = Ordering.explicit(order).onResultOf(ItemStack::getItem);     } }