diff --git a/src/main/java/com/replaymod/core/versions/MCVer.java b/src/main/java/com/replaymod/core/versions/MCVer.java
index f0c99a10..75d17f50 100644
--- a/src/main/java/com/replaymod/core/versions/MCVer.java
+++ b/src/main/java/com/replaymod/core/versions/MCVer.java
@@ -80,9 +80,16 @@ import org.lwjgl.glfw.GLFW;
//$$ import java.io.IOException;
//#endif
+//#if MC>=11400
+import net.minecraft.client.sound.PositionedSoundInstance;
+//#else
+//$$ import net.minecraft.client.audio.PositionedSoundRecord;
+//#endif
+
//#if MC>=10904
import com.replaymod.render.blend.mixin.ParticleAccessor;
import net.minecraft.client.particle.Particle;
+import net.minecraft.sound.SoundEvent;
import net.minecraft.util.math.Vec3d;
//#endif
@@ -758,6 +765,20 @@ public class MCVer {
}
}
+ public static void playSound(Identifier sound) {
+ getMinecraft().getSoundManager().play(
+ //#if MC>=11400
+ PositionedSoundInstance.master(new SoundEvent(sound), 1.0F)
+ //#elseif MC>=10904
+ //$$ PositionedSoundRecord.getMasterRecord(new SoundEvent(sound), 1.0F)
+ //#elseif MC>=10800
+ //$$ PositionedSoundRecord.create(sound, 1.0F)
+ //#else
+ //$$ PositionedSoundRecord.createPositionedSoundRecord(sound, 1.0F)
+ //#endif
+ );
+ }
+
//#if MC>=11400
private static Boolean hasOptifine;
public static boolean hasOptifine() {
diff --git a/src/main/java/com/replaymod/render/rendering/VideoRenderer.java b/src/main/java/com/replaymod/render/rendering/VideoRenderer.java
index 565b84eb..46f56a04 100644
--- a/src/main/java/com/replaymod/render/rendering/VideoRenderer.java
+++ b/src/main/java/com/replaymod/render/rendering/VideoRenderer.java
@@ -19,7 +19,6 @@ import com.replaymod.render.gui.GuiRenderingDone;
import com.replaymod.render.gui.GuiVideoRenderer;
import com.replaymod.render.metadata.MetadataInjector;
import com.replaymod.render.mixin.WorldRendererAccessor;
-import com.replaymod.render.utils.SoundHandler;
import com.replaymod.replay.ReplayHandler;
import com.replaymod.replaystudio.pathing.path.Keyframe;
import com.replaymod.replaystudio.pathing.path.Path;
@@ -29,6 +28,7 @@ import de.johni0702.minecraft.gui.utils.lwjgl.ReadableDimension;
import net.minecraft.client.MinecraftClient;
import com.mojang.blaze3d.platform.GLX;
import net.minecraft.client.gl.Framebuffer;
+import net.minecraft.util.Identifier;
import net.minecraft.util.crash.CrashException;
import net.minecraft.sound.SoundCategory;
import net.minecraft.client.render.RenderTickCounter;
@@ -422,7 +422,7 @@ public class VideoRenderer implements RenderInfo {
}
}
- new SoundHandler().playRenderSuccessSound();
+ MCVer.playSound(new Identifier("replaymod", "render_success"));
try {
if (!hasFailed() && ffmpegWriter != null) {
diff --git a/src/main/java/com/replaymod/render/utils/SoundHandler.java b/src/main/java/com/replaymod/render/utils/SoundHandler.java
deleted file mode 100644
index 940d51bc..00000000
--- a/src/main/java/com/replaymod/render/utils/SoundHandler.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.replaymod.render.utils;
-
-import com.replaymod.core.versions.MCVer;
-import net.minecraft.util.Identifier;
-import org.apache.commons.io.IOUtils;
-
-import javax.sound.sampled.AudioInputStream;
-import javax.sound.sampled.AudioSystem;
-import javax.sound.sampled.Clip;
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-
-public class SoundHandler {
-
- private final Identifier successSoundLocation = new Identifier("replaymod", "render_success.wav");
-
- public void playRenderSuccessSound() {
- playSound(successSoundLocation);
- }
-
- /**
- * Plays a .wav Sound from a ResourceLocation. This method does not respect Game Settings like Audio Volume.
- * @param loc The Sound File's ResourceLocation
- */
- public void playSound(Identifier loc) {
- try {
- InputStream is = MCVer.getMinecraft().getResourceManager().getResource(loc).getInputStream();
- byte[] bytes = IOUtils.toByteArray(is);
- is.close();
- AudioInputStream ais = AudioSystem.getAudioInputStream(new ByteArrayInputStream(bytes));
-
- Clip clip = AudioSystem.getClip();
- clip.open(ais);
- clip.start();
- } catch(Exception e) {
- e.printStackTrace();
- }
- }
-}
diff --git a/src/main/resources/assets/replaymod/render_success.wav b/src/main/resources/assets/replaymod/render_success.wav
deleted file mode 100644
index 311e8693..00000000
Binary files a/src/main/resources/assets/replaymod/render_success.wav and /dev/null differ
diff --git a/src/main/resources/assets/replaymod/sounds.json b/src/main/resources/assets/replaymod/sounds.json
new file mode 100644
index 00000000..0bf83f53
--- /dev/null
+++ b/src/main/resources/assets/replaymod/sounds.json
@@ -0,0 +1,5 @@
+{
+ "render_success": {
+ "sounds": [{ "name": "replaymod:render_success" }]
+ }
+}
diff --git a/src/main/resources/assets/replaymod/sounds/render_success.ogg b/src/main/resources/assets/replaymod/sounds/render_success.ogg
new file mode 100644
index 00000000..3cc89443
Binary files /dev/null and b/src/main/resources/assets/replaymod/sounds/render_success.ogg differ