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

StructurePlacerAPI

Активный

Установок

10

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

1 месяц назад

Версии

1.19 — 1.21.8
Сервер
Fabric
Quilt
Библиотеки
Утилиты

StructurePlacerAPI

Эта простая библиотека предоставляет удобный способ для однократного размещения структур в мире Minecraft, минуя стандартную генерацию мира. Она идеально подходит для создания предметов, которые вызывают появление порталов или других сооружений, а также для реализации механики "счастливых блоков".

Установка

Добавьте зависимость в файл build.gradle:

repositories {
    maven {
        name = "Modrinth"
        url = "https://api.modrinth.com/maven"
        content {
            includeGroup "maven.modrinth"
        }
    }
}

dependencies {
    modImplementation "maven.modrinth:structureplacerapi:<version>"
}

Если требуется включить API в ваш jar-файл, добавьте строку include:

repositories {
    maven {
        name = "Modrinth"
        url = "https://api.modrinth.com/maven"
        content {
            includeGroup "maven.modrinth"
        }
    }
}

dependencies {
    modImplementation "maven.modrinth:structureplacerapi:<version>"
    include "maven.modrinth:structureplacerapi:<version>"
}

Размер библиотеки составляет менее 15 КБ!

Использование

Создание структуры

Создайте NBT-структуру с помощью блоков структуры Minecraft, как показано в этом видео: https://www.youtube.com/watch?v=umhuRXinD3o

Размещение файла

Поместите файл structure.nbt в папку данных вашего мода: data/yourmodid/structures

Создание объекта размещения

Для размещения структуры необходимо создать объект StructurePlacerAPI со следующими параметрами:

StructurePlacerAPI(ServerWorld world, Identifier templateName, BlockPos blockPos, BlockMirror mirror, BlockRotation rotation, boolean ignoreEntities, float integrity, BlockPos offset)

Параметры

  • world - мир, в котором будет размещена структура
  • templateName - идентификатор структуры в формате MOD_ID:structure_name
  • blockPos - позиция блока для размещения структуры
  • mirror - отражение структуры (используйте BlockMirror.#значение)
  • rotation - вращение структуры (используйте BlockRotation.#значение)
  • ignoreEntities - игнорировать ли сущности в структуре
  • integrity - целостность структуры (от 0.0f до 1.0f)
  • offset - смещение позиции структуры

Размещение структуры

После создания объекта выполните:

placer.loadStructure();

Восстановление территории

Начиная с версии 1.1.0 доступно восстановление исходной территории:

placer.loadAndRestoreStructure(int restore_ticks);

Для анимированного восстановления:

placer.loadAndRestoreStructureAnimated(int restore_ticks, int blocks_per_tick, boolean random);
  • blocks_per_tick - количество блоков, восстанавливаемых за один тик
  • random - случайный порядок восстановления блоков

Пример использования

Постоянная структура:

StructurePlacer placer = new StructurePlacer((ServerWorld) caster.getWorld(), new Identifier(MOD_ID, "frost_light"), caster.getBlockPos(), BlockMirror.NONE, BlockRotation.CLOCKWISE_90, true, 1.0f, new BlockPos(-4, -3, -3));
placer.loadStructure();

С восстановлением территории:

StructurePlacer placer = new StructurePlacer((ServerWorld) caster.getWorld(), new Identifier(MOD_ID, "frost_light"), caster.getBlockPos(), BlockMirror.NONE, BlockRotation.CLOCKWISE_90, true, 1.0f, new BlockPos(-4, -3, -3));
placer.loadAndRestoreStructureAnimated(200, 2, true);

Важное замечание

Убедитесь, что код выполняется на стороне сервера:

if(!world.isClient){
// выполняемый код
}

Лицензия

Библиотека распространяется под лицензией CC0.

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

Emafire003

Разработчик

Создан: 14 июл 2022

ID: 7439