diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/customcursor/CustomCursorPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/customcursor/CustomCursorPlugin.java index aff60c0daf..59e1cd89f8 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/customcursor/CustomCursorPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/customcursor/CustomCursorPlugin.java @@ -27,6 +27,14 @@ package net.runelite.client.plugins.customcursor; import com.google.inject.Provides; import javax.inject.Inject; import javax.inject.Singleton; +import javax.sound.sampled.AudioInputStream; +import javax.sound.sampled.AudioSystem; +import javax.sound.sampled.Clip; +import javax.sound.sampled.FloatControl; +import javax.sound.sampled.LineUnavailableException; +import javax.sound.sampled.UnsupportedAudioFileException; + +import lombok.extern.slf4j.Slf4j; import net.runelite.api.events.ConfigChanged; import net.runelite.client.config.ConfigManager; import net.runelite.client.eventbus.EventBus; @@ -34,6 +42,9 @@ import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.ui.ClientUI; +import java.io.IOException; + +@Slf4j @PluginDescriptor( name = "Custom Cursor", description = "Replaces your mouse cursor image", @@ -51,6 +62,9 @@ public class CustomCursorPlugin extends Plugin @Inject private EventBus eventBus; + private Clip skillSpecsRage; + private int volume = 35; + @Provides CustomCursorConfig provideConfig(ConfigManager configManager) { @@ -62,6 +76,20 @@ public class CustomCursorPlugin extends Plugin { eventBus.subscribe(ConfigChanged.class, this, this::onConfigChanged); updateCursor(); + + try (AudioInputStream ais = AudioSystem.getAudioInputStream(this.getClass().getResourceAsStream("specs-rage.wav"))) + { + skillSpecsRage = AudioSystem.getClip(); + skillSpecsRage.open(ais); + FloatControl gain = (FloatControl) skillSpecsRage.getControl(FloatControl.Type.MASTER_GAIN); + float gainVal = (((float) volume) * 40f / 100f) - 35f; + gain.setValue(gainVal); + } + catch (UnsupportedAudioFileException | IOException | LineUnavailableException e) + { + log.warn("Error opening audiostream from specs-rage.wav", e); + skillSpecsRage = null; + } } @Override @@ -78,11 +106,31 @@ public class CustomCursorPlugin extends Plugin { updateCursor(); } + + if (event.getGroup().equals("metronome") && event.getKey().equals("volume")) + { + this.volume = Integer.parseInt(event.getNewValue()); + } } private void updateCursor() { CustomCursor selectedCursor = config.selectedCursor(); + + if (selectedCursor == CustomCursor.SKILL_SPECS) + { + if (skillSpecsRage != null) + { + if (skillSpecsRage.isRunning()) + { + skillSpecsRage.stop(); + } + + skillSpecsRage.setFramePosition(0); + skillSpecsRage.start(); + } + } + clientUI.setCursor(selectedCursor.getCursorImage(), selectedCursor.toString()); } } \ No newline at end of file diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/customcursor/specs-rage.wav b/runelite-client/src/main/resources/net/runelite/client/plugins/customcursor/specs-rage.wav new file mode 100644 index 0000000000..eb9c7b82c4 Binary files /dev/null and b/runelite-client/src/main/resources/net/runelite/client/plugins/customcursor/specs-rage.wav differ