mirror of
https://github.com/TeamMidnightDust/PictureSign.git
synced 2025-12-13 04:45:10 +01:00
88 lines
2.4 KiB
Java
88 lines
2.4 KiB
Java
package eu.midnightdust.picturesign.util;
|
|
|
|
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;
|
|
|
|
public class WaterMediaHandler extends MediaHandler {
|
|
private SyncBasePlayer player;
|
|
|
|
WaterMediaHandler(Identifier id, BlockPos pos) {
|
|
super(id, pos);
|
|
mediaHandlers.put(id, this);
|
|
}
|
|
@Override
|
|
void setVolume(int volume) {
|
|
player.setVolume((int) (volume * MinecraftClient.getInstance().options.getSoundVolume(SoundCategory.MASTER)));
|
|
}
|
|
|
|
@Override
|
|
public void closePlayer() {
|
|
if (player != null) {
|
|
player.stop();
|
|
player.release();
|
|
}
|
|
//mediaPlayers.remove(id);
|
|
player = null;
|
|
}
|
|
@Override
|
|
public void stop() {
|
|
player.stop();
|
|
isDeactivated = true;
|
|
}
|
|
@Override
|
|
public boolean isStopped() {
|
|
return player.isStopped();
|
|
}
|
|
@Override
|
|
public boolean isPaused() {
|
|
return player.isPaused();
|
|
}
|
|
@Override
|
|
public void pause() {
|
|
player.pause();
|
|
}
|
|
@Override
|
|
public void restart() {
|
|
player.play();
|
|
}
|
|
|
|
@Override
|
|
public void play(String url, boolean isVideo) {
|
|
this.player = isVideo ? new SyncVideoPlayer(MinecraftClient.getInstance()) : new SyncMusicPlayer();
|
|
mediaHandlers.put(id, this);
|
|
if (player.isBroken()) return;
|
|
player.start(url);
|
|
this.playbackStarted = true;
|
|
}
|
|
@Override
|
|
public boolean hasMedia() {
|
|
return player != null && player.isPlaying();
|
|
}
|
|
@Override
|
|
public void setRepeat(boolean value) {
|
|
player.setRepeatMode(true);
|
|
}
|
|
@Override
|
|
public long getTime() {
|
|
return player.getTime();
|
|
}
|
|
@Override
|
|
public void setTime(long value) {
|
|
player.seekTo(value);
|
|
}
|
|
@Override
|
|
public int getTexture() {
|
|
if (player instanceof SyncVideoPlayer videoPlayer) return videoPlayer.getGlTexture();
|
|
return -1;
|
|
}
|
|
public boolean isWorking() {
|
|
return mediaHandlers.containsKey(id) && mediaHandlers.get(id) instanceof WaterMediaHandler waterMediaHandler
|
|
&& waterMediaHandler.player != null && !waterMediaHandler.player.isBroken();
|
|
}
|
|
}
|