Update WATERMeDIA to 2.1.x

This commit is contained in:
Martin Prokoph
2024-12-31 12:39:22 +01:00
parent fcdde95971
commit cd9bae83ca
8 changed files with 37 additions and 22 deletions

View File

@@ -17,7 +17,6 @@ import org.lwjgl.glfw.GLFW;
public class PictureSignClient { public class PictureSignClient {
public static Logger LOGGER = LogManager.getLogger("PictureSign"); public static Logger LOGGER = LogManager.getLogger("PictureSign");
public static final String MOD_ID = "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 String[] clipboard = new String[4];
public static final MinecraftClient client = MinecraftClient.getInstance(); public static final MinecraftClient client = MinecraftClient.getInstance();
public static final KeyBinding BINDING_COPY_SIGN = new KeyBinding("key."+MOD_ID+".copy_sign", 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() { public static void init() {
PictureSignConfig.init(MOD_ID, PictureSignConfig.class); PictureSignConfig.init(MOD_ID, PictureSignConfig.class);
if (hasWaterMedia) { if (PlatformFunctions.isModLoaded("watermedia")) {
MediaHandler.registerHandler(WaterMediaHandler::new); MediaHandler.registerHandler(WaterMediaHandler::new);
GIFHandler.registerHandler(WaterGIFHandler::new); GIFHandler.registerHandler(WaterGIFHandler::new);
} }

View File

@@ -159,6 +159,7 @@ public class PictureRenderer {
texture = data.identifier; texture = data.identifier;
} else if (type.isVideo && mediaHandler != null) { } else if (type.isVideo && mediaHandler != null) {
if (mediaHandler.isWorking()) { if (mediaHandler.isWorking()) {
mediaHandler.preRender();
int rawTexture = mediaHandler.getTexture(); int rawTexture = mediaHandler.getTexture();
if (rawTexture != -1) { if (rawTexture != -1) {
RenderSystem.setShaderTexture(0, rawTexture); RenderSystem.setShaderTexture(0, rawTexture);

View File

@@ -5,6 +5,7 @@ import net.minecraft.util.Identifier;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.Vec3d;
import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.ApiStatus;
import org.watermedia.api.player.videolan.VideoPlayer;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
@@ -93,6 +94,8 @@ public abstract class MediaHandler {
} }
public void setTime(long value) { public void setTime(long value) {
} }
public void preRender() {
}
public int getTexture() { public int getTexture() {
return -1; return -1;
} }

View File

@@ -1,15 +1,17 @@
package eu.midnightdust.picturesign.util; 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 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; import static eu.midnightdust.picturesign.PictureSignClient.client;
public class WaterGIFHandler extends GIFHandler { public class WaterGIFHandler extends GIFHandler {
private ImageCache player; private ImageCache player;
private long tick = 0L; private int tick = 0;
public WaterGIFHandler(Identifier id) { public WaterGIFHandler(Identifier id) {
super(id); super(id);
@@ -29,7 +31,7 @@ public class WaterGIFHandler extends GIFHandler {
@Override @Override
public void play(String url) { public void play(String url) {
this.player = ImageAPI.getCache(url, client); this.player = ImageAPI.getCache(URI.create(url), client);
player.load(); player.load();
super.play(url); super.play(url);
} }

View File

@@ -1,19 +1,21 @@
package eu.midnightdust.picturesign.util; 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.client.MinecraftClient;
import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundCategory;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import org.lwjgl.opengl.GL11; 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; import static eu.midnightdust.picturesign.PictureSignClient.client;
public class WaterMediaHandler extends MediaHandler { public class WaterMediaHandler extends MediaHandler {
private SyncBasePlayer player; private BasePlayer player;
public WaterMediaHandler(Identifier id, BlockPos pos) { public WaterMediaHandler(Identifier id, BlockPos pos) {
super(id, pos); super(id, pos);
@@ -57,10 +59,10 @@ public class WaterMediaHandler extends MediaHandler {
@Override @Override
public void play(String url, boolean isVideo) { 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); mediaHandlers.put(id, this);
if (player.isBroken()) return; if (player.isBroken()) return;
player.start(url); player.start(URI.create(url));
this.playbackStarted = true; this.playbackStarted = true;
} }
@Override @Override
@@ -80,10 +82,15 @@ public class WaterMediaHandler extends MediaHandler {
player.seekTo(value); player.seekTo(value);
} }
@Override @Override
public void preRender() {
if (player instanceof VideoPlayer videoPlayer) {
videoPlayer.preRender();
}
}
@Override
public int getTexture() { public int getTexture() {
if (player instanceof SyncVideoPlayer videoPlayer) { if (player instanceof VideoPlayer videoPlayer) {
int tex = videoPlayer.getGlTexture(); return videoPlayer.texture();
if (GL11.glIsTexture(tex)) return tex;
} }
return -1; return -1;
} }

View File

@@ -35,6 +35,9 @@
"recommends": { "recommends": {
"watermedia": "*" "watermedia": "*"
}, },
"breaks": {
"watermedia": "<2.1.0"
},
"mixins": [ "mixins": [
"picturesign.mixins.json" "picturesign.mixins.json"
] ]

View File

@@ -11,8 +11,8 @@ release_type=release
curseforge_id=533897 curseforge_id=533897
modrinth_id=9WP2dmkk modrinth_id=9WP2dmkk
midnightlib_version=1.5.7 midnightlib_version=1.6.3
watermedia_version=2.0.64 watermedia_version=2.1.2
iris_version=1.6.17+1.20.4 iris_version=1.6.17+1.20.4
# The latest Iris version causes the build to fail, but we don't need that anyway # The latest Iris version causes the build to fail, but we don't need that anyway

View File

@@ -16,21 +16,21 @@ Use signs to display custom images and videos completely client-side!
[[mixins]] [[mixins]]
config = "picturesign.mixins.json" config = "picturesign.mixins.json"
[[dependencies.visualoverhaul]] [[dependencies.picturesign]]
modId = "neoforge" modId = "neoforge"
mandatory = true mandatory = true
versionRange = "[21.0,)" versionRange = "[21.0,)"
ordering = "NONE" ordering = "NONE"
side = "BOTH" side = "BOTH"
[[dependencies.visualoverhaul]] [[dependencies.picturesign]]
modId = "minecraft" modId = "minecraft"
mandatory = true mandatory = true
versionRange = "[1.21,)" versionRange = "[1.21,)"
ordering = "NONE" ordering = "NONE"
side = "BOTH" side = "BOTH"
[[dependencies.visualoverhaul]] [[dependencies.picturesign]]
modId = "midnightlib" modId = "midnightlib"
mandatory = true mandatory = true
versionRange = "[1.0,)" versionRange = "[1.0,)"