Сегодня речь пойдет о мире, о который большинство из вас не знает, но при этом там крутятся многие отличные инженеры-разработчики и большие деньги. Да, как ни странно, речь пойдет о Minecraft.

Minecraft — игра-песочница и на мультиплеер-серверах остро стоит проблема гриферства (от англ. griefing — вредительство), когда игроки рушат чужие постройки. На серверах с этой проблемой справляются по-разному. На публичных используют плагин на ‘приват’, на остальных же все строится на доверии.

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

Выбор базы данных

Итак, вот у нас массив данных и хорошо бы его куда-то сохранять. Умные люди давно придумали БД. Лично у меня требования к БД были такие:

Последний пункт появился из-за того, что не на всех хостингах есть возможность получить root-доступ или установить какой-либо пакет. К тому же, не хотелось усложнять процедуру установки, а остановиться на «Кинул и забыл».

Сколько Времени Понадобиться Чтобы Добыть ВЕСЬ МИР Майнкрафта? | ДАРТИ #shorts

Базы данных, которые удовлетворяли бы всем критериям я не нашел, поэтому решил сделать свою мини-БД на Java.

Оптимизация места на жёстком диске

Основная проблема игры, как считают многие, — все её вычисления происходят в одном потоке. Это настоящая боль держателей серверов. Распараллелить изначально однопоточную архитектуру — надо постараться.

Поэтому само логгирование пришлось вынести в отдельный поток. А чтобы система не захлебнулась от Event’ов в очереди, добавить поддержку воркеров. Количество воркеров настраеваемое.

В итоге получилось так, что само событие перехватывается в главном тике, потом отправляется в поток, который занят тем, что распределяет задачи между воркерами. Там мы получаем файл, в который надо занести наше событие и передаем уже воркеру, который прикреплен к этому файлу. И сама операция IO происходит в воркере.

Оптимизация места на жёстком диске

Большое количество событий может привести к тому, что логи будут весить больше, чем сам мир. Этого нам допустить нельзя, поэтому будем думать.

Изначально строчка в логфайле выглядела так:

[2001-07-04T12:08:56.235-0700]Player PLACE to 128,128,128

При беглом взгляде можно заметить, что 2001-07-04T12:08:56.235-0700 можно сократить до Timestamp, а PLACE или REMOVE на символ ‘+’ и ‘-‘ соответственно. Ну и уберем нафиг ‘to’:

Читайте также:  Майнкрафт это моя жизнь прикол

Не сложно заметить, что в логе будет часто повторятся nickname и blockid. Соответсвенно, их можно вынести в отдельный файл, а в лог писать только id

[123454678]1 + 1 128,128,128

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

Сама байтовая строка теперь выглядит так:

нубик в Майнкрафт

NameposXposYposZtypeactionplayeridblockidtimestamp
Field Length (bytes) 4 byte 4 byte 4 byte 1 byte (‘0’ for Remove, ‘1’ for Insert) 4 byte 8 byte 8 byte

Итого мы имеем 35 байтов на строку фиксированно (1 байт для разделения строк).
Вначале был соблазн оставить 34 байта, но так как запись ведется в один файл, то в случае с фиксированной длинной, если побьется одна строка, весь файл станет нечитаемым.

Структура строки для blockname to id:

Nameidblockname
Field Length (bytes) 8 byte 1 byte per symbols

21 байтов на блок
Имя файла: blockmap.bytelog

Структура строки для nickname to id:

Nameidnickname
Field Length (bytes) 4 byte 1 byte per symbols

10 байтов на игрока
Имя файла: nickmap.bytelog

Оптимизация памяти

Чтобы быстро маппить blockname и nickname в id пришлось держать содержимое обоих файлов в памяти. Java не может в HashMap хранить примитивные типы, поэтому каждый Integer будет стоить нам

50 байт в памяти, что очень много.

Решить эту проблему нам поможет библиотека trove.

Но каждый символ у нас занимает примерно 2 байта. Мы можем снизить потребления памяти с помощью самописного файла ASCIString, в котором символы хранятся в byte[], а не в char[].

Тестирование

В тестировании байтовой сериализации и десериализации ничего необычного нет, а вот для тестирования компонентов, к которым требовался многопоточный доступ пришлось использовать фреймворк от гугла Thread Weaver. Обычный тест с использованием этого фреймворка выглядит так:

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

Заключение

Пока по количеству скачиваний будет понятно стоит ли развивать дальше этот мод и идею. Из примерных планов на будущее:

чат лог майнкрафт где

Данный плагин упростит уход за вашим сервером. С его помощью, вы сможете узнать, кто и когда поставил, разрушил тот или иной блок, откатить действия игроков и многое другое. Проще говоря, он позволит просматривать логи и возвращать состояние блоков, территории, или всего вашего сервера к нужному вам промежутку времени.

Читайте также:  Как взрывать тнт в minecraft

Он не требует настроек, сразу же после установки его можно использовать.

Нажатие ЛКМ по верхней части блока, выведет информацию в чат, о том, кем и когда был разрушен блок, который находился над данным. Установив любой блок, вы узнаете информацию о всех блоках, находившиеся ранее на этих координатах.

чат лог майнкрафт где

П ри нажатии ПКМ на любое устройство (кнопка, рычаг, дверь и т.п.) вы узнаете ник игрока, последний использовавший его. Повторный ввод команды /co inspect заканчивает работу с данным плагином.

Команда для отката изменения блоков: /co rollback u: t: b: e: r:

— u: ник игрока, относительно действий которого, произойдет откат

— b: блок, при указании ID откат затронет только эти блоки

— e: исключение, при указании ID, блок останется нетронутым

— r: радиус, относительно вашего положения, в котором произойдет откат

чат лог майнкрафт где

Другие команды плагина :

/co lookup u: t: b: e: r: — просмотр логов по параметрам

/co purge — очистить информацию о блоках за один или несколько месяцев.

Чат на серверах Майнкрафт

чат лог майнкрафт где

Чат на серверах Майнкрафт используется по двум причинам:

Эта статья поможет разобраться, чем отличается команда от сообщения, как писать в чат и как выполнять команды через чат на Майнкрафт сервере.

Как открыть чат в Майнкрафт?

Чат и на сервере и в одиночной игре открывается при помощи клавиши T на клавиатуре, (в одиночной игре чат для общения использовать не придется, только для прописывания команд). И не имеет значения, дело происходит на стационарном компьютере или на ноутбуке.

Если игроку нужно ввести команду в чате, то можно сразу использовать клавишу / (слэш) на клавиатуре, тогда не придется перед командой вводить слеш.

Как отправить сообщение в чат?

Для отправки сообщения в чат на Майнкрафт сервере необходимо:

После отправки сообщения в чат его уже нельзя будет отредактировать или удалить, оно запишется у всех игроков в логах клиента, а также сохранится и в логах на сервере.

Как выполнить команду?

Аналогично сообщению, только перед командой ставится слеш (например: /home ).

Как отключить чат на сервере?

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

Читайте также:  Что делает вип в Майнкрафте

Бывают ли Майнкрафт сервера с голосовым чатом?

Сервера Майнкрафт с голосовым чатом встречаются, но не очень часто, так как технология общения в реальном времени через игровой клиент Майнкрафт требует как дополнительных серверных мощностей, так и наличия собственного игрового лаунчера.

Зачастую для общения голосом используются различные сервисы для голосового общения, такие как Discord или Teamspeak.

  • ← чат линкс мод на монеты
  • чат майнкрафт в дискорде →

Источник: mybaikonur.ru

Как посмотреть весь чат в майнкрафт

Добавить комментарий Отменить ответ

Смотрите также

  • Floatable Rails Mod 1.8/1.7.10/1.7.2/1.6.4
  • Zoom Mod 1.8/1.7.10/1.7.9/1.7.2
  • Modloader [1.6.4] [1.6.2]
  • Click Mining Fix Fix Mod [1.7.5] [1.7.2]
  • Fast Building Mod 1.8/1.7.10
  • Ingame Username Change Mod 1.8/1.7.10

Популярное

  • Скачать Minecraft 1.19.2
  • TL Launcher
  • Forge
  • Fabric
  • Optifine HD
  • Not Enough Items (NEI)
  • Just Enough Items (JEI)
  • Рецепты крафта Майнкрафт
  • Миникарта
  • Шейдеры
  • Читы
  • Лаки блоки

Источник: minecraftexpert.ru

Мод на чат для Майнкрафт 1.8/1.7.10 (ChatLog)

Благодаря использованию уникального мода ChatLog мимо вас не пройдет информация, которую вы не успели прочитать во время игры, либо вам нужна будет в какой то момент. Данный мод обеспечивает сохранение всех данных в папке minecraft/chatlogs в которой вы в любой момент можете отыскать нужные данные.

Основные особенности мода:

  • Автоматическое сохранение переписки в папке chatlogs;
  • Все данные в одном файле;
  • При сохранении переписки, все строки сохраняют свои цвета как в чате;
  • Ничего не сохраняет на сервере;
  • Очень хорошо сочетается этот мод с остальными;
  • При его установке не нужно использовать Forge;
  • Все сохраненные сообщения имеют временное обозначение.

Чат

Чат

Лаунчер

Чат

Чат

Лаунчер

Установка для большинства лаунчеров

Универсальная FLauncher

1. Скачайте мод нужной версии ниже
2. Загрузите и установите Minecraft Forge (в большинстве лаунчеров можно установить через лаунчер)
3. Загруженный мод не распаковывая, скопируйте в .minecraft/mods
4. Готово! Выберите в лаунчере Forge и запустите игру

1. Скачайте мод нужной версии ниже
2. Загрузите и установите Minecraft Forge (можно установить через лаунчер, но версии выше 1.12.2 недоступны) 3. Загруженный мод не распаковывая, скопируйте в .flauncher/clients/vanilla/minecraft/mods
4. Готово! Выберите в лаунчере Forge и запустите игру

Источник: minecraftom.ru