▶️ ЗАБЕРИ СВОИ 8 ПОДАРКОВ 🎁 ПРИ СОЗДАНИИ СВОЕГО МАЙНКРАФТ СЕРВЕРА
Плагины/AdvancedReplay
AdvancedReplay

AdvancedReplay

Плагин AdvancedReplay для Minecraft Spigot записывает действия игроков на сервере и позволяет просматривать повторы в любое время. Поддерживает запись движений, инвентаря, чата, блоков. Требуется ProtocolLib.

Оцените первым
4.4K
37

AdvancedReplay - это плагин для серверов Minecraft на Spigot (версии 1.8-1.21), который записывает действия игроков и даёт возможность воспроизводить их позже. Если вы администрируете сервер, повторы помогут разобрать нарушения, проверить подозрительное поведение или просто сохранить яркие моменты. Плагин пишет почти всё: передвижения, анимации рук, инвентарь, брошенные предметы, снаряды, изменения блоков и сообщения в чат. Данные можно хранить в файлах или базе данных.

Важно: плагин не работает без ProtocolLib. Установите его заранее.

Функции

  • Управление повтором: пауза, смена скорости, телепортация к игроку.
  • Гибкое сохранение: через API можно подключить свой способ хранения.
  • Качество записи: настраивается от высокого до низкого - чем выше качество, тем больше размер файла.
  • Запись при старте и автосохранение: можно включить автоматическую запись при запуске сервера и сохранение при остановке.
  • Поддержка MySQL и S3: для централизованного хранения повторов.
  • Офлайн-скины: если сервер в офлайн-режиме, плагин может подгружать скины с Mojang.
  • Автоочистка: удаление старых повторов через заданное количество дней.
  • Скрытие посторонних игроков: во время просмотра повтора можно спрятать всех, кто не участвует.
  • Уведомления: настраиваемые сообщения о смерти, входе и выходе игроков.

Что именно записывается

  • движения игроков
  • действия (еда, анимация рук и т.п.)
  • изменения инвентаря
  • обновления метаданных
  • снаряды (стрелы, файерболы и др.)
  • выброшенные предметы
  • изменения блоков, сделанные игроками
  • сообщения в чат

Команды и права

/replay - список всех команд
/replay start [Имя]:[Длительность] <игроки> - начать запись
/replay stop <Имя> [-nosave|-force] - остановить и сохранить
/replay play <Имя> - воспроизвести повтор
/replay jump <Время> - перейти к определённому моменту
/replay leave - выйти из просмотра
/replay info <Имя> - информация о повторе
/replay delete <Имя> - удалить повтор
/replay list [Страница] - список всех повторов
/replay reload - перезагрузить конфиг

Права: replay.command.<команда> (например, replay.command.start)

Конфигурация

В config.yml настраиваются основные параметры: максимальная длина повтора (по умолчанию 3600 секунд), качество записей, автоочистка и другое. Если нужна база данных, дополнительно настраивается mysql.yml, а для S3-хранилища - s3.yml.

Пример config.yml
# General plugin settings
general:

  # Maximum length of a replay in seconds
  max_length: 3600

  # Create a new recording on startup
  # save_on_stop and add_new_players should be enabled
  record_on_startup: false

  # Should the Replay be saved on shutdown/when the maximum length is exceeded?
  save_on_stop: false

  # Should the plugin save the Replays to a mysql database?
  # If enabled you need to configure the mysql.yml
  use_mysql: false

  # Save the Replays to an S3 compatible Storage
  # If enabled you need to configure s3.yml
  use_s3: false

  # If enabled in offline mode, the plugin will fetch the skin data from Mojang
  # Can slow down the server when recording a lot of players
  use_offline_skins: true
 
  # Change how detailed movement is recorded. Better quality results in larger replays
  # Options: high, medium, low
  quality: high

  # Automatically delete replays after a specific amount of time (days)
  # Use -1 to disable
  cleanup_replays: -1

  # Hide all players that are not participating in a replay
  hide_players: false

  # Should players when they join after a recording started be added to all running recordings
  add_new_players: false

  # Should AdvancedReplay check for new updates?
  update_notifications: true
 
  # This message is displayed when a player dies
  death_message: '&6{name} &7died.'
 
  # This message is displayed when a player leaves the game
  quit_message: '&6{name} &7left the game.'

  # This message is displayed when a player joins the game
  join_message: '&6{name} &7joined the game.'

# Configuration of the replaying settings
replaying:
  world:
    # Reset block changes after watching a replay?
    reset_changes: false

  # How should the replay progress be displayed
  # Options: action_bar, xp_bar, none
  progress_display: action_bar

# Configuration of the recording data
recording:
  blocks:
 
    # Enable recording of block changes?
    enabled: true
 
    # Use real block changes when replaying?
    real_changes: true
 
  entities:
    # Enable recording of all living entities?
    enabled: true
    items:
 
      # Enable recording of items?
      enabled: true
  chat:
 
    # Enable recording of chat messages?
    enabled: true
    # Format of recorded chat messages
    format:  '&r<{name}> {message}'

API (для разработчиков)

Плагин предоставляет API для расширения функциональности. Ниже примеры.

Регистрация собственного хранилища повторов

Пример кода
ReplayAPI.getInstance().registerReplaySaver(new IReplaySaver() {
 
    @Override
    public void saveReplay(Replay replay) {
        ReplayData data = replay.getData();
        // Здесь вызывается метод сохранения нового повтора
    }

    @Override
    public boolean replayExists(String replayName) {
        // Вернуть true, если повтор с таким именем существует
        return false;
    }

    @Override
    public void loadReplay(String replayName, Consumer<Replay> consumer) {
        // Загрузка данных ReplayData и передача повтора в consumer
        consumer.accept(new Replay(replayName, new ReplayData()));
    }

    @Override
    public void deleteReplay(String replayName) {
        // Удаление существующего повтора
    }

    @Override
    public List<String> getReplays() {
        // Вернуть список всех доступных повторов
        return null;
    }
});

Создание собственного ReplayHook

Пример кода
ReplayAPI.getInstance().registerHook(new IReplayHook() {
    
    @Override
    public PacketData onRecord(String playerName) {
        /*
         * Вызывается каждый тик для каждого записываемого игрока.
         * Верните PacketData с данными, которые хотите добавить.
         */
        return null;
    }
    
    @Override
    public void onPlay(ActionData data, Replayer replayer) {
        String name = data.getName();
        PacketData packetData = data.getPacketData();
        // Вызывается, когда нужно воспроизвести ранее записанное действие
    }
});

События повторов

Пример
public void onReplayFinished(ReplaySessionFinishEvent e) {
    Player player = e.getPlayer();
    Replay replay = e.getReplay();
    // Код при завершении повтора
}

Скачайте AdvancedReplay, чтобы записывать всё, что происходит на вашем сервере Minecraft, и разбирать важные моменты с максимальной детализацией.

Часто задаваемые вопросы

Совместимость

Minecraft: Java Edition

26.1.x1.21.x1.20.x1.19.x1.8.x

Платформы

Поддерживаемые окружения

Сервер

Ссылки

Создатели

Детали

Лицензия:
Опубликован:2 года назад
Обновлён:2 месяца назад
Главная