
Plasmid
Активный0.0
Установок
Последнее обновление
Версии
Plasmid
Plasmid представляет собой специализированную библиотеку для создания серверных мини-игр в Minecraft на платформе Fabric. Основная цель этого инструмента — взять на себя всю рутинную работу, связанную с технической реализацией игровых механик, чтобы разработчики могли полностью сосредоточиться на творческой составляющей своих проектов.
Данная библиотека является фундаментальным компонентом проекта Nucleoid — масштабной инициативы по созданию открытой экосистемы для серверных мини-игр в Minecraft. На GitHub-организации Nucleoid можно найти множество готовых примеров игр, реализованных с помощью Plasmid.
Начало работы
Для быстрого старта рекомендуется клонировать репозиторий plasmid-starter, выполнить скрипт init.py, после чего удалить служебные файлы .git, README.md и init.py. Также можно изучить уже реализованные проекты в репозиториях Nucleoid Organisation для лучшего понимания возможностей библиотеки.
Добавление в проект Gradle
После настройки рабочей среды Fabric необходимо добавить Plasmid в файл сборки gradle. Требуется указать репозиторий maven и зависимость plasmid, заменив PLASMID_VERSION на актуальную версию из Maven-репозитория.
repositories {
maven { url = 'https://maven.nucleoid.xyz/' }
}
dependencies {
// ...
modImplementation 'xyz.nucleoid:plasmid:PLASMID_VERSION'
}
Создание типа игры
Ключевым понятием в Plasmid является "тип игры" (GameType) — это основная точка входа для создания мини-игр. Каждый GameType имеет уникальный идентификатор и содержит всю необходимую информацию для запуска игровой логики.
Библиотека построена вокруг концепции конфигураций игр — JSON-файлов, которые определяют конкретные вариации игрового типа. Это позволяет легко создавать различные версии одной игры с разными картами или механиками без дублирования кода.
Регистрация GameType выполняется через вызов GameType.register() в классе ModInitializer:
GameType.register(
new Identifier("plasmid_example", "example"),
ExampleGameConfig.CODEC,
ExampleGame::open
);
Конфигурация игры
Конфигурационные файлы должны располагаться по пути data/
Пример конфигурации:
{
"type": "plasmid_example:example",
"name": "Hello World Example!",
"description": ["Look at my cool game!", "It greets you when you join."],
"icon": "minecraft:apple"
}
Логика игры
Основная игровая логика реализуется через класс игры, который обрабатывает события добавления игроков, настройки мира и игровых правил. Plasmid предоставляет удобные API для работы с игровым пространством (GameSpace), управления игроками и обработки событий.
Пример реализации базовой игры с приветственным сообщением:
public final class ExampleGame {
private final ExampleGameConfig config;
private final GameSpace gameSpace;
private final ServerWorld world;
public ExampleGame(ExampleGameConfig config, GameSpace gameSpace, ServerWorld world) {
this.config = config;
this.gameSpace = gameSpace;
this.world = world;
}
public static GameOpenProcedure open(GameOpenContext<ExampleGameConfig> context) {
ExampleGameConfig config = context.config();
MapTemplate template = MapTemplate.createEmpty();
template.setBlockState(new BlockPos(0, 64, 0), Blocks.STONE.getDefaultState());
TemplateChunkGenerator generator = new TemplateChunkGenerator(context.server(), template);
RuntimeWorldConfig worldConfig = new RuntimeWorldConfig()
.setGenerator(generator)
.setTimeOfDay(6000);
return context.openWithWorld(worldConfig, (activity, world) -> {
ExampleGame game = new ExampleGame(config, activity.getGameSpace(), world);
activity.deny(GameRuleType.FALL_DAMAGE);
activity.listen(GamePlayerEvents.OFFER, game::onPlayerOffer);
activity.listen(GamePlayerEvents.ADD, game::onPlayerAdd);
});
}
private PlayerOfferResult onPlayerOffer(PlayerOffer offer) {
ServerPlayerEntity player = offer.player();
return offer.accept(this.world, new Vec3d(0.0, 64.0, 0.0))
.and(() -> {
player.changeGameMode(GameMode.ADVENTURE);
});
}
private void onPlayerAdd(ServerPlayerEntity player) {
LiteralText message = new LiteralText(this.config.greeting);
this.gameSpace.getPlayers().sendMessage(message);
}
}
Тестирование
После успешной компиляции проекта можно запустить Minecraft и протестировать игру с помощью команды /game open
Plasmid значительно упрощает процесс создания серверных мини-игр, предоставляя мощные инструменты для работы с игровыми мирами, управления игроками и обработки событий, что позволяет разработчикам сосредоточиться на создании увлекательного игрового опыта.