Как пользоваться модом audit

Начало работы

Прежде всего, вам потребуется какая-либо среда для просмотра баз данных. Так как audit использует SQLite, я рекомендую DB Browser for SQLite.

Кроме того, вам пригодятся файлы audit.db, user.db, audit.db-shm и audit.db-wal (если присутствуют). Если сервер запущен на удаленной машине, вам стоит скопировать эти файлы на ваш компьютер.

Так же audit должен быть включен. Для этого проверьте, что в файле конфигурации (custom.yaml) следующие значения установлены как true.

mod-enabled: true
mod-default-enabled: true
mods:
  Audit:
    enabled: true

Имена файлов баз данных могут отличаться в зависимости от установленных вами в файле конфигурации.

Поля баз данных

Мы будем рассматривать базы данных audit.db и user.db. Чтобы открыть их, просто нажмите кнопку Open Database (Открыть базу данных) и выберите нужный файл. Также можно просто дважды нажать левой кнопкой мыши по файлу .db. ¯\_(ツ)_/¯

user.db

Эта база данных содержит три таблицы. 

user

Таблица со всеми когда-либо входившими игроками. Содержит три поля. К этой таблице мы будем обращаться каждый раз, когда нам потребуется связать uuid во всех остальных таблицах с конкретным человеком

uuid - Универсальный уникальный идентификатор. Используется внутри баз данных, к нему мы будем обращаться почти всегда. Хранится в бинарной форме, никак не расшифровывается, всегда имеет длину 16 байт.

xuid - Уникальный идентификатор аккаунта xbox. Используется для идентификации игрока в whitelist и в моде ban. Всегда имеет длину в 16 десятичных цифр.

name - Читабельный никнейм игрока. Именно он отображается в игре.

login

Таблица с логами входов игроков. Имеет три поля.

uuid - Тот самый идентификатор.

address - Запись ip адреса и порта, с которого был вход. Хранится в форме 255.255.255.255|65535.

time - Дата и время входа игрока. В формате 2020-09-18 19:51:34.771

logout

Таблица с логами выходов игроков. Имеет всего два поля.

uuid - Без комментариев

time - Дата и время выхода игрока.

Больше ничего интересного в этой базе данных нет, перейдем к audit.db.

audit.db

Содержит три таблицы.

audit_action

Содержит 10 полей. Сюда записывается содержание пакета PlayerActionPacket.

time - Дата действия. В формате 2020-09-28 17:25:23.548

session - uuid сессии игрока. В бинарном формате, всегда длиной 16 байтов.

player - uuid игрока. Все так же блоб длиной 16 байтов.

dimension - Измерение, в котором произошло событие. 
0 - Верхний мир
1 - Нижний мир (ад)
2 - Край (The end)

blocked - Нет информации

type - Тип события. Выражается числом от 0 до 25, означает код события. Расшифровывается по таблице.

x - Координата по x места в мире, где произошло событие

y - Координата по y.

z - Координата по оси z.

face - Вероятно направление события, нет информации. Предположительно число от -1 до 99.

audit_item_frame

Структура аналогична audit_action за исключением того, что отсутствуют поля type и face. Записывается содержание пакета ItemFrameDropItemPacket. Скорее всего хранит данные об изъятиях предметов из рамки.

audit_transaction

Структура аналогична вышеприведенным таблицам за исключением того, что содержит только поля time, session, player, dimension и blocked. Кроме них есть уникальное поле data, которое хранит бинарные данные действия с инвентарем. Хранит пакеты InventoryTransactionPacket.  Код пакета 0x1e. Документацию к пакету можно найти в репозитории MiNET

Расшифровка Type в audit_action

Код Событие Комментарий
0 ACTION_START_BREAK Начат процесс копания блока
1 ACTION_ABORT_BREAK Процесс копания блока прерван
2 ACTION_STOP_BREAK Блок выкопан
3 ACTION_GET_UPDATED_BLOCK -
4 ACTION_DROP_ITEM -
5 ACTION_START_SLEEPING Игрок начал спать
6 ACTION_STOP_SLEEPING Игрок перестал спать
7 ACTION_RESPAWN Игрок возродился
8 ACTION_JUMP Игрок прыгнул
9 ACTION_START_SPRINT Игрок перешел на бег
10 ACTION_STOP_SPRINT Игрок прекратил бег
11 ACTION_START_SNEAK Игрок начал красться
12 ACTION_STOP_SNEAK Игрок прекратил красться
13 ACTION_DIMENSION_CHANGE_REQUEST Отправляется при смерти в другом измерении
14 ACTION_DIMENSION_CHANGE_ACK Отправляется при возрождении в другом измерении, чтобы сообщить серверу, что игрок возродился
15 ACTION_START_GLIDE Игрок начал скользить
16 ACTION_STOP_GLIDE Игрок прекратил скользить
17 ACTION_BUILD_DENIED -
18 ACTION_CONTINUE_BREAK Игрок продолжил ломать
19 ACTION_CHANGE_SKIN Игрок изменил скин
20 ACTION_SET_ENCHANTMENT_SEED Не используется
21 ACTION_START_SWIMMING Игрок начал плавать
22 ACTION_STOP_SWIMMING Игрок перестал плавать
23 ACTION_START_SPIN_ATTACK -
24 ACTION_STOP_SPIN_ATTACK -
25 ACTION_INTERACT_BLOCK Игрок взаимодействует с блоком