Похоже, что Item::getItemById
использует реестр элементов для получения элемента. Зарегистрированные Item
кажутся сохраненными в итераторе. Block
имеет аналогичный реестр. Это мы можем использовать.
Что-то вроде этого может сработать:
Iterator<Block> itemIterator = Registry.BLOCK.iterator(); // Gets the registry iterator
ArrayList<Block> blockList = new ArrayList<>();
for (Iterator<Block> it = itemIterator; it.hasNext(); ) // Iterates through registry iterator
{
blockList.add(it.next()); // Adds each element to a List (easier to get a random element from)
}
Random rand = new Random();
Block randomBlock = blockList.get(rand.nextInt(blockList.size())); // Chooses a random element from the List of Blocks
Затем вы можете делать все, что угодно, с помощью Block
. Чтобы получить его в формате Item
, выполните команду Item itemFromRandomBlock = randomBlock.asItem()
.
Это не проверено. Я не слишком знаком с моддингом 1.15, но похоже, что он будет работать.