Реплейсер

Надоело ли Вам постоянно удалять рецепт, когда нужно изменить значение всего 1 предмета? Если да, то это разработано специально для Вас!

Перед объяснением работы Replacer, Вам стоит знать следующее, чтобы избежать возможных проблем с производительностью: Старайтесь использовать как можно меньше Replacer и объединять все Replacer в один!

В начале Вам стоит правильным образом портировать crafttweaker.api.recipe.replacement.Replacer.

После чего создайте Replacer.create().

import crafttweaker.api.recipe.replacement.Replacer;
Replacer.create();

filter

Теперь разберём ряд методов. Первым будет filter Он отвечает, при каких условиях будет происходить замена предмета. Список того, какие условия есть на момент написания статьи:

  • ComponentFilteringRule

  • CustomFilteringRule

  • ManagerFilteringRule

  • ModsFilteringRule

  • NameFilteringRule

  • NotFilteringRule

В качестве примера мы разберём ManagerFilteringRule, ModsFilteringRule и NameFilteringRule.


ManagerFilteringRule

Начнём с ManagerFilteringRule. Он отвечает за то, в каком <recypestype: будет происходить замена.

Для того, чтобы получить список всех recypesType нужно написать команду /ct dump recipetype.

Допустим, мы хотим изменить рецепты только в верстаке. Для этого нужно написать следующее:

В таком случае Replacer будет работать только с верстаком.


ModsFilteringRule

Также существует фильтр ModsFilteringRule, который работает с рецептами из определённого мода.

Для примера изменим рецепты только из Divine RPG

Теперь Replacer будет работать только ко всем предметам из Divine RPG.


NameFilteringRule

Фильтр, который работает в ситуации, когда у предмета есть что-то в названии, например hoe или axe, тогда он будет производить замену.

Здесь фильтр работает в соответствии с перечисленными наименованиями, не отклоняясь от этой траектории.

Функционирует с предметами, в названии которых есть вышеперечисленное слово pump == minecraft:pumpkin_pie. Не учитывает регистр.

Фильтр на основе заданного регулярного выражения. Для лучшего понимания этого прочитайте Регулярные выражения в Java replace.

Данный метод выполняет всю логику нашего Replacer. У него есть ряд параметров, рассмотрим же их.

replace<T : Object> - нужна чтобы сказать Replacer какой тип нужно изменять. Всегда это IIngredient, кроме случаев когда заменяем рецепт в модовом recipeType

component as IRecipeComponent<T> - отвечает к какому предмету в рецепте он будет применять изменение. Чтобы узнать все IRecipeComponent пропишите команду /ct dump recipecomponent.

toReplace - предмет который необходимо заменить. with - на что необходимо заменить.


execute

Заключительный метод, который обозначает конец нашего Replacer Replacer.

Теперь, для примера, создадим простой Replacer. Заменим все палки в рецептах из мода Divine RPG на огненные стержни.

Last updated