Скачать Nodeflow — Minecraft Моды — MetaMods
Nodeflow

Nodeflow

Активный

Установок

0

Последнее обновление

4 месяца назад

Версии

1.20.2 — 1.21.6
Клиент
Fabric
Quilt
Библиотеки

Nodeflow

Nodeflow представляет собой библиотеку для создания интерфейсов программирования на основе графов в Minecraft, работающую на загрузчике модов Fabric.

Начало работы

Для подключения библиотеки добавьте зависимость через JitPack. Также можно использовать Maven от Modrinth, но в этом случае может потребоваться дополнительно добавить зависимость на Mixin Extras.

repositories {
    maven { url 'https://jitpack.io' }
}

dependencies {
    implementation 'com.github.mattidragon:nodeflow:$nodeflow_version'
}

Первым шагом является создание GraphEnvironment. Большинству модов потребуется только одна такая среда, но если набор доступных узлов изменяется, можно создавать новую при необходимости.

public static final GraphEnvironment ENVIRONMENT = GraphEnvironment.builder()
        // Добавляет контекст, необходимый узлам для выполнения. Остается неизменным при каждой оценке
        .addContextTypes(ContextType.SERVER_WORLD, ContextType.BLOCK_POS, ContextType.SERVER)
        // Типы данных, которые разрешено использовать. Нужно для узлов, которые могут работать с любым типом данных, чтобы знать, какие разрешены
        .addDataTypes(DataType.BOOLEAN, DataType.NUMBER, DataType.STRING)
        // Добавляет группы узлов. Также используются для группировки в редакторе
        .addNodeGroups(new TagNodeGroup(NodeGroup.MATH), new TagNodeGroup(NodeGroup.ADVANCED_MATH), new TagNodeGroup(NodeGroup.LOGIC), new TagNodeGroup(ModNodeTypes.REDSTONE_GROUP))
        // Добавляет отдельные узлы. Они будут помещены в группу "разное"
        .addNodeTypes(NodeType.TIME)
        .build();

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

Если вы используете блок-сущность для хранения кода, она может реализовывать интерфейс GraphProvidingBlockEntity в дополнение к наследованию от BlockEntity. Этот интерфейс уже реализует ExtendedScreenHandlerFactory, поэтому все, что нужно сделать - открыть экран из блок-сущности. Nodeflow автоматически обработает синхронизацию графа при изменениях.

Если граф не хранится в блоке, можно создать подкласс EditorScreen и самостоятельно обрабатывать синхронизацию (или не делать этого, если работа полностью на стороне клиента).

В будущем могут появиться подробная документация и вики.

Участники проекта
MattiDragon

MattiDragon

Разработчик

Создан: 5 окт 2023

ID: 5308