Рабочий тестовый мод с материалами данной статьи можно скачать здесь.
Данный мини-ресурс дает поддержку Just Enough Items (JEI) мода. Рассчитан на тех, кто может сам зарегистрировать мод/блок/предмет/модель. Много информации расписано в самих классах.
Для начала мы импортируем сам мод в IDE. В gradlew.build добавим это:
repositories maven // Мавен, который поддерживает JEI. name = «Progwml6 maven» url = «http://dvs1.progwml6.com/files/maven» > maven // Мавен, который поддерживает JEI, для резерва. name = «ModMaven» url = «modmaven.k-4u.nl» > > dependencies // Добавляем сам JEI. deobfProvided «mezz.jei:jei_$:$:api» runtime «mezz.jei:jei_$:$» >
$ и $ можно либо заменить на ту, что нужно, либо же для удобства добавить эти переменные в gradle.properties:
mc_version=1.12.2 jei_version=4.8.5.137
Далее рассмотрим классы. Базовые классы, которые нужны для регистрации мода/блока/предмета/модели рассматривать не будем. (#МыЖНеНубы)
Рассмотрим блок, на примере которого будем делать свою поддержку для JEI. Сам по себе блок — добавляет дроп земли (5 шт.) и алмазных блоков (64 шт.). По стандарту — этот дроп не показывается майном. Значит нужно это нужно добавить самим.
Как увеличить количество предметов в меню JEI
Рассмотрим класс, который добавляет поддержку JEI.
Если Вам нужно больше рецептов — делаем цикл и немного изменяем класс DropsRecipeWrapper.
Далее рассмотрим класс, который добавляет рецепт.
Идем далее. Рассмотрим класс, добавляющий ту самую категорию, которая будет видна в JEI.
В итоге получаем такую картину:
Но, мы захотели создать не просто блок со своим дропом, а целый механизм!
// CrafterRecipe.java package xzchtoeto.crafter; import java.util.ArrayList; import java.util.List; import net.minecraft.block.Block; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; public class CrafterRecipe private static ListCrafterRecipe> recipes = new ArrayListCrafterRecipe>(); // Лист всех рецептов. public static ListCrafterRecipe> getRecipes() // Получатель всех рецептов.
return recipes; > private final ItemStack input, output; // Компоненты крафта. public CrafterRecipe(ItemStack input, ItemStack output) // Конструктор рецепта.
this.input = input; this.output = output; > public ItemStack getInput() // Получатель входного предмета рецепта. return input; > public ItemStack getOutput() // Получатель выходного предмета рецепта.
return output.copy(); > public static CrafterRecipe addRecipe(ItemStack input, ItemStack output) // Метод добавления рецепта. CrafterRecipe recipe = new CrafterRecipe(input, output); // Создаем рецепт.
if (recipes.contains(recipe)) // Если он есть уже в рецептах — игнорим. return null; recipes.add(recipe); // Если же нет — добавляем.
return recipe; > public static CrafterRecipe getRecipe(ItemStack is) // Получатель рецепта через входной предмет. if (is == null || is.isEmpty()) return null; for (CrafterRecipe recipe : recipes) // Проходим по списку всех рецептов.
if (recipe.matchesInput(is)) // Сравниваем входные элементы. return recipe; // Возвращаем рецепт, если входные элементы одинаковые.
return null; > public boolean matchesInput(ItemStack is) return is.getItem() == input.getItem(); > public static void initRecipes() // Метод регистрации рецептов. addRecipe(is(Items.DIAMOND), is(Blocks.DIAMOND_BLOCK)); addRecipe(is(Items.COAL), is(Blocks.COAL_BLOCK)); > private static ItemStack is(Item item) // Побочный метод. return new ItemStack(item); > private static ItemStack is(Block block) // Побочный метод. return new ItemStack(block); > >
Метод инициализации можно вызывать в любой стадии инициализации мода. (вроде бы, я использую в preInit)
Далее сам блок. Рассмотрим только метод добавления предмета в тайл, ибо остальное (регистрацию) Вы должны знать сами. (P.S. Не забудьте добавить, что он имеет тайл) Этот блок получает предмет, проверяется рецепт, дропает выходной предмет рецепта. Все это можно было организовать и без тайла, но для примера он с тайлом.
Далее — тайл. Сам тайл был копией печки, но с поправкой — убраны времена, переплавка, изменен update. Его и рассмотрим.
Дальше собственно идет поддержка, ибо с блоком мы закончили. Рассмотрим класс, который добавляет рецепт.
Рассмотрим класс, добавляющий ту самую категорию, которая будет видна в JEI.
И наконец, добавляем его в регистрацию. В метод registerCategories добавляем:
registry.addRecipeCategories(new CrafterRecipeCategory(registry.getJeiHelpers().getGuiHelper()));
И в метод register добавляем:
registry.addRecipes(CrafterRecipe.getRecipes(), CrafterRecipeCategory.UID); // Регистрация рецептов для Вашего UID.
registry.handleRecipes(CrafterRecipe.class, recipe -> new CrafterRecipeWrapper(recipe), CrafterRecipeCategory.UID); // Регистрация рецептов из листа рецептов. registry.addRecipeCatalyst(new ItemStack(TMRegistry.blockCrafter), CrafterRecipeCategory.UID); // Регистрация показывающихся блоков для Вашего UID.
В итоге получаем такую картину:
На этом все. Спасибо за внимание.
P.S. Данная поддержка работает только с теми вещами, что укажите именно Вы. Ничего более она добавлять не будет. С большой вероятностью, Ваш код поддержки не затронет другие моды, т.к. это сделать можно, но если делать качественно — все будет куда лучше.
Источник: mcmodding.ru
Мод на получение игровых предметов Just Enough Items (JEI) [1.12.2] [1.11.2] [1.10.2] [1.9.4]
Этот мод является упрощенным аналогом NEI и TMI, с его помощью вы сможете получить игровые предметы и посмотреть рецепты предметов и блоков из майнкрафт.
Скриншоты
Как установить
1. Скачай и установи Minecraft Forge
2. Скачай мод
3. Не распаковывая, скопируй в C:UsersИМЯ_ПОЛЬЗОВАТЕЛЯAppDataRoaming.minecraftmods
4. Готово
Скачать мод
jei_1.12.1_4.7.8.95.jar [489,48 Kb] (cкачиваний: 436)
jei_1.12.1_4.7.8.95.jar [489,48 Kb] (cкачиваний: 436)
jei_1.11.2_4.5.1.296.jar [529,69 Kb] (cкачиваний: 36)
jei_1.10.2_3.14.7.419.jar [459,33 Kb] (cкачиваний: 65)
Источник: lemoncraft.ru
Just Enough Items (JEI) — один из самых важных модов
Привет! Я как-то пробовал писать о модах, но почему-то не продолжил тогда, но продолжу сейчас. И в этот раз возьму не какой-то ноунейм мод со стеклом, а вполне заработавший себе имя Just Enough Items (JEI)!
Если вы играете с модами, то скорее всего знаете и этот. А если почему-то не знаете, то самое время!
Как видите, мод предлагает нам быстрый доступ ко всем предметам и блокам из игры. Притом отображены будут не только ванильные, но и из модов. Просто других модов сейчас нет, потому показать смогу только на оригинальных, но думаю, что это не проблема.
Что может JEI?
Поехали. Кроме списка всех предметов у мода закладки. Мелочь, но для комплексных крафтов самое то. Я не сомневаюсь, что почти все уже помнят абсолютно каждый рецепт из оригинальной игры, но вот для создания чего-то интересного в BuildCraft, Industrial или Thaumcraft — будет крайне полезно.
В стандартной конфигурации у нас определены кнопки R и U. При нажатии на них мы можем получить или список рецептов конкретного предмета (R), или список рецептов, где этот предмет использовался (U). Нереально помогает, сами понимаете.
Ещё раз подчеркну, что всё упомянутое будет работать и для модов, что повышает ценность этого мода в разы.
Внимательные заметят, что у окна с рецептами есть вкладки сверху и слева. Верхние — тип рабочего места. Вот ещё пара примеров:
А слева в обычной игре идёт просто дублирование верхнего блока, но при наличии модов там будут расположены альтернативные места для этой операции. Например, верстак таумкрафта или какая-либо печь из других модов могут заменить оригинальные.
А ещё в моде есть режим читера, когда можно будет не только посмотреть любой рецепт, но и ещё взять любой предмет из правого меню.
Вывод. Незаменимый мод, спасает от длительных поисков гайдов в сети, от угадываний рецептов и взаимодействий и подобного. Удобная навигация, закладки и поиск дают всё возможности для подробного изучения самых сложных крафтов, которые могут придумать мододелы. Потому я его оставлю для следующих модов и вам скачать однозначно советую.
Источник: geekstand.top