Нужный порядок в креативной вкладке 2.0

Версия Minecraft
1.12.2
API
Forge
36
5
4
Нужный порядок в креативной вкладке 1.0
В данной↑ теме я получил ответ, но он решал проблему лишь что будет первым [блоки, предметы или инструменты], но не решает проблему того, что предметы регистрируются не в нужном порядке, из-за этого в креативной вкладке они вызывают боль.
1610800027135.png

Вопрос: как мне сделать чтобы например item1,item2,item3,item4,item5 шли по нужному мне порядку, а не хаотично item3,item1,item2,item4,item5


Класс регистратор:
@GameRegistry.ObjectHolder(MODID)
@Mod.EventBusSubscriber
public class ItemsRegistry {
    @GameRegistry.ObjectHolder("item")
    public static final Item item = null;
  
    @GameRegistry.ObjectHolder("item")
    public static final Item item = null;

    @GameRegistry.ObjectHolder("item")
    public static final Item item = null;

    @GameRegistry.ObjectHolder("item")
    public static final Item item = null;

    @GameRegistry.ObjectHolder("item")
    public static final Item item = null;

    @GameRegistry.ObjectHolder("item")
    public static final Item item = null;

    @GameRegistry.ObjectHolder("item")
    public static final Item item = null;

    @GameRegistry.ObjectHolder("item")
    public static final Item item = null;

    @GameRegistry.ObjectHolder("item")
    public static final Item item = null;

    @GameRegistry.ObjectHolder("item")
    public static final Item item = null;

    @GameRegistry.ObjectHolder("item")
    public static final Item item = null;

    @GameRegistry.ObjectHolder("item")
    public static final Item item = null;

    @GameRegistry.ObjectHolder("item")
    public static final Item item = null;

    @GameRegistry.ObjectHolder("item")
    public static final Item item = null;

    @GameRegistry.ObjectHolder("item")
    public static final Item item = null;

    @GameRegistry.ObjectHolder("item")
    public static final Item item = null;

    @SubscribeEvent
    public static void onRegistryItem(RegistryEvent.Register<Item> e) {
        e.getRegistry().register(new ItemList("item", 64, TabsList.EXtabs));
        e.getRegistry().register(new ItemList("item", 64, TabsList.EXtabs));

        e.getRegistry().register(new ItemList("item", 64, TabsList.EXtabs));
        e.getRegistry().register(new ItemList("item", 64, TabsList.EXtabs));

        e.getRegistry().register(new ItemList("item", 64, TabsList.EXtabs));

        e.getRegistry().register(new ItemList("item", 64, TabsList.EXtabs));
        e.getRegistry().register(new ItemList("item", 64, TabsList.EXtabs));
        e.getRegistry().register(new ItemList("item", 64, TabsList.EXtabs));

        e.getRegistry().register(new ProjectileHolder("item", 1, TabsList.EXtabs));
        e.getRegistry().register(new ItemList("item", 1, TabsList.EXtabs));
        e.getRegistry().register(new ItemList("item", 64, TabsList.EXtabs));
        e.getRegistry().register(new ItemList("item", 64, TabsList.EXtabs));
        e.getRegistry().register(new ItemList("item", 64, TabsList.EXtabs));
        e.getRegistry().register(new ItemList("item", 64, TabsList.EXtabs));
        e.getRegistry().register(new ItemList("item", 64, TabsList.EXtabs));

        e.getRegistry().register(new ItemList("item", 1, TabsList.EXtabs));
    }

    @SubscribeEvent
    @SideOnly(Side.CLIENT)
    public static void onRegistryModel(ModelRegistryEvent e) {
        registryModel(item);
        registryModel(item);

        registryModel(item);
        registryModel(item);

        registryModel(item);

        registryModel(item);
        registryModel(item);
        registryModel(item);

        registryModel(item);
        registryModel(item);
        registryModel(item);
        registryModel(item);
        registryModel(item);
        registryModel(item);
        registryModel(item);

        registryModel(item);
    }

    @SideOnly(Side.CLIENT)
    private static void registryModel(Item item) {
        final ResourceLocation regName = item.getRegistryName();
        final ModelResourceLocation mrl = new ModelResourceLocation(regName, "inventory");
        ModelBakery.registerItemVariants(item, mrl);
        ModelLoader.setCustomModelResourceLocation(item, 0, mrl);
    }
}
 
2
1
Я сам нуб в forge api, но если можно сделать коллекцию и отсортировать её и возможно зарегистрировать каким нибудь методом в foreach, то можно сделать нормальный порядок. И как вариант, если это все же надо делать событиями, то добавить какую нибуль переменную на которую все методы опираться будут и ждать, пока другие регистрируются, Семофор или мьютекс, если он есть в java
 
6,085
224
1,175
А displayAllRelevantItems разве вызывается не всегда для всех итемов вкладки?
 
2
1
Видимо нет, потому что если я меняю например item1 и item2 местами, то они поменяются во вкладке только в новом мире
А если какой нибудь конфиг в файле мира сбросить перед заходом в мир, тот конфиг который отвечает за регистрацию предметов и т.д.
 

tox1cozZ

aka Agravaine
Модератор
7,521
484
2,337
Сверху