Forge’s «Ore Dictionary» система предоставляет API, который создатели модификаций могут использовать для обозначения элементов / блоков как эквивалентных друг другу. Это было первоначально создано, потому что несколько модов добавляли свои собственные версии тех же руд и слитков (медь, олово и так далее). Эта система работает так: каждый пакет ItemStack представляет собой список связанных с ним имен String «Ore Dictionary».
Давайте создадим класс ItemOre , который расширяет ItemBase и имеет метод initOreDict для обработки регистрации «Ore Dictionary». Это даст нам хороший полностью реализованный класс для ore-dictionaried(рудодикционированных) предметов.
package net.shadowfacts.tutorial.item; import net.minecraftforge.oredict.OreDictionary; public class ItemOre extends ItemBase < private String oreName; public ItemOre(String name, String oreName) < super(name); this.oreName = oreName; >public void initOreDict() < OreDictionary.registerOre(oreName, this); >>
Этот класс просто принимает второй String параметр в своем конструкторе, который является именем ore-dictionary, а затем использует его в методе initOreDict .
[1] Обзор мода Ore Dictionary Converter [1.6.4]
Мы также обновим наш класс BlockOre , чтобы предоставить аналогичный метод initOreDict .
Теперь, когда у нас есть все наши базовые классы, мы собираемся изменить некоторые из наших элементов и блоков, чтобы дать имена «Ore Dictionary»!
Единственный блок, который будет иметь имя «Ore Dictionary» это блок медной руды. Следуя соглашениям для названий «Ore Dictionary» (если вы посмотрите в классе OreDictionary , вы можете получить общее представление о том, что это за соглашения), наш блок медной руды будет иметь имя «Ore Dictionary» oreCopper .
Мы просто изменим наш регистрационный вызов для блока медной руды на второй параметр, который также является «oreCopper» , сообщая классу BlockOre использовать oreCopper в качестве имени словаря для этого блока.
// . public class ModBlocks < // . public static BlockOre oreCopper = new BlockOre(«ore_copper», «oreCopper»); // . >
Теперь мы заменим оба элемента ingotCopper и cropCorn , чтобы иметь названия «Ore Dictionary» ingotCopper и cropCorn соответственно. Все это требует изменения экземпляров ItemBase для экземпляров ItemOre и передачи искомого имени «Ore Dictionary» в качестве второго параметра конструктора.
// . public class ModItems < // . public static ItemOre ingotCopper = new ItemOre(«ingot_copper», «ingotCopper»); public static ItemOre corn = new ItemOre(«corn», «cropCorn»); // . >
Наконец, мы обновим наш класс ModRecipes , чтобы вызвать различные методы initOreDict .
// . public class ModRecipes < public static void init() < // Ore Dict ModBlocks.oreCopper.initOreDict(); ModItems.ingotCopper.initOreDict(); ModItems.corn.initOreDict(); // . >>
Рецепты_________________________________________________________ _________________
Теперь, когда у нас есть названия «Ore Dictionary» для некоторых наших предметов и блоков, давайте добавим рецепты, которые их используют. «Forge» предоставляет два новых типа рецептов специально для использования «Ore Dictionary»: forge:ore_shaped и forge: ore_shapeless .
Мы создадим новый файл в подпапке recipes нашей папки assets под названием bucket.json . В корневом объекте будет пара свойств, похожих на другой рецепт формы, который мы добавили. На этот раз Тип рецепта будет forge:ore_shaped , результатом будет minecraft:bucket , а входной ингредиент будет немного отличаться, так что он использует «Ore Dictionary».
Вместо указания параметра предмета для ингредиента мы укажем тип как forge:ore_dict , поэтому используется ингредиент «Ore Dictionary», и мы укажем руду как ingotCopper , чтобы любой медный слиток был принят.
< «type»: «forge:ore_shaped», «pattern»: [ «I I», » I » ], «key»: < «I»: < «type»: «forge:ore_dict», «ore»: «ingotCopper» >>, «result»: < «item»: «minecraft:bucket» >>
Ore Dictionary
Создание «Forge» модификаций для 1.10.2
Август 8, 2016
Forge’s «Ore Dictionary» система предоставляет API, который создатели модификаций могут использовать для обозначения элементов / блоков как эквивалентных друг другу. Это было первоначально создано, потому что несколько модов добавляли свои собственные версии тех же руд и слитков (медь, олово и так далее). Эта система работает так: каждый пакет ItemStackпредставляет собой список связанных с ним имен String «Ore Dictionary».
Давайте создадим интерфейс ItemOreDict в пакете item нашего мода. Этот интерфейс будет использоваться для обозначения наших элементов/блоков, которые будут зарегистрированы в «Ore Dictionary». Этот интерфейс будет иметь один абстрактный метод, называемый initOreDict , который будет выполнять регистрацию.
package net.shadowfacts.tutorial.item; public interface ItemOreDict
Мы также создадим класс ItemOre , который расширяет ItemBase и реализует ItemOreDict , чтобы дать нам хороший полностью реализованный класс для элементов ore-dictionaried.
Этот класс просто принимает второй String параметр в своем конструкторе, который является именем ore-dictionary, а затем использует его в методе initOreDict .
Мы будем делать что-то подобное для нашего класса BlockOre , то есть реализуем ItemOreDict и initOreDict и будем иметь второй параметр для имени «Ore Dictionary».
Нам нужно внести некоторые изменения в классы ModItems и ModBlocks , чтобы они вызывали метод initOreDict после регистрации элемента/блока в GameRegistry .
Сначала мы проверим, реализует ли элемент наш интерфейс ItemOreDict (потому что не все наши элементы будут использовать «Ore Dictionary»), и если да, то вызывает на нем метод initOreDict .
// . public class ModItems < // . private static T register(T item) < GameRegistry.register(item); if (item instanceof ItemModelProvider) < ((ItemModelProvider)item).registerItemModel(item); >if (item instanceof ItemOreDict) < ((ItemOreDict)item).initOreDict(); >return item; > >
Мы будем делать это аналогично в классе ModBlocks , за исключением того, что мы проверим экземпляр ItemOreDict и визовым initOreDict как для самого блока, так и для связанного с ним ItemBlock .
// . public class ModBlocks < // . private static T register(T block, ItemBlock itemBlock) < GameRegistry.register(block); if (itemBlock != null) < GameRegistry.register(itemBlock); if (block instanceof ItemModelProvider) < ((ItemModelProvider)block).registerItemModel(itemBlock); >if (block instanceof ItemOreDict) < ((ItemOreDict)block).initOreDict(); >if (itemBlock instanceof ItemOreDict) < ((ItemOreDict)itemBlock).initOreDict(); >> > >
Теперь, когда у нас есть все наши базовые классы, мы собираемся изменить некоторые из наших элементов и блоков, чтобы получить названия «Ore Dictionary»!
Единственным блоком, который будет иметь название «Ore Dictionary», является блок медной руды. Следуя соглашениям о названиях «Ore Dictionary» (если вы посмотрите в классе OreDictionary , вы можете получить общее представление о том, что представляют собой эти соглашения), наш блок медной руды будет иметь в качестве «Ore Dictionary» имени имя: oreCopper .
Мы просто изменим наш регистрационный вызов для блока медной руды, чтобы иметь второй параметр, который также является «oreCopper» , сообщая классу BlockOre использовать oreCopper в качестве названия «Ore Dictionary» для этого блока.
// . public class ModBlocks < // . public static void init() < oreCopper = register(new BlockOre(«oreCopper», «oreCopper»)); // . >>
Теперь мы заменим оба элемента ingotCopper и cropCorn , чтобы иметь названия «Ore Dictionary» ingotCopper и cropCornсоответственно. Все это требует изменения экземпляров ItemBase для экземпляров ItemOre и передачи искомого имени «Ore Dictionary» в качестве второго параметра конструктора.
// . public class ModItems < // . public static void init() < ingotCopper = register(new ItemOre(«ingotCopper», «ingotCopper»)); corn = register(new ItemOre(«corn», «cropCorn»)); // . >>
Рецепты_________________________________________________________ _________________
Теперь, когда у нас есть «Ore Dictionary» имена для некоторых наших элементов и блоков, давайте добавим рецепты, которые их используют. «Forge» добавляет классы ShapedOreRecipe и ShapelessOreRecipe , которые идентичны рецептам ванильной формы и бесформенности, за исключением того, что вместо того, чтобы просто принимать элемент/блок/стек для ввода, они также могут принимать строку имени «Ore Dictionary» которая будет соответствовать чему-либо с этим именем.
Эти рецепты должны быть созданы вручную и зарегистрированы с использованием GameRegistry.addRecipe в отличие от рецептов нормальной формы/бесформенности, которые имеют удобные методы в GameRegistry .
// . public class ModRecipes < public static void init() < // . GameRegistry.addRecipe(new ShapedOreRecipe(Items.BUCKET, «I I», » I «, ‘I’, «ingotCopper»)); // . >>
Этот рецепт такой же, как рецепт ванильного ведра, за исключением того, что вместо железа используется любой предмет с «Ore Dictionary» именем ingotCopper , а не только железные слитки.
Автор Garik Просмотры 4,389 Первый выпуск 25 Мар 2018 Обновление 25 Мар 2018 Оценка 5.00 звёзд 3 оценок
Источник: forum.mcmodding.ru
Auto Ore Dictionary Converter [1.18.2] [1.16.5] [1.12.2] [1.11.2] [1.10.2] [1.8.9] [1.7.10]
Мод Ore Dictionary Converter добавляет в майнкрафт 3 новых вещи для сортировки предметов. Один из них, похожий на верстак по текстурам, однако он позволит сразу переплавлять и крафтить. Другой механизм позволит перерабатывать одну руду в другую.
Как установить мод:
- Установи Forge
- Установи MattDahEpic Core (MDECore)
- Установи все дополнительные моды если указано.
- Скачай мод и скопируй в .minecraft/mods
- В лаунчере запускай версию игры с форджем.
Источник: ru-minecraft.ru
Мод Auto Ore Dictionary Converter 1.18.2/1.16.5 (Быстрая сортировка)
Auto Ore Dictionary Converter — мод на Майнкрафт 1.18.2/ 1.16.5, который автоматически сортирует руды в их настроенные эквиваленты словаря руды.
Особенности моды:
Меняем конфиг
# для преобразования всех элементов из тега в конкретный элемент (например, forge:ores/iron=minecraft:iron_ore)
namespace:tag=modid:item
# чтобы преобразовать один конкретный элемент в другой (например, minecraft:diamond>minecraft:netherite_ingot)
modid:item>modid:item
Источник: minecraft20.ru