Предикаты — это технические файлы JSON, которые представляют условия для таблиц добычи , команды или аргумента целевого селектора . Они являются частью пакетов данных . /execute if predicate predicate

Внутри пакета данных находится предикат data//predicates .

Структура JSON [ ]

  • Корневой тег.
  • condition : идентификатор условия .
  • Остальные части условия, указанные ниже.

Файл предиката может также содержать массив из нескольких объектов предиката, и в этом случае предикат проходит, только если проходят все субпредикаты.

Возможные значения для состояние и связанное с ним дополнительное содержимое:

  • альтернатива — объединяет условия из условий параметра с помощью «или».
  • условия : список условий для присоединения с помощью ‘или’.
  • Условие.
  • block_state_property — Проверить свойства состояния блока .
  • block : идентификатор блока. Тест не проходит, если блок не совпадает.
  • properties : (Необязательно) Сопоставление имен свойств блока со значениями. Все значения являются строками. Тест не проходит, если блок не совпадает.
  • damage_source_properties — Проверить свойства источника повреждений.
  • предикат : предикат, примененный к источнику ущерба.
  • Теги, общие для всех типов повреждений
  • entity_properties — Проверить свойства сущности.
  • entity : указывает объект для проверки условия. Установите, чтобы this использовать сущность, которая умерла, или игрока, получившего продвижение, открывшего контейнер или сломавшего блок, killer для убийцы или killer_player для убийцы, который является игроком.
  • предикат : предикат, применяемый к сущности, использует ту же структуру, что и достижения.
  • Теги, общие для всех сущностей
  • entity_scores — тестирует оценки объекта на табло .
  • entity : указывает объект для проверки условия. Установите, чтобы this использовать сущность, которая умерла, или игрока, получившего продвижение, открывшего контейнер или сломавшего блок, killer для убийцы или killer_player для убийцы, который является игроком.
  • баллы : баллы для проверки. Все указанные баллы должны пройти, чтобы условие прошло.
  • Оценка : имя ключа — это цель, а значение — это точное значение оценки, необходимое для выполнения условия.
  • Оценка : имя ключа — это цель, а значение указывает диапазон значений оценки, необходимых для выполнения условия.
  • min : Провайдер номера . Минимальный балл.
  • max : Провайдер номера . Максимальный балл.
  • инвертированный — инвертирует условие из параметра.
  • срок : условие, которое нужно отрицать.
  • kill_by_player — Проверить, killer_player доступна ли сущность.
  • инвертировать : Если это правда, то условие проходит , если killer_player это не доступно.
  • location_check — Проверяет, совпадает ли текущее местоположение.
  • offsetX — необязательные смещения к местоположению
  • offsetY — необязательные смещения к местоположению
  • offsetZ — необязательные смещения к местоположению
  • предикат : предикат, применяемый к местоположению, использует ту же структуру, что и достижения.
  • Теги общие для всех локаций
  • match_tool — Инструмент проверки.
  • предикат : предикат, применяемый к элементу, использует ту же структуру, что и достижения.
  • Общие для всех элементов теги
  • random_chance — проверяет, меньше ли случайное число 0,0–1,0 заданного значения.
  • шанс : Коэффициент успеха в виде числа 0,0–1,0.
  • random_chance_with_looting — Проверяет, меньше ли случайное число 0,0–1,0 заданного значения, на которое влияет уровень мародерства на killer сущности.
  • шанс : Базовый шанс успеха.
  • looting_multiplier : корректировка мародерства для базового уровня успеха. Формула есть chance + (looting_level * looting_multiplier) .
  • ссылка — проверка, выполняется ли другое указанное условие (предикат).
  • name : ID упомянутого условия (предиката) в пространстве имен . Циклическая ссылка вызывает сбой синтаксического анализа.
  • Survives_explosion — возвращает истину с вероятностью 1 / радиус взрыва.
  • table_bonus — Проходит с вероятностью, выбранной из таблицы, индексируется уровнем зачарования.
  • чары : Идентификатор чар.
  • Шансы : Список вероятностей для уровня зачарования, индексированный с 0.
  • time_check — Проверяет текущее время
  • значение : значение времени в тиках.
  • значение :
  • min : Провайдер номера . Минимальное значение.
  • max : Провайдер номера . Максимальное значение.
  • weather_check — проверяет текущее состояние погоды
  • дождь : если истинно, условие оценивается как истинное, только если идет дождь или гроза.
  • thundering : если true, условие оценивается как true, только если оно гремит.
  • value_check — Проверяет диапазон значений
  • значение : поставщик номера . Значение для тестирования.
  • диапазон : точное значение для проверки.
  • диапазон : диапазон для проверки значения.
  • min : Провайдер номера . Минимальное значение.
  • max : Провайдер номера . Максимальное значение.
Читайте также:  Как сделать ночное видение в Майнкрафт

История [ ]

Версия Java 1,15 19w38a

Добавлены предикаты в пакеты данных.

Источник: minecraftpages.wiki

Детектор cвета в Minecraft

Предикаты Майнкрафт 1.15 / Predicates Minecraft 1.15

Fabric Wiki

Если вы хотите начать разработку модов с использованием Fabric, возможно, некоторые статьи могут вас заинтересовать.

Подготовка

Эти страницы помогут вам настроить среду разработки и полуавтоматические выпуски.

Основы

Эти страницы являются обязательными для чтения при разработке модов. Если вы новичёк, то рекомендуется прочитать следующее.

Терминология
Инструменты для разработки

Продвинутым

Предметы

Блоки

Эти страницы помогут вам создать блоки, хранить предметы и данные в блоках, а также создавать модели и состояния блоков.

Генерация данных

Эти страницы помогут вам с Fabric Data Generation API, который генерирует файлы JSON с помощью генераторов данных.

Генерация мира

Команды

Эти страницы помогут вам с библиотекой Brigadier от Mojang, которая позволяет создавать команды со сложными аргументами и действиями.

События (Ивенты)

Сущности

Жидкости

Миксины

Эти страницы помогут вам в использовании библиотеки Mixin от SpongePowered, которая является очень сложной темой. Мы рекомендуем вам внимательно прочитать эти страницы.

Разное

Некоторые из этих страниц в настоящее время находятся в стадии написания, некоторые могут быть недоступны.

Yarn

Помощь в разработке Fabric

Процедура изменения Fabric — или как сделать так, чтобы предложенное Вами изменение внесли (или наоборот!)

FabLabs — тестовая площадка для макетирования новых возможностей Fabric без создания pull-запроса

Ищете старые туториалы? Вероятно, они были заархивированы. Вы можете просмотреть архивные страницы здесь.

ru:tutorial:model_predicate_providers

Table of Contents

Поставщики моделей

Введение

Поставщики моделей используются для динамического изменения модели элементов на основе данных из ItemStack . Распространенным примером является лук, который имеет разную текстуру в зависимости от того, как долго был натянут лук. Затем все поставщики используются в файле модели для элемента в разделе overrides .

Читайте также:  Что значит приютить в Майнкрафте

Практический пример

Для этого примера предположим, что у нас есть пользовательский предмет лука с именем EXAMPLE_BOW .

Внутри метода мы регистрируем ModelPredicateProvider с нашим предметом и Identifier . Для использования Identifier вам не нужно указывать пространство имен, так как ни одно из них не должно конфликтовать с поставщиками Minecraft. Это должно быть сделано в методе onInitializeClient вашего ClientModInitializer . Если у вас нет ClientModInitializer , посмотрите страницу Точки входа — руководство о том, как его добавить.

ModelPredicateProvider — это функциональный интерфейс, который принимает ItemStack для текущего отображаемого стака, ClientWorld для текущего мира, в котором находится клиент, и LivingEntity в качестве пользователя этого предмета (В 1.17+ он также принимает int ).

Все ModelPredicateProvider возвращают значение в виде float , которое может использоваться для представления различных состояний модели, или значение true/false, возвращая 1.0f и 0f соответственно.

Присмотревшись повнимательнее к предикату pull , мы видим, что сначала мы проверяем, является ли сущность null, поскольку предметы могут отображаться вне контекста, в котором они используются (т.е. сбрасываться на землю). Затем мы удостоверяемся, что сущность использует наш предмет, в противном случае предмет может иметь предикат модели, применяемый, когда он не используется. Наконец, мы вычитаем livingEntity.getItemUseTimeLeft() из itemStack.getMaxUseTime() , который сообщает нам, сколько тиков удерживался элемент. Поскольку для полной зарядки лука требуется 20 тиков или одна секунда, мы затем делим это число на 20.0f , чтобы нормализовать его до значения от 0f до 1.0f для нормального хода натяжения.

Все это полезно, но это только половина функций, которые нам необходимо реализовать, чтобы наш элемент изменил свою модель.

Принцип работы Minecraft заключается в том, что он проверяет, какая модель находится последней в списке, которая либо соответствует, либо имеет значения, превышающие указанные. Таким образом, при значении 0.8 , мы бы использовали модель tutorial:item/example_bow_pulling_1 . 0.5 будет tutorial:item/example_bow_pulling_0 .

Читайте также:  Майнкрафт открыть в браузере

Источник: fabricmc.net

Новая руда. Часть 1

Привет! Руда — незаменимый аттрибут песочниц. Должна же быть у нас адекватная мотивация лезть в подземные дебри? В майнкрафте это у нас уголь, железо, золото, алмаз, изумруд, лазурит, редстоун, кварц (а сейчас еще и незерит). И чаще всего именно руды играют ключевую роль в игре.

Понятное дело, что и моды без новых руд далеко не так прекрасны (ладно, это не обязательно, но вспомнить крупные моды без новых руд я не смог). В любом случае самое время и нам создать свою руду!

Привычное дело

В который раз нужно создать новый блок и новый предмет (+ предмет для блока). Блок и будет новой рудой, а предмет будет результатом переплавки этой руды.

Не забываем добавить все необходимые ресурсы (для блока: blockstate, модель, текстуру. Для предмета: модель и текстуру). Не забывайте так же о локализации.

Всё готово?

Хорошо, будем считать, что у вас уже есть некий Block, который назван как-то _ore. К примеру sun_ore. Есть предмет «руды», так же есть предмет «блока». Вот, как это всё выглядит у меня.

Итак. Теперь немного теории и план. В игре есть два типа руды. Первый тип дропает при добыче блок, который нужно плавить в печи, а второй тип дропает какие-то предметы. Примером будет всё то же золото и лазурит.

Сегодня мы рассмотрим оба случая.

Дроп самого себя для обычного блока я уже показывал в статье о дропе и рецептах. И этот же рецепт дропа мы будем использовать для первого типа руды. Далее добавим рецепт плавки в печи (а так же для новой плавильной печи) и будем таковы.

Дроп предметов так же вынесен в отдельный файл. Просто он будет немного сложнее. Стоит отметить, что для второго типа руды так же нужен рецепт плавки в печи, т.к. есть шёлковое касание, которое позволит получить сам блок (этого можно избежать, но не будем перечить игровой логике).

Дроп блока руды и получение руды при помощи печи

Если вы проходили упомянутый урок о дропе, то папка для файлов дропа с блоков у вас уже должна быть. Если же нет, то нужно её создать. Полный путь из папки resources будет приблизительно таким: datatutorial_mod_gsloot_tablesblocksвашфайл.json.

Сюда добавляем json файл с именем вашего блока (конечно же лучше это делать через IDE, чтобы не получились нерабочие sun_ore.json.txt) и пишем туда следующий текст.

Источник: geekstand.top