project: music plugin
This commit is contained in:
@@ -37,7 +37,6 @@ import lombok.AllArgsConstructor;
|
|||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import net.runelite.api.Actor;
|
import net.runelite.api.Actor;
|
||||||
import net.runelite.api.Client;
|
import net.runelite.api.Client;
|
||||||
import net.runelite.api.GameState;
|
import net.runelite.api.GameState;
|
||||||
@@ -73,7 +72,6 @@ import net.runelite.client.plugins.PluginDescriptor;
|
|||||||
name = "Music",
|
name = "Music",
|
||||||
description = "Adds search and filter for the music list, and additional volume control"
|
description = "Adds search and filter for the music list, and additional volume control"
|
||||||
)
|
)
|
||||||
@Slf4j
|
|
||||||
public class MusicPlugin extends Plugin
|
public class MusicPlugin extends Plugin
|
||||||
{
|
{
|
||||||
@Inject
|
@Inject
|
||||||
@@ -220,7 +218,6 @@ public class MusicPlugin extends Plugin
|
|||||||
|
|
||||||
private void onVolumeChanged(VolumeChanged volumeChanged)
|
private void onVolumeChanged(VolumeChanged volumeChanged)
|
||||||
{
|
{
|
||||||
log.info(volumeChanged.getType().toString());
|
|
||||||
applyMusicVolumeConfig();
|
applyMusicVolumeConfig();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1784,6 +1784,24 @@ public abstract class RSClientMixin implements RSClient
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
@Override
|
||||||
|
public void setMusicVolume(int volume)
|
||||||
|
{
|
||||||
|
if (volume > 0 && client.getMusicVolume() <= 0 && client.getcurrentTrackGroupId() != -1)
|
||||||
|
{
|
||||||
|
client.playMusicTrack(client.getMusicTracks(), client.getcurrentTrackGroupId(), 0, volume, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
client.setClientMusicVolume(volume);
|
||||||
|
client.setMusicTrackVolume(volume);
|
||||||
|
if (client.getMidiPcmStream() != null)
|
||||||
|
{
|
||||||
|
client.getMidiPcmStream().setPcmStreamVolume(volume);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Copy("changeGameOptions")
|
@Copy("changeGameOptions")
|
||||||
public static void rs$changeGameOptions(int var0)
|
public static void rs$changeGameOptions(int var0)
|
||||||
{
|
{
|
||||||
@@ -1798,7 +1816,7 @@ public abstract class RSClientMixin implements RSClient
|
|||||||
int type = client.getVarpDefinition(var0).getType();
|
int type = client.getVarpDefinition(var0).getType();
|
||||||
if (type == 3 || type == 4 || type == 10)
|
if (type == 3 || type == 4 || type == 10)
|
||||||
{
|
{
|
||||||
VolumeChanged volumeChanged = new VolumeChanged(null);
|
VolumeChanged volumeChanged = new VolumeChanged(type == 3 ? VolumeChanged.Type.MUSIC : type == 4 ? VolumeChanged.Type.EFFECTS : VolumeChanged.Type.AREA);
|
||||||
client.getCallbacks().post(VolumeChanged.class, volumeChanged);
|
client.getCallbacks().post(VolumeChanged.class, volumeChanged);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -449,6 +449,9 @@ public interface RSClient extends RSGameShell, Client
|
|||||||
@Import("SpriteBuffer_spritePalette")
|
@Import("SpriteBuffer_spritePalette")
|
||||||
void setIndexedSpritePalette(int[] indexedSpritePalette);
|
void setIndexedSpritePalette(int[] indexedSpritePalette);
|
||||||
|
|
||||||
|
@Import("archive6")
|
||||||
|
RSAbstractArchive getMusicTracks();
|
||||||
|
|
||||||
@Import("archive8")
|
@Import("archive8")
|
||||||
@Override
|
@Override
|
||||||
RSAbstractArchive getIndexSprites();
|
RSAbstractArchive getIndexSprites();
|
||||||
@@ -1047,8 +1050,7 @@ public interface RSClient extends RSGameShell, Client
|
|||||||
int getMusicVolume();
|
int getMusicVolume();
|
||||||
|
|
||||||
@Import("musicVolume")
|
@Import("musicVolume")
|
||||||
@Override
|
void setClientMusicVolume(int volume);
|
||||||
void setMusicVolume(int volume);
|
|
||||||
|
|
||||||
@Import("areaSoundEffectVolume")
|
@Import("areaSoundEffectVolume")
|
||||||
@Override
|
@Override
|
||||||
@@ -1066,9 +1068,21 @@ public interface RSClient extends RSGameShell, Client
|
|||||||
@Override
|
@Override
|
||||||
void setSoundEffectVolume(int volume);
|
void setSoundEffectVolume(int volume);
|
||||||
|
|
||||||
|
@Import("musicTrackVolume")
|
||||||
|
void setMusicTrackVolume(int volume);
|
||||||
|
|
||||||
@Import("viewportWalking")
|
@Import("viewportWalking")
|
||||||
void setViewportWalking(boolean viewportWalking);
|
void setViewportWalking(boolean viewportWalking);
|
||||||
|
|
||||||
|
@Import("playMusicTrack")
|
||||||
|
void playMusicTrack(RSAbstractArchive var0, int var1, int var2, int var3, boolean var4);
|
||||||
|
|
||||||
|
@Import("midiPcmStream")
|
||||||
|
RSMidiPcmStream getMidiPcmStream();
|
||||||
|
|
||||||
|
@Import("currentTrackGroupId")
|
||||||
|
int getcurrentTrackGroupId();
|
||||||
|
|
||||||
@Import("crossSprites")
|
@Import("crossSprites")
|
||||||
@Override
|
@Override
|
||||||
RSSprite[] getCrossSprites();
|
RSSprite[] getCrossSprites();
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018, trimbe <github.com/trimbe>
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||||
|
* list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
* this list of conditions and the following disclaimer in the documentation
|
||||||
|
* and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
|
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
package net.runelite.rs.api;
|
||||||
|
|
||||||
|
import net.runelite.mapping.Import;
|
||||||
|
|
||||||
|
public interface RSMidiPcmStream
|
||||||
|
{
|
||||||
|
@Import("setPcmStreamVolume")
|
||||||
|
void setPcmStreamVolume(int volume);
|
||||||
|
}
|
||||||
@@ -202,7 +202,8 @@ public final class Client extends GameShell implements Usernamed {
|
|||||||
@ObfuscatedGetter(
|
@ObfuscatedGetter(
|
||||||
intValue = -910754411
|
intValue = -910754411
|
||||||
)
|
)
|
||||||
static int field666;
|
@Export("currentTrackGroupId")
|
||||||
|
static int currentTrackGroupId;
|
||||||
@ObfuscatedName("mo")
|
@ObfuscatedName("mo")
|
||||||
@ObfuscatedGetter(
|
@ObfuscatedGetter(
|
||||||
intValue = -1946560921
|
intValue = -1946560921
|
||||||
@@ -1511,7 +1512,7 @@ public final class Client extends GameShell implements Usernamed {
|
|||||||
destinationY = 0;
|
destinationY = 0;
|
||||||
minimapState = 0;
|
minimapState = 0;
|
||||||
musicVolume = 255;
|
musicVolume = 255;
|
||||||
field666 = -1;
|
currentTrackGroupId = -1;
|
||||||
field759 = false;
|
field759 = false;
|
||||||
soundEffectVolume = 127;
|
soundEffectVolume = 127;
|
||||||
areaSoundEffectVolume = 127;
|
areaSoundEffectVolume = 127;
|
||||||
@@ -1653,7 +1654,7 @@ public final class Client extends GameShell implements Usernamed {
|
|||||||
var5 = 0;
|
var5 = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
class49.midiPcmStream.method3760(var5);
|
class49.midiPcmStream.setPcmStreamVolume(var5);
|
||||||
} else {
|
} else {
|
||||||
class49.midiPcmStream.clear();
|
class49.midiPcmStream.clear();
|
||||||
class49.midiPcmStream.removeAll();
|
class49.midiPcmStream.removeAll();
|
||||||
@@ -1765,7 +1766,7 @@ public final class Client extends GameShell implements Usernamed {
|
|||||||
|
|
||||||
if (class49.midiPcmStream.loadMusicTrack(class197.musicTrack, class197.musicPatchesArchive, FriendLoginUpdate.soundCache, 22050)) {
|
if (class49.midiPcmStream.loadMusicTrack(class197.musicTrack, class197.musicPatchesArchive, FriendLoginUpdate.soundCache, 22050)) {
|
||||||
class49.midiPcmStream.clearAll();
|
class49.midiPcmStream.clearAll();
|
||||||
class49.midiPcmStream.method3760(TileItem.field1223);
|
class49.midiPcmStream.setPcmStreamVolume(TileItem.musicTrackVolume);
|
||||||
class49.midiPcmStream.setMusicTrack(class197.musicTrack, WorldMapSectionType.musicTrackBoolean);
|
class49.midiPcmStream.setMusicTrack(class197.musicTrack, WorldMapSectionType.musicTrackBoolean);
|
||||||
class197.field2386 = 0;
|
class197.field2386 = 0;
|
||||||
class197.musicTrack = null;
|
class197.musicTrack = null;
|
||||||
|
|||||||
@@ -705,7 +705,7 @@ public class ClientPacket implements class181 {
|
|||||||
@Export("playSoundJingle")
|
@Export("playSoundJingle")
|
||||||
static void playSoundJingle(int var0, int var1) {
|
static void playSoundJingle(int var0, int var1) {
|
||||||
if (Client.musicVolume != 0 && var0 != -1) {
|
if (Client.musicVolume != 0 && var0 != -1) {
|
||||||
class83.method2068(ClanMate.archive11, var0, 0, Client.musicVolume, false);
|
class83.playMusicTrack(ClanMate.archive11, var0, 0, Client.musicVolume, false);
|
||||||
Client.field759 = true;
|
Client.field759 = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -213,10 +213,10 @@ public class DynamicObject extends Entity {
|
|||||||
class197.musicTrackArchive = null;
|
class197.musicTrackArchive = null;
|
||||||
class188.musicTrackGroupId = -1;
|
class188.musicTrackGroupId = -1;
|
||||||
class49.musicTrackFileId = -1;
|
class49.musicTrackFileId = -1;
|
||||||
TileItem.field1223 = 0;
|
TileItem.musicTrackVolume = 0;
|
||||||
WorldMapSectionType.musicTrackBoolean = false;
|
WorldMapSectionType.musicTrackBoolean = false;
|
||||||
MusicPatchNode2.field2382 = 2;
|
MusicPatchNode2.field2382 = 2;
|
||||||
Client.field666 = -1;
|
Client.currentTrackGroupId = -1;
|
||||||
Client.field759 = false;
|
Client.field759 = false;
|
||||||
ClientPacket.method3581();
|
ClientPacket.method3581();
|
||||||
MouseRecorder.updateGameState(10);
|
MouseRecorder.updateGameState(10);
|
||||||
|
|||||||
@@ -151,8 +151,8 @@ public class HealthBarUpdate extends Node {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!var12) {
|
if (!var12) {
|
||||||
if (Client.musicVolume != 0 && Client.field666 != -1) {
|
if (Client.musicVolume != 0 && Client.currentTrackGroupId != -1) {
|
||||||
class83.method2068(class225.archive6, Client.field666, 0, Client.musicVolume, false);
|
class83.playMusicTrack(class225.archive6, Client.currentTrackGroupId, 0, Client.musicVolume, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
Client.field759 = false;
|
Client.field759 = false;
|
||||||
|
|||||||
@@ -131,7 +131,8 @@ public class MidiPcmStream extends PcmStream {
|
|||||||
signature = "(II)V",
|
signature = "(II)V",
|
||||||
garbageValue = "-1812413582"
|
garbageValue = "-1812413582"
|
||||||
)
|
)
|
||||||
public synchronized void method3760(int var1) {
|
@Export("setPcmStreamVolume")
|
||||||
|
public synchronized void setPcmStreamVolume(int var1) {
|
||||||
this.field2393 = var1;
|
this.field2393 = var1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -205,7 +205,7 @@ public class MouseRecorder implements Runnable {
|
|||||||
class197.musicTrackArchive = null;
|
class197.musicTrackArchive = null;
|
||||||
class188.musicTrackGroupId = -1;
|
class188.musicTrackGroupId = -1;
|
||||||
class49.musicTrackFileId = -1;
|
class49.musicTrackFileId = -1;
|
||||||
TileItem.field1223 = 0;
|
TileItem.musicTrackVolume = 0;
|
||||||
WorldMapSectionType.musicTrackBoolean = false;
|
WorldMapSectionType.musicTrackBoolean = false;
|
||||||
MusicPatchNode2.field2382 = 2;
|
MusicPatchNode2.field2382 = 2;
|
||||||
DirectByteArrayCopier.method3924(true);
|
DirectByteArrayCopier.method3924(true);
|
||||||
|
|||||||
@@ -64,19 +64,19 @@ public class MusicPatchNode2 {
|
|||||||
static void playSong(int var0) {
|
static void playSong(int var0) {
|
||||||
if (var0 == -1 && !Client.field759) {
|
if (var0 == -1 && !Client.field759) {
|
||||||
VertexNormal.method2960();
|
VertexNormal.method2960();
|
||||||
} else if (var0 != -1 && var0 != Client.field666 && Client.musicVolume != 0 && !Client.field759) {
|
} else if (var0 != -1 && var0 != Client.currentTrackGroupId && Client.musicVolume != 0 && !Client.field759) {
|
||||||
Archive var1 = class225.archive6;
|
Archive var1 = class225.archive6;
|
||||||
int var2 = Client.musicVolume;
|
int var2 = Client.musicVolume;
|
||||||
class197.field2386 = 1;
|
class197.field2386 = 1;
|
||||||
class197.musicTrackArchive = var1;
|
class197.musicTrackArchive = var1;
|
||||||
class188.musicTrackGroupId = var0;
|
class188.musicTrackGroupId = var0;
|
||||||
class49.musicTrackFileId = 0;
|
class49.musicTrackFileId = 0;
|
||||||
TileItem.field1223 = var2;
|
TileItem.musicTrackVolume = var2;
|
||||||
WorldMapSectionType.musicTrackBoolean = false;
|
WorldMapSectionType.musicTrackBoolean = false;
|
||||||
field2382 = 2;
|
field2382 = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
Client.field666 = var0;
|
Client.currentTrackGroupId = var0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("ic")
|
@ObfuscatedName("ic")
|
||||||
|
|||||||
@@ -438,16 +438,16 @@ public final class NetSocket extends AbstractSocket implements Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (var3 != Client.musicVolume) {
|
if (var3 != Client.musicVolume) {
|
||||||
if (Client.musicVolume == 0 && Client.field666 != -1) {
|
if (Client.musicVolume == 0 && Client.currentTrackGroupId != -1) {
|
||||||
class83.method2068(class225.archive6, Client.field666, 0, var3, false);
|
class83.playMusicTrack(class225.archive6, Client.currentTrackGroupId, 0, var3, false);
|
||||||
Client.field759 = false;
|
Client.field759 = false;
|
||||||
} else if (var3 == 0) {
|
} else if (var3 == 0) {
|
||||||
VertexNormal.method2960();
|
VertexNormal.method2960();
|
||||||
Client.field759 = false;
|
Client.field759 = false;
|
||||||
} else if (class197.field2386 != 0) {
|
} else if (class197.field2386 != 0) {
|
||||||
TileItem.field1223 = var3;
|
TileItem.musicTrackVolume = var3;
|
||||||
} else {
|
} else {
|
||||||
class49.midiPcmStream.method3760(var3);
|
class49.midiPcmStream.setPcmStreamVolume(var3);
|
||||||
}
|
}
|
||||||
|
|
||||||
Client.musicVolume = var3;
|
Client.musicVolume = var3;
|
||||||
|
|||||||
@@ -17,7 +17,8 @@ public final class TileItem extends Entity {
|
|||||||
@ObfuscatedGetter(
|
@ObfuscatedGetter(
|
||||||
intValue = 1727946021
|
intValue = 1727946021
|
||||||
)
|
)
|
||||||
public static int field1223;
|
@Export("musicTrackVolume")
|
||||||
|
public static int musicTrackVolume;
|
||||||
@ObfuscatedName("z")
|
@ObfuscatedName("z")
|
||||||
@ObfuscatedGetter(
|
@ObfuscatedGetter(
|
||||||
intValue = -1488876063
|
intValue = -1488876063
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ public class UserComparator4 implements Comparator {
|
|||||||
public static void method3349(AbstractArchive var0, String var1, String var2, int var3, boolean var4) {
|
public static void method3349(AbstractArchive var0, String var1, String var2, int var3, boolean var4) {
|
||||||
int var5 = var0.getGroupId(var1);
|
int var5 = var0.getGroupId(var1);
|
||||||
int var6 = var0.getFileId(var5, var2);
|
int var6 = var0.getFileId(var5, var2);
|
||||||
class83.method2068(var0, var5, var6, var3, var4);
|
class83.playMusicTrack(var0, var5, var6, var3, var4);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("ka")
|
@ObfuscatedName("ka")
|
||||||
|
|||||||
@@ -263,7 +263,7 @@ public class WorldMapData_0 extends AbstractWorldMapData {
|
|||||||
class197.musicTrackArchive = var1;
|
class197.musicTrackArchive = var1;
|
||||||
class188.musicTrackGroupId = var6;
|
class188.musicTrackGroupId = var6;
|
||||||
class49.musicTrackFileId = var7;
|
class49.musicTrackFileId = var7;
|
||||||
TileItem.field1223 = var4;
|
TileItem.musicTrackVolume = var4;
|
||||||
WorldMapSectionType.musicTrackBoolean = var5;
|
WorldMapSectionType.musicTrackBoolean = var5;
|
||||||
MusicPatchNode2.field2382 = var0;
|
MusicPatchNode2.field2382 = var0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -107,7 +107,7 @@ public final class WorldMapSprite {
|
|||||||
class197.musicTrackArchive = null;
|
class197.musicTrackArchive = null;
|
||||||
class188.musicTrackGroupId = -1;
|
class188.musicTrackGroupId = -1;
|
||||||
class49.musicTrackFileId = -1;
|
class49.musicTrackFileId = -1;
|
||||||
TileItem.field1223 = 0;
|
TileItem.musicTrackVolume = 0;
|
||||||
WorldMapSectionType.musicTrackBoolean = false;
|
WorldMapSectionType.musicTrackBoolean = false;
|
||||||
MusicPatchNode2.field2382 = 2;
|
MusicPatchNode2.field2382 = 2;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import java.awt.Component;
|
import java.awt.Component;
|
||||||
import java.math.BigInteger;
|
import java.math.BigInteger;
|
||||||
|
import net.runelite.mapping.Export;
|
||||||
import net.runelite.mapping.ObfuscatedGetter;
|
import net.runelite.mapping.ObfuscatedGetter;
|
||||||
import net.runelite.mapping.ObfuscatedName;
|
import net.runelite.mapping.ObfuscatedName;
|
||||||
import net.runelite.mapping.ObfuscatedSignature;
|
import net.runelite.mapping.ObfuscatedSignature;
|
||||||
@@ -37,12 +38,13 @@ public class class83 {
|
|||||||
signature = "(Lhp;IIIZI)V",
|
signature = "(Lhp;IIIZI)V",
|
||||||
garbageValue = "-476776598"
|
garbageValue = "-476776598"
|
||||||
)
|
)
|
||||||
public static void method2068(AbstractArchive var0, int var1, int var2, int var3, boolean var4) {
|
@Export("playMusicTrack")
|
||||||
|
public static void playMusicTrack(AbstractArchive var0, int var1, int var2, int var3, boolean var4) {
|
||||||
class197.field2386 = 1;
|
class197.field2386 = 1;
|
||||||
class197.musicTrackArchive = var0;
|
class197.musicTrackArchive = var0;
|
||||||
class188.musicTrackGroupId = var1;
|
class188.musicTrackGroupId = var1;
|
||||||
class49.musicTrackFileId = var2;
|
class49.musicTrackFileId = var2;
|
||||||
TileItem.field1223 = var3;
|
TileItem.musicTrackVolume = var3;
|
||||||
WorldMapSectionType.musicTrackBoolean = var4;
|
WorldMapSectionType.musicTrackBoolean = var4;
|
||||||
MusicPatchNode2.field2382 = 10000;
|
MusicPatchNode2.field2382 = 10000;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user