Skip to content

@opys/bifrost ​

npm

Bifrost для opys. resolveBifrost() створює токен входу гравця для сервера Bifrost під час запуску.

sh
npm install -D @opys/dev @opys/bifrost @opys/minecraft-vanilla @opys/java

Приклад ​

js
// opys.config.mjs
import { defineConfig, userDataDir } from '@opys/dev';
import { java } from '@opys/java';
import { minecraft } from '@opys/minecraft-vanilla';
import { resolveBifrost } from '@opys/bifrost';

export default defineConfig({
  output: 'game.opys',
  plugins: [minecraft({ version: '1.21.1' }), java({ version: '21' })],
  manifest: {
    command: '@minecraft.command',
    args: ['@minecraft.jvmArgs', '@minecraft.mainClass', '@minecraft.gameArgs'],
    workdir: '${game_directory}',
  },
  run: (manifest) => ({
    manifest: {
      vars: {
        ...manifest.vars,
        root: userDataDir('my-pack'),
        ...resolveBifrost({
          privateKey: process.env.BIFROST_PRIVATE_KEY,
          username: 'Player',
          uuid: '00000000-0000-0000-0000-000000000001',
        }),
      },
    },
  }),
});

Параметри ​

OptionЩо це
privateKeyПриватний ключ Ed25519 у вигляді PKCS#8 PEM. Рядок з \n теж підходить.
usernameІм’я гравця.
uuidID гравця.
expiresInЧас життя в секундах. Типово: 24 години.
nowКоли видано токен: Date або мілісекунди. Типово: зараз.

Що він додає ​

Нічого в бандлі. Це не плагін, і він не йде в plugins: токен належить одному гравцю і спливає, тож він створюється в run, на комп’ютері гравця, при кожному запуску.

Змінні, при запуску ​

Ті три, які ванільний Minecraft лишає відкритими.

js
// що повертає resolveBifrost
{
  username: 'Player',
  uuid: '00000000-0000-0000-0000-000000000001',
  token: '<a signed token>',
}

Тримайте ключ поза manifest: усе звідти копіюється в бандл, а бандл це zip, який може відкрити будь-хто.

Кожен параметр ​

Кожен параметр, у кожному способі його використання.

js
// токен для одного гравця, дійсний 24 години
resolveBifrost({
  privateKey: process.env.BIFROST_PRIVATE_KEY,
  username: 'Player',
  uuid: '00000000-0000-0000-0000-000000000001',
});

// коротший час життя, у секундах
resolveBifrost({
  privateKey: process.env.BIFROST_PRIVATE_KEY,
  username: 'Player',
  uuid: '00000000-0000-0000-0000-000000000001',
  expiresIn: 60 * 60,
});

// видано в названий вами час, для тесту, який має двічі дати той самий токен
resolveBifrost({
  privateKey: process.env.BIFROST_PRIVATE_KEY,
  username: 'Player',
  uuid: '00000000-0000-0000-0000-000000000001',
  now: new Date('2026-01-01T00:00:00Z'),
});

Документація ​

Частина opys. Також експортується з @opys/minecraft.