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 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);
}

View File

@@ -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);

View File

@@ -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;
}

View File

@@ -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);
}

View File

@@ -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;
}

View File

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

View File

@@ -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

View File

@@ -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,)"