MinecraftMovies
Это плагин Spigot, который позволяет смотреть видео в ванильном Minecraft. Это делается с помощью фреймов предметов и некоторых быстрых вычислений. (на самом деле математика не быстрая). Обратите внимание, что это нельзя использовать для реального применения, а скорее как доказательство концепции. Также важно отметить, что это не должно побуждать никого смотреть или распространять пиратские фильмы с помощью Minecraft.
Как это работает
Процесс отображения видео в клиенте довольно утомителен, поэтому читайте внимательно.- Во-первых, мы знаем, что Minecraft работает со скоростью 20 тиков в секунду, поэтому я решил, что буду придерживаться одного кадра за тик, то есть всего 20 кадров в секунду.
- Чтобы читать видео, я вначале использовал ffmpeg (ну, библиотеку для него), но, поскольку эта библиотека составляет> 200 МБ, я в конечном итоге использовал изображения только для разработки. => это означало использование ffmpeg (в консоли) для разделения видео на кадры. (здесь важно убедиться, что видео имеет только 20 кадров в секунду)
- Затем мы читаем эти изображения одно за другим и «рендерим» их. И с рендерингом я имею в виду, что мы сначала разделяем изображения на 128 * 128 кусков (для фреймов предметов), после чего нам нужно сопоставить цвета RGBA PNG с цветами карты Minecraft (MMC). Последний процесс требует большой вычислительной мощности, что делает невозможным рендеринг в реальном времени. Наконец, нам также необходимо рассчитать относительные позиции этих кадров элементов, чтобы видеокадры отображались правильно.
- И последнее, но не менее важное: нам нужно сохранить файл, чтобы мы могли загрузить его позже.
- Отображение этих визуализированных кадров выполняется с помощью Пакеты -> Протокол.
- Теперь, чтобы обновить их, мы проходим через каждое местоположение, отправляем пакет для уничтожения кадра, который в данный момент находится там, а затем отправляем пакет для отображения нового кадра. (упрощенный).
- Для предоставления аудио я создал небольшого бота Discord, который использует JDA (Java Discord API).