diff --git a/common/src/main/java/eu/midnightdust/picturesign/PictureSignClient.java b/common/src/main/java/eu/midnightdust/picturesign/PictureSignClient.java index c01c5c6..6a95356 100755 --- a/common/src/main/java/eu/midnightdust/picturesign/PictureSignClient.java +++ b/common/src/main/java/eu/midnightdust/picturesign/PictureSignClient.java @@ -17,7 +17,6 @@ import org.lwjgl.glfw.GLFW; public class PictureSignClient { public static Logger LOGGER = LogManager.getLogger("PictureSign"); public static final String MOD_ID = "picturesign"; - public static final boolean hasWaterMedia = PlatformFunctions.isModLoaded("watermedia"); public static String[] clipboard = new String[4]; public static final MinecraftClient client = MinecraftClient.getInstance(); public static final KeyBinding BINDING_COPY_SIGN = new KeyBinding("key."+MOD_ID+".copy_sign", @@ -25,7 +24,7 @@ public class PictureSignClient { public static void init() { PictureSignConfig.init(MOD_ID, PictureSignConfig.class); - if (hasWaterMedia) { + if (PlatformFunctions.isModLoaded("watermedia")) { MediaHandler.registerHandler(WaterMediaHandler::new); GIFHandler.registerHandler(WaterGIFHandler::new); } diff --git a/common/src/main/java/eu/midnightdust/picturesign/render/PictureRenderer.java b/common/src/main/java/eu/midnightdust/picturesign/render/PictureRenderer.java index 7191cae..5d62421 100755 --- a/common/src/main/java/eu/midnightdust/picturesign/render/PictureRenderer.java +++ b/common/src/main/java/eu/midnightdust/picturesign/render/PictureRenderer.java @@ -159,6 +159,7 @@ public class PictureRenderer { texture = data.identifier; } else if (type.isVideo && mediaHandler != null) { if (mediaHandler.isWorking()) { + mediaHandler.preRender(); int rawTexture = mediaHandler.getTexture(); if (rawTexture != -1) { RenderSystem.setShaderTexture(0, rawTexture); diff --git a/common/src/main/java/eu/midnightdust/picturesign/util/MediaHandler.java b/common/src/main/java/eu/midnightdust/picturesign/util/MediaHandler.java index 0beda94..c7971f1 100644 --- a/common/src/main/java/eu/midnightdust/picturesign/util/MediaHandler.java +++ b/common/src/main/java/eu/midnightdust/picturesign/util/MediaHandler.java @@ -5,6 +5,7 @@ import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; import org.jetbrains.annotations.ApiStatus; +import org.watermedia.api.player.videolan.VideoPlayer; import java.util.ArrayList; import java.util.HashMap; @@ -93,6 +94,8 @@ public abstract class MediaHandler { } public void setTime(long value) { } + public void preRender() { + } public int getTexture() { return -1; } diff --git a/common/src/main/java/eu/midnightdust/picturesign/util/WaterGIFHandler.java b/common/src/main/java/eu/midnightdust/picturesign/util/WaterGIFHandler.java index b28be5e..de559b5 100644 --- a/common/src/main/java/eu/midnightdust/picturesign/util/WaterGIFHandler.java +++ b/common/src/main/java/eu/midnightdust/picturesign/util/WaterGIFHandler.java @@ -1,15 +1,17 @@ package eu.midnightdust.picturesign.util; -import me.srrapero720.watermedia.api.image.ImageAPI; -import me.srrapero720.watermedia.api.image.ImageCache; -import me.srrapero720.watermedia.api.math.MathAPI; import net.minecraft.util.Identifier; +import org.watermedia.api.image.ImageAPI; +import org.watermedia.api.image.ImageCache; +import org.watermedia.api.math.MathAPI; + +import java.net.URI; import static eu.midnightdust.picturesign.PictureSignClient.client; public class WaterGIFHandler extends GIFHandler { private ImageCache player; - private long tick = 0L; + private int tick = 0; public WaterGIFHandler(Identifier id) { super(id); @@ -29,7 +31,7 @@ public class WaterGIFHandler extends GIFHandler { @Override public void play(String url) { - this.player = ImageAPI.getCache(url, client); + this.player = ImageAPI.getCache(URI.create(url), client); player.load(); super.play(url); } diff --git a/common/src/main/java/eu/midnightdust/picturesign/util/WaterMediaHandler.java b/common/src/main/java/eu/midnightdust/picturesign/util/WaterMediaHandler.java index b90321f..c2caa64 100644 --- a/common/src/main/java/eu/midnightdust/picturesign/util/WaterMediaHandler.java +++ b/common/src/main/java/eu/midnightdust/picturesign/util/WaterMediaHandler.java @@ -1,19 +1,21 @@ package eu.midnightdust.picturesign.util; -import me.srrapero720.watermedia.api.player.PlayerAPI; -import me.srrapero720.watermedia.api.player.SyncBasePlayer; -import me.srrapero720.watermedia.api.player.SyncMusicPlayer; -import me.srrapero720.watermedia.api.player.SyncVideoPlayer; import net.minecraft.client.MinecraftClient; import net.minecraft.sound.SoundCategory; import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; import org.lwjgl.opengl.GL11; +import org.watermedia.api.player.PlayerAPI; +import org.watermedia.api.player.videolan.BasePlayer; +import org.watermedia.api.player.videolan.MusicPlayer; +import org.watermedia.api.player.videolan.VideoPlayer; + +import java.net.URI; import static eu.midnightdust.picturesign.PictureSignClient.client; public class WaterMediaHandler extends MediaHandler { - private SyncBasePlayer player; + private BasePlayer player; public WaterMediaHandler(Identifier id, BlockPos pos) { super(id, pos); @@ -57,10 +59,10 @@ public class WaterMediaHandler extends MediaHandler { @Override public void play(String url, boolean isVideo) { - this.player = isVideo ? new SyncVideoPlayer(client) : new SyncMusicPlayer(); + this.player = isVideo ? new VideoPlayer(client) : new MusicPlayer(); mediaHandlers.put(id, this); if (player.isBroken()) return; - player.start(url); + player.start(URI.create(url)); this.playbackStarted = true; } @Override @@ -80,10 +82,15 @@ public class WaterMediaHandler extends MediaHandler { player.seekTo(value); } @Override + public void preRender() { + if (player instanceof VideoPlayer videoPlayer) { + videoPlayer.preRender(); + } + } + @Override public int getTexture() { - if (player instanceof SyncVideoPlayer videoPlayer) { - int tex = videoPlayer.getGlTexture(); - if (GL11.glIsTexture(tex)) return tex; + if (player instanceof VideoPlayer videoPlayer) { + return videoPlayer.texture(); } return -1; } diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index b067eb3..a86f275 100755 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -35,6 +35,9 @@ "recommends": { "watermedia": "*" }, + "breaks": { + "watermedia": "<2.1.0" + }, "mixins": [ "picturesign.mixins.json" ] diff --git a/gradle.properties b/gradle.properties index f9c3278..6e967f4 100755 --- a/gradle.properties +++ b/gradle.properties @@ -11,8 +11,8 @@ release_type=release curseforge_id=533897 modrinth_id=9WP2dmkk -midnightlib_version=1.5.7 -watermedia_version=2.0.64 +midnightlib_version=1.6.3 +watermedia_version=2.1.2 iris_version=1.6.17+1.20.4 # The latest Iris version causes the build to fail, but we don't need that anyway diff --git a/neoforge/src/main/resources/META-INF/neoforge.mods.toml b/neoforge/src/main/resources/META-INF/neoforge.mods.toml index 4d1c3b1..94c54e9 100644 --- a/neoforge/src/main/resources/META-INF/neoforge.mods.toml +++ b/neoforge/src/main/resources/META-INF/neoforge.mods.toml @@ -16,21 +16,21 @@ Use signs to display custom images and videos completely client-side! [[mixins]] config = "picturesign.mixins.json" -[[dependencies.visualoverhaul]] +[[dependencies.picturesign]] modId = "neoforge" mandatory = true versionRange = "[21.0,)" ordering = "NONE" side = "BOTH" -[[dependencies.visualoverhaul]] +[[dependencies.picturesign]] modId = "minecraft" mandatory = true versionRange = "[1.21,)" ordering = "NONE" side = "BOTH" -[[dependencies.visualoverhaul]] +[[dependencies.picturesign]] modId = "midnightlib" mandatory = true versionRange = "[1.0,)"