Сколько предметов зарегистрировано?

Версия Minecraft
1.7.10
API
Forge
236
4
22
Всем доброго вечера. Вопрос звучит в теме - нужно посчитать сколько предметов (включая "айтем-блоки") зарегистрировано суммарно во всех модах и ваниле в сборке с моим модом. Попробовал Item.itemRegistry.getKeys().size() - это не подошло, т.к. если использовать Item i = (Item)Item.itemRegistry.getObjectById(Item.itemRegistry.getKeys().size() + 1); - i не будет null, следовательно getKeys() метод возвращает НЕ ВСЕ айтемы. Как мне узнать реальное кол-во зарегистрированных предметов в сборке?
 
1,057
50
234
GameData.getItemRegistry() не?
 
236
4
22
С чего ты взял что айди идут сторого по-порядку? Хз как там фордж разрешает эти числовые айди.
А вот подумал что по порядку регаются, но вчера горьким экспериментом убедился, что нет. Но ничего, уже придумал решение, по этому попрошу закрыть тему.
 
236
4
22
Кстати, попутно вопрос, чтобы тему не делать новую - можно ли как-то узнать диапазон метадат айтема? Вот допустим у красителя в майне (minecraft:dye) вроде как от 0 до 15. Как мне получить сколько "сабайтемов" существует у айтема (и вообще возможно ли, ибо ленивые кодеры в модах не переопределяют и не сетают maxItemDamage(), а getSubItems - клиентский метод)?
 
236
4
22
16 максимум вроде. попробуешь больше - получишь исключение.
Ну для красителя может и 16, а вот для "модовых" айтемов? И да, если создать айтем и сетнуть ему мету к примеру 1000 - ошибки не будет и айтем будет работать, как бы странно не звучало.
 

tox1cozZ

aka Agravaine
8,456
598
2,893
Решение скажи, ну.

Кстати, попутно вопрос, чтобы тему не делать новую - можно ли как-то узнать диапазон метадат айтема?
Была такая проблема - решения не нашел. Скорее всего нет.
 

Icosider

Kotliner
Администратор
3,603
99
664
Ну для красителя может и 16, а вот для "модовых" айтемов? И да, если создать айтем и сетнуть ему мету к примеру 1000 - ошибки не будет и айтем будет работать, как бы странно не звучало.
Лимит лишь в Short.MAX_VALUE упирается. И да, не обращай внимания, что там int используется, сохранение происходит именно в short.

И да, для любого итема, даже ванильного, можно установить любую, не отрицательную мету(при отрицательной мете, вроде как хуки форджа или ведра удаляют такой стайк)

GameData.getItemRegistry()
GameData.getBlockRegistry()
Только если делаешь через свой мод подсчёт, то делай это в post стадии загрузки, ибо в pre и init стадиях ещё могут грузиться. Есть вероятность, что могут и в post регать итемы/словари, тогда лучше вообще в стадию загрузки сервера вынести, тогда точно получишь все итемы и блоки из модов.
 
Сверху