Эгида
Saudade StudioEightySeven GroupTelegram-канал
  • 📌Эгида — База Знаний Minecraft
  • Модификации
    • 🧱Создание контента
      • 📦CraftTweaker
        • 📦Minecraft 1.12.2
          • Начало работы
          • Комментарии
          • Применение нескольких скриптов
          • Элементы крафтов
          • Команды
          • Графический редактор рецептов
          • Приоритеты и переменные
        • 📦Minecraft 1.16.5
          • Начало работы
          • Комментарии
          • Применение нескольких скриптов
          • Команды
          • Приоритеты
          • Менеджер рецептов
          • Удаление рецептов
          • Рецепты для верстака
          • Рецепты для др. блоков
          • Массивы и циклы
          • Работа с тэгами
          • Армированные мобы
          • Эффекты экипировки
          • Стартовые предметы
        • 📦Minecraft 1.19.2
          • Секвенция
          • Реплейсер
          • Классы
          • ООП
          • Интерфейсы
      • 🔗KubeJS
        • Начало работы
        • Ивенты
        • Ваш первый скрипт
        • Удаление рецепта
        • Форменные рецепты
        • Создание предмета
        • Кастомный тир
        • Использование предмета
        • Взаимодействие с миром
        • Смена названия окна и иконки игры
        • Перевод модификаций
      • 📖Interactio
        • Предмет из жидкости
        • Жидкость из жидкости
        • Создание взрывом
        • Удар молнии
        • Падение наковальни
      • 📈Game Stages
        • ZenStages
        • Gamestage Books
        • Recipe Stages
        • Dimension Stages
        • Item Stages
        • MultiBlock Stages
        • TinkerStages
        • Ore Stage Reborn
      • 🏗️Modular Machinery
        • Начало работы
        • Компоненты для создания
        • Создание конструкции
        • Настройка файла
        • Создание крафта
        • Конфигурация
      • 💿SDM CraftTweaker Plus
        • Ивенты
        • Глобальные функции
        • Модули
      • 📚Patchouli
        • Начало работы
        • Создание книги
        • Содержимое книги
        • Стартовая книга
        • Мультиблочные структуры
      • 👀Revelationary
        • Скрытие контента
        • Наименования объектов
    • 📝Квесты
      • 📗FTB Quests
        • Примечания
        • Начало работы
        • Общие настройки
        • Редактирование файла
        • Таблицы вознаграждений
        • Создание лут-коробки
        • Дизайн квестов
        • Главы и группы
        • Создание и настройка квестов
        • Настройка квестов
        • Зависимости квестов
        • Описания квестов
        • Награды
        • Магазин
        • Особые возможности
      • 📘Better Questing
        • Начало работы
        • Квесты
        • Конструктор квестов
        • Редактор квестов
        • Награды
        • Книга Квестов
        • Лутбоксы
        • Сохранение квестов
    • 🖼️Главное меню
      • 🏔️Custom Main Menu
        • Начало работы
        • Изображения
        • Кнопки
        • Лейблы
        • Заставка и панорама
        • Текст
      • 🌋FancyMenu
        • Начало работы
        • Настройки
          • FM Settings
          • Current Menu
          • Universal Layouts
          • Setup
          • Tools
          • Miscellaneous
          • Кнопки - иконки
          • Дополнительные разделы
        • Создание меню
          • Начало создания
          • Оформление фона
            • Вставка изображения в фон
            • Вставка анимации в фон
            • Вставка слайд-шоу в фон
            • Вставка панорамы в фон
          • Смена названия окна
          • Замена иконки окна
          • Макет кнопки
          • Действия кнопки
          • Вставка изображения
          • Создание и вставка текста в макет
      • 🗻PackMenu
        • Начало работы
        • Первые шаги
        • Кнопки
        • Действия кнопки
        • Языковые ключи
        • Текстуры
        • Файл конфигурации
    • 🏕️Атмосфера
      • 🎵Ambience Music
        • Начало работы
        • Настройка конфигурации
        • Обзор событый/тегов/биомов
        • Добавление музыки
    • 📀Разное
      • 📝Tips
        • Начало работы
        • Название подсказки
        • Изменение содержимого
        • Сохранение файла
      • 🎁Daily Rewards
        • Начало работы
        • Игровые команды
        • Настройка наград
        • Вики по моду
        • Пример оформления
      • 🗨️Simple Discord RPC
        • Начало работы
        • Создание приложения
        • Настройка статусов
        • Добавление иконок
        • Описания и иконки
        • Пример оформления
      • 💡InGameTips
        • Структура файлов
        • Создание подсказок
        • Пример оформления
      • 🌴Passive Skill Tree
        • Предисловие
        • Начало
        • Первый скилл
        • Настройка эффекта скилла
        • Условия
        • Настройки скилла
        • Теги
        • Соединения
  • Статьи
    • 🔁Перевод модификаций
      • Стандартный перевод
      • Перевод с помощью Recaf
        • Дисклеймер
        • Установка JRE/JDK
        • Установка Recaf
        • Изменение модификаций
        • Заключение
      • Переводы в структурах
        • Предисловие
        • Перевод блоках или рамках
        • Перевод в сундуках
    • 🥽DataPack для крафтов
    • 🚧Оптимизация сборки
    • 🌺Работа с шейдерами
  • Разработчики
    • 👥Об авторах
      • Журналисты
      • Наш сайт
      • ВКонтакте
      • Discord
      • YouTube
Powered by GitBook
On this page
  • filter
  • ManagerFilteringRule
  • ModsFilteringRule
  • NameFilteringRule
  • execute
  1. Модификации
  2. Создание контента
  3. CraftTweaker
  4. Minecraft 1.19.2

Реплейсер

Надоело ли Вам постоянно удалять рецепт, когда нужно изменить значение всего 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.

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

import crafttweaker.api.recipe.replacement.Replacer;
import crafttweaker.api.recipe.replacement.type.ManagerFilteringRule;

Replacer.create().filter(ManagerFilteringRule.of([<recipetype:minecraft:crafting>]));

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


ModsFilteringRule

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

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

import crafttweaker.api.recipe.replacement.Replacer;
import crafttweaker.api.recipe.replacement.type.ModsFilteringRule;

Replacer.create().filter(ModsFilteringRule.of(["divinerpg"]));

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


NameFilteringRule

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

import crafttweaker.api.recipe.replacement.Replacer;
import crafttweaker.api.recipe.replacement.type.NameFilteringRule;

Replacer.create().filter(NameFilteringRule.anyOf(["stone_axe", "wodden_hoe", "iron_block"]));

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

import crafttweaker.api.recipe.replacement.Replacer;
import crafttweaker.api.recipe.replacement.type.NameFilteringRule;

Replacer.create().filter(NameFilteringRule.containing("axe"));

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

import crafttweaker.api.recipe.replacement.Replacer;
import crafttweaker.api.recipe.replacement.type.NameFilteringRule;

Replacer.create().filter(NameFilteringRule.regex("\\D{3}"));

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

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

Replacer.replace<T : Object>(component as IRecipeComponent<T>, toReplace as T, with as T) as Replacer

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

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

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


execute

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

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

import crafttweaker.api.recipe.replacement.Replacer;
import crafttweaker.api.recipe.replacement.type.ManagerFilteringRule;
import crafttweaker.api.recipe.replacement.type.ModsFilteringRule;
import crafttweaker.api.ingredient.IIngredient;

Replacer.create().filter(ModsFilteringRule.of(["divinerpg"])).filter(ManagerFilteringRule.of([<recipetype:minecraft:crafting>])).replace<IIngredient>(<recipecomponent:crafttweaker:output/items>, <item:minecraft:stick>, <item:minecraft:blaze_rod>).execute();

Last updated 9 months ago

🧱
📦
📦