npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

blockmind

v1.1.12

Published

![npm](https://img.shields.io/npm/v/blockmind)

Downloads

57

Readme

npm

🌐 BlockMind Documentation

Это основная документация на Русском языке. Вы также можете просмотреть документацию на других языках:

| 🌍 Доступные языки | EN | RU | | ---------------------- | -------------------------------------------------------- | -------------------------------------------------------- |


🛠 Пример проекта

Вы можете найти пример использования библиотеки BlockMind в этом репозитории:

🔗 BlockMind Example Repository

Quickstart Readme

🛠 Create Custom Database Models


BlockMind

фреймворк для создания ботов на Minecraft-серверах. Легко расширяйте функциональность через кастомные модели, репозитории, команды и плагины.

🔑 Основные функции

  • 📦 Кастомные модели
    Создавайте и интегрируйте собственные модели в бота без лишних усилий. Ваши модели могут храниться в базе данных, либо через SQLite, либо через MongoDB.

  • 💬 Система команд
    Создавайте команды для взаимодействия с ботом и сервером. Включает в себя проверку разрешений, настройку кулдаунов и аргументов.

  • 🔐 Управление ролями и правами
    Легко управляйте ролями пользователей и разрешениями через интеграции с SQLite или MongoDB.

  • 🔌 Плагины
    Поддержка плагинов как на локальном уровне, так и через GitHub-репозитории с функцией автообновления.

  • ⚙️ Гибкая конфигурация
    Полный контроль над конфигурацией, включая выбор типа базы данных (SQLite или MongoDB), настройку задержек в чате и префиксов команд.

  • 📬 Очередь сообщений
    Система очередей для управления сообщениями в чате с настраиваемыми задержками для разных типов чатов: локальный, глобальный, клановый, личный.

  • ♻️ Автообновление
    Автоматически загружайте и применяйте обновления плагинов из GitHub с опцией ручного контроля и автообновления на основе настроек репозитория.

🛠 Конфигурация бота

const botOptions = {
    host: 'mc.masedworld.net', // localhost 
    username: 'username',
    dbType: 'sqlite',
    version: '1.20.1',
    MC_SERVER: 1,
    customModels: { // Кастомные модели если будут
        sqlite: {
            CustomModel: require('./database/models/custom/customModelSQLite')
        }
    },
    customRepositories: { // Кастомные управляторы если будут
        custom: CustomRepository
    },

    delayConfig: { // Задержа перед отправкой в чат
        local: 444,
        global: 5000,
        clan: 350,
        private: 4500
    },

    pluginsAutoUpdate: true,
    allowedAutoUpdateRepos: [] , // Доверенные репозитории которые автоматически будут обновлятся, если pluginsAutoUpdate = false

    plugins: [
        {
            name: 'ExamplePlugin',
            type: 'github',
            repoUrl: 'https://github.com/blockmindJS/blockmind-examplePlugins',
            localPath: './plugins/CustomExamplePlugin',
            options: {
                // Any options for the plugin can be passed here
            }
        }
    ]
}

📦 Разработка плагинов

Создание плагина

Плагины могут быть созданы и интегрированы в вашего бота. Каждый плагин должен быть экспортирован как функция, которая принимает объект бота и параметры.

Пример структуры плагина

Ваш плагин должен быть расположен в структуре директорий, например:

plugins/
│
├── CustomPlugin/
│   ├── src/
│   │   └── CustomPlugin.js
│   └── index.js

index.js

Файл index.js отвечает за загрузку плагина и его инициализацию.

const CustomPlugin = require('./src/CustomPlugin');

// Функция для загрузки плагина
module.exports = (bot, options) => {
    const plugin = new CustomPlugin(bot, options);

    // Сохранение ссылки на плагин для использования позже
    bot.customPlugins[options.name] = plugin;

    // Запуск плагина
    plugin.start();
};

src/CustomPlugin.js

Это основной файл вашего плагина, где находится вся логика.

class CustomPlugin {
    constructor(bot, options = {}) {
        this.bot = bot;
        this.options = options;
    }

    start() {
        console.log('Custom Plugin started');

        this.bot.on('spawn', () => {
            console.log('Bot has spawned in the game');
        });
    }
}

module.exports = CustomPlugin;

Подключение плагина к боту

Чтобы подключить плагин к вашему боту, добавьте его в список плагинов:

plugins: [
    {
        name: "CustomPlugin",
        type: "local",
        path: "./plugins/CustomPlugin",
        options: {
            // Здесь можно передать любые опции для плагина
        }
    }
]

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

plugins: [
        {
            name: 'ExamplePlugin',
            type: 'github',
            repoUrl: 'https://github.com/blockmindJS/blockmind-examplePlugins',
            localPath: './plugins/CustomExamplePlugin',
            options: {
                // Any options for the plugin can be passed here
            }
        }
    ]

Так же в папке с ботом может быть папка commands, команды оттуда так же будут интегрированы в основной код бота

💬 Создание команд

Достаточно создать папку command и создать там новый файл с вашим содержимым. Система автоматически считает любые изменения: создание, удаление или редактирование файлов, и обновит команду.

Пример создания команды:

const { Command } = require('blockmind');
class TestCommand extends Command {
    constructor() {
        super({
            name = 'test',
            argsCount = 0,
            permissions = 'user.say',
            allowedChatTypes = ['local', 'private', 'global'],
            cooldown = 0, // ms
            variations = ['test1', 'test2'],
            isActive = true
        });
    }

    async handler(bot, typeChat, user) {
        console.log(user);
        await bot.sendMessage(typeChat, `Команда test выполнена, ${user.username}!`, user.username);
    }
}

module.exports = TestCommand;

👤 Методы объекта User

  • blacklist (геттер/сеттер): Получает или устанавливает статус о черном списке пользователя(Невозможно взаимодейсовать с ботом

  • hasPermission(requiredPermissions): Проверяет наличие у пользователя указанных разрешений. Принимает строку или массив разрешений и возвращает true/false.

  • getGroups(): Возвращает группы пользователя.

  • addGroup(groupName): Добавляет пользователя в указанную группу по имени.

  • removeGroup(groupName): Удаляет пользователя из указанной группы по имени.

Доступные официальные плагины

| Плагин | Описание | Репозиторий | |----------|--------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------| | auth | Плагин для автоматической авторизации и захода на нужный портал у популярных серверах, таких как Mineblaze, Cheatmine, Masedworld | github.com/mmeerrkkaa/examplePlugins |

Как подключить плагин

Чтобы подключить плагин, добавьте его в конфигурационный файл вашего проекта.

Автоматическое обновление плагинов

  • bot.pluginsAutoUpdate = true — разрешает автоматически обновлять все подключенные плагины.
  • bot.pluginsAutoUpdate = [] — обновляет только указанные плагины из списка репозиториев, например:
bot.pluginsAutoUpdate = ['https://github.com/mmeerrkkaa/examplePlugins'];

🚀 Quck Start

📦 Установка

Чтобы начать работу, установите библиотеку blockmind через npm:

npm install blockmind

🛠️ Настройка и запуск бота

Пример базовой настройки для запуска бота:

const { createBot } = require('blockmind');
const { commandHandler } = require('blockmind');

const botOptions = {
    host: 'localhost',         // IP of the server
    username: '',              // Bot username
    dbType: 'sqlite',          // Database type. (sqlite, mongo)
    version: '1.20.1',         // Minecraft version
    password: '',              // Password (if required)
    COMMAND_PREFIX: '@',       // Command prefix
};

createBot(botOptions).then(async (bot) => {
    console.log(`Bot is running with prefix: ${bot.COMMAND_PREFIX}`);
    
    // Example chat handling on a local server
    bot.on('chat', async (username, message) => {
        if (!bot.host === 'localhost') return;
        await commandHandler(bot, 'local', username, message);
    });

    // Handling incoming messages
    bot.on('message', async (jsonMsg) => {
        const message = jsonMsg.toString();
        console.log(message);
    });
});

🔌 Создание пользовательских команд

Чтобы начать создавать свои собственные команды, просто создайте папку commands в своем проекте.

Пример тестовой команды:

const { Command } = require('blockmind');

class TestCommand extends Command {
    constructor() {
        super({
            name: 'test',
            argsCount: 0,
            permissions: 'user.say',
            allowedChatTypes: ['local', 'private', 'clan'],
            cooldown: 5000,  // Command cooldown time in milliseconds
        });
    }

    // Логика выполнения команд
    async handler(bot, typeChat, user) {
        await bot.sendMessage(typeChat, `Команда test выполнена, ${user.username}!`, user.username);
    }
}

module.exports = TestCommand;