Привет. Я хочу знать, как воспроизводить файлы GIF в Minecraft. Вот что я пробовал до сих пор:
1. Воспроизведение gif.
— Я использовал пример из этого поста, но получаю следующую ошибку:
java.lang.IllegalArgumentException: input == null! at javax.imageio.ImageIO.createImageInputStream(ImageIO.java:339) at ru.zloy.gif.Gif.images(Gif.java:50) at ru.zloy.gif.Gif.(Gif.java:32) at gl.jeong.msm.decoder.GuiTest.(GuiTest.java:13)
ImageIO.java:339 — throw new IllegalArgumentException(«input == null!»);
Gif.java:50 — ImageInputStream stream = ImageIO.createImageInputStream(this.inputStream);
Gif.java:32 — this.list = this.images();
GuiTest.java:13 — Gif gif = new Gif(new ResourceLocation(Main.MOD_ID + «:textures/gui/1.gif»));
2. animated-gif-lib-for-java/GifDecoder.java at master · rtyley/animated-gif-lib-for-java
Основная цель состоит в том, чтобы воспроизводить файл gif, когда клиент получает пакет от сервера, поэтому при получении пакета флаг меняется на true, и изображения отображаются одно за другим. Однако этот декодер требует постоянного увеличения количества кадров в выражении d.getFrame (frame). Если я использую итеративный синтаксис с for или while, число будет увеличиваться слишком быстро, поэтому, если я использую Thread или Timer, он остановится в середине операции. Я использовал PlayerTickEvent для увеличения кадра, но он все равно не работает. Есть ли способ правильно увеличить значение кадра?
🔥 ГИФКИ В МАЙНКРАФТЕ!? | ANIMATED FRAMES — ОБЗОРЫ ПЛАГИНОВ #1
Или есть более простой способ воспроизвести файл в формате gif? Буду признателен за вашу помощь.
java.lang.IllegalArgumentException: input == null!
at javax.imageio.ImageIO.createImageInputStream(ImageIO.java:339) ~[?:1.8.0_301]
at ru.zloy.gif.Gif.images(Gif.java:50) ~[Gif.class:?]
at ru.zloy.gif.Gif.(Gif.java:32) ~[Gif.class:?]
at gl.jeong3954.msm.decoder.GuiTest.(GuiTest.java:13) ~[GuiTest.class:?]
at gl.jeong3954.msm.networking.PacketHandler.on(PacketHandler.java:139) ~[PacketHandler.class:?]
at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_20_PacketHandler_on_GuiOpenEvent.invoke(.dynamic) ~[. ]
at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:90) ~[ASMEventHandler.class:?]
at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:182) ~[EventBus.class:?]
at net.minecraft.client.Minecraft.displayGuiScreen(Minecraft.java:984) ~[Minecraft.class:?]
at net.minecraft.client.Minecraft.processKeyBinds(Minecraft.java:2175) ~[Minecraft.class:?]
at net.minecraft.client.Minecraft.runTickKeyboard(Minecraft.java:2020) ~[Minecraft.class:?]
at net.minecraft.client.Minecraft.runTick(Minecraft.java:1808) ~[Minecraft.class:?]
at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1098) ~[Minecraft.class:?]
at net.minecraft.client.Minecraft.run(Minecraft.java:398) [Minecraft.class:?]
at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_301]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_301]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_301]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_301]
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_301]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_301]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_301]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_301]
at net.minecraftforge.legacydev.Main.start(Main.java:86) [legacydev-0.2.3.1-fatjar.jar:0.2.3.1+4+372be23]
at net.minecraftforge.legacydev.MainClient.main(MainClient.java:29) [legacydev-0.2.3.1-fatjar.jar:0.2.3.1+4+372be23]
java.lang.IllegalArgumentException: input == null! at javax.imageio.ImageIO.createImageInputStream(ImageIO.java:339) ~[?:1.8.0_301] at ru.zloy.gif.Gif.images(Gif.java:50) ~[Gif.class:?] at ru.zloy.gif.Gif.(Gif.java:32) ~[Gif.class:?] at gl.jeong3954.msm.decoder.GuiTest.(GuiTest.java:13) ~[GuiTest.class:?] at gl.jeong3954.msm.networking.PacketHandler.on(PacketHandler.java:139) ~[PacketHandler.class:?] at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_20_PacketHandler_on_GuiOpenEvent.invoke(.dynamic) ~[. ] at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:90) ~[ASMEventHandler.class:?] at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:182) ~[EventBus.class:?] at net.minecraft.client.Minecraft.displayGuiScreen(Minecraft.java:984) ~[Minecraft.class:?] at net.minecraft.client.Minecraft.processKeyBinds(Minecraft.java:2175) ~[Minecraft.class:?] at net.minecraft.client.Minecraft.runTickKeyboard(Minecraft.java:2020) ~[Minecraft.class:?] at net.minecraft.client.Minecraft.runTick(Minecraft.java:1808) ~[Minecraft.class:?] at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1098) ~[Minecraft.class:?] at net.minecraft.client.Minecraft.run(Minecraft.java:398) [Minecraft.class:?] at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_301] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_301] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_301] at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_301] at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?] at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_301] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_301] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_301] at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_301] at net.minecraftforge.legacydev.Main.start(Main.java:86) [legacydev-0.2.3.1-fatjar.jar:0.2.3.1+4+372be23] at net.minecraftforge.legacydev.MainClient.main(MainClient.java:29) [legacydev-0.2.3.1-fatjar.jar:0.2.3.1+4+372be23]
Источник: forum.mcmodding.ru
LittlePictureFrames — картинки и видео из интернета в мире игры [1.19.4] [1.12.2]
Мод LittleFrames — добавляет в игру возможность разместить внутри мира любые картинки из интернета и даже воспроизводить видео на ютубе, либо по прямой ссылке. Это добавляет множество возможностей по декорированию и оформлению разных помещений, либо спавнов серверов с модами.
Сам мод является переделкой мода Online Picture Frame от этого же разработчика, но в отличии от предшественника в этом моде можно вставлять видео.
Мод добавляет всего 1 предмет, это небольшая рамка, вы можете поставить ее на любую поверхность, если нажать ПКМ вы увидите не сложный интерфейс настройки.
Сверху мы вставляем ссылку на картинку (в том числе гифку) или на видео ролик, ниже мы можем указать размер по ширине и высоте в игровых блоках, можно выравнивать по любой стороне относительно рамки, поворачивать на угол, делать прозрачным, уменьшать яркость, указать дистанцию в блоках по превышению которой картинка или видео не будут видны. Для видео можно можно указать громкость, включить автоповтор.
Предупреждение :
Для воспроизведения видео на вашем пк должен быть установлен плеер vlc 4.0+ 64bit
Как установить мод:
- Установи Forge
- Установи все дополнительные моды если указано.
- Скачай мод и скопируй в .minecraft/mods
- В лаунчере запускай версию игры с форджем.
Источник: ru-minecraft.ru
Мод: Блоки с гифками
Хотите наслаждаться гиф-анимациями прямо в MCPE? Мод Gif Blocks включает блоки, на которых будет воспроизводиться различная анимация. Доступно множество вариантов блоков с короткими видео. Такого дополнения еще не было, поэтому пользователям необходимо это попробовать. Разрешение видео — 128 пикселей — детализация на великолепном уровне.
Сначала крафтим GIF-орб.
Получение и изменение GIF-блоков в камнерезе.
- Устройство должно поддерживать текстуры в разрешении 128 на 128 пикселей
- Если встать далеко от блока, то гифка перестанет работать
- Используйте команду /function gifs, чтобы получить все блоки
Необходимо включить Экспериментальный игровой процесс в настройках карты
- Совместимость с 1.16
- Добавлены новые гифки
- Добавлен крафт
Источник: mcpehub.org