project: music plugin
This commit is contained in:
@@ -37,7 +37,6 @@ import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.Setter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.runelite.api.Actor;
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.api.GameState;
|
||||
@@ -73,7 +72,6 @@ import net.runelite.client.plugins.PluginDescriptor;
|
||||
name = "Music",
|
||||
description = "Adds search and filter for the music list, and additional volume control"
|
||||
)
|
||||
@Slf4j
|
||||
public class MusicPlugin extends Plugin
|
||||
{
|
||||
@Inject
|
||||
@@ -220,7 +218,6 @@ public class MusicPlugin extends Plugin
|
||||
|
||||
private void onVolumeChanged(VolumeChanged volumeChanged)
|
||||
{
|
||||
log.info(volumeChanged.getType().toString());
|
||||
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")
|
||||
public static void rs$changeGameOptions(int var0)
|
||||
{
|
||||
@@ -1798,7 +1816,7 @@ public abstract class RSClientMixin implements RSClient
|
||||
int type = client.getVarpDefinition(var0).getType();
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -449,6 +449,9 @@ public interface RSClient extends RSGameShell, Client
|
||||
@Import("SpriteBuffer_spritePalette")
|
||||
void setIndexedSpritePalette(int[] indexedSpritePalette);
|
||||
|
||||
@Import("archive6")
|
||||
RSAbstractArchive getMusicTracks();
|
||||
|
||||
@Import("archive8")
|
||||
@Override
|
||||
RSAbstractArchive getIndexSprites();
|
||||
@@ -1047,8 +1050,7 @@ public interface RSClient extends RSGameShell, Client
|
||||
int getMusicVolume();
|
||||
|
||||
@Import("musicVolume")
|
||||
@Override
|
||||
void setMusicVolume(int volume);
|
||||
void setClientMusicVolume(int volume);
|
||||
|
||||
@Import("areaSoundEffectVolume")
|
||||
@Override
|
||||
@@ -1066,9 +1068,21 @@ public interface RSClient extends RSGameShell, Client
|
||||
@Override
|
||||
void setSoundEffectVolume(int volume);
|
||||
|
||||
@Import("musicTrackVolume")
|
||||
void setMusicTrackVolume(int volume);
|
||||
|
||||
@Import("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")
|
||||
@Override
|
||||
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(
|
||||
intValue = -910754411
|
||||
)
|
||||
static int field666;
|
||||
@Export("currentTrackGroupId")
|
||||
static int currentTrackGroupId;
|
||||
@ObfuscatedName("mo")
|
||||
@ObfuscatedGetter(
|
||||
intValue = -1946560921
|
||||
@@ -1511,7 +1512,7 @@ public final class Client extends GameShell implements Usernamed {
|
||||
destinationY = 0;
|
||||
minimapState = 0;
|
||||
musicVolume = 255;
|
||||
field666 = -1;
|
||||
currentTrackGroupId = -1;
|
||||
field759 = false;
|
||||
soundEffectVolume = 127;
|
||||
areaSoundEffectVolume = 127;
|
||||
@@ -1653,7 +1654,7 @@ public final class Client extends GameShell implements Usernamed {
|
||||
var5 = 0;
|
||||
}
|
||||
|
||||
class49.midiPcmStream.method3760(var5);
|
||||
class49.midiPcmStream.setPcmStreamVolume(var5);
|
||||
} else {
|
||||
class49.midiPcmStream.clear();
|
||||
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)) {
|
||||
class49.midiPcmStream.clearAll();
|
||||
class49.midiPcmStream.method3760(TileItem.field1223);
|
||||
class49.midiPcmStream.setPcmStreamVolume(TileItem.musicTrackVolume);
|
||||
class49.midiPcmStream.setMusicTrack(class197.musicTrack, WorldMapSectionType.musicTrackBoolean);
|
||||
class197.field2386 = 0;
|
||||
class197.musicTrack = null;
|
||||
|
||||
@@ -705,7 +705,7 @@ public class ClientPacket implements class181 {
|
||||
@Export("playSoundJingle")
|
||||
static void playSoundJingle(int var0, int var1) {
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
@@ -213,10 +213,10 @@ public class DynamicObject extends Entity {
|
||||
class197.musicTrackArchive = null;
|
||||
class188.musicTrackGroupId = -1;
|
||||
class49.musicTrackFileId = -1;
|
||||
TileItem.field1223 = 0;
|
||||
TileItem.musicTrackVolume = 0;
|
||||
WorldMapSectionType.musicTrackBoolean = false;
|
||||
MusicPatchNode2.field2382 = 2;
|
||||
Client.field666 = -1;
|
||||
Client.currentTrackGroupId = -1;
|
||||
Client.field759 = false;
|
||||
ClientPacket.method3581();
|
||||
MouseRecorder.updateGameState(10);
|
||||
|
||||
@@ -151,8 +151,8 @@ public class HealthBarUpdate extends Node {
|
||||
}
|
||||
|
||||
if (!var12) {
|
||||
if (Client.musicVolume != 0 && Client.field666 != -1) {
|
||||
class83.method2068(class225.archive6, Client.field666, 0, Client.musicVolume, false);
|
||||
if (Client.musicVolume != 0 && Client.currentTrackGroupId != -1) {
|
||||
class83.playMusicTrack(class225.archive6, Client.currentTrackGroupId, 0, Client.musicVolume, false);
|
||||
}
|
||||
|
||||
Client.field759 = false;
|
||||
|
||||
@@ -131,7 +131,8 @@ public class MidiPcmStream extends PcmStream {
|
||||
signature = "(II)V",
|
||||
garbageValue = "-1812413582"
|
||||
)
|
||||
public synchronized void method3760(int var1) {
|
||||
@Export("setPcmStreamVolume")
|
||||
public synchronized void setPcmStreamVolume(int var1) {
|
||||
this.field2393 = var1;
|
||||
}
|
||||
|
||||
|
||||
@@ -205,7 +205,7 @@ public class MouseRecorder implements Runnable {
|
||||
class197.musicTrackArchive = null;
|
||||
class188.musicTrackGroupId = -1;
|
||||
class49.musicTrackFileId = -1;
|
||||
TileItem.field1223 = 0;
|
||||
TileItem.musicTrackVolume = 0;
|
||||
WorldMapSectionType.musicTrackBoolean = false;
|
||||
MusicPatchNode2.field2382 = 2;
|
||||
DirectByteArrayCopier.method3924(true);
|
||||
|
||||
@@ -64,19 +64,19 @@ public class MusicPatchNode2 {
|
||||
static void playSong(int var0) {
|
||||
if (var0 == -1 && !Client.field759) {
|
||||
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;
|
||||
int var2 = Client.musicVolume;
|
||||
class197.field2386 = 1;
|
||||
class197.musicTrackArchive = var1;
|
||||
class188.musicTrackGroupId = var0;
|
||||
class49.musicTrackFileId = 0;
|
||||
TileItem.field1223 = var2;
|
||||
TileItem.musicTrackVolume = var2;
|
||||
WorldMapSectionType.musicTrackBoolean = false;
|
||||
field2382 = 2;
|
||||
}
|
||||
|
||||
Client.field666 = var0;
|
||||
Client.currentTrackGroupId = var0;
|
||||
}
|
||||
|
||||
@ObfuscatedName("ic")
|
||||
|
||||
@@ -438,16 +438,16 @@ public final class NetSocket extends AbstractSocket implements Runnable {
|
||||
}
|
||||
|
||||
if (var3 != Client.musicVolume) {
|
||||
if (Client.musicVolume == 0 && Client.field666 != -1) {
|
||||
class83.method2068(class225.archive6, Client.field666, 0, var3, false);
|
||||
if (Client.musicVolume == 0 && Client.currentTrackGroupId != -1) {
|
||||
class83.playMusicTrack(class225.archive6, Client.currentTrackGroupId, 0, var3, false);
|
||||
Client.field759 = false;
|
||||
} else if (var3 == 0) {
|
||||
VertexNormal.method2960();
|
||||
Client.field759 = false;
|
||||
} else if (class197.field2386 != 0) {
|
||||
TileItem.field1223 = var3;
|
||||
TileItem.musicTrackVolume = var3;
|
||||
} else {
|
||||
class49.midiPcmStream.method3760(var3);
|
||||
class49.midiPcmStream.setPcmStreamVolume(var3);
|
||||
}
|
||||
|
||||
Client.musicVolume = var3;
|
||||
|
||||
@@ -17,7 +17,8 @@ public final class TileItem extends Entity {
|
||||
@ObfuscatedGetter(
|
||||
intValue = 1727946021
|
||||
)
|
||||
public static int field1223;
|
||||
@Export("musicTrackVolume")
|
||||
public static int musicTrackVolume;
|
||||
@ObfuscatedName("z")
|
||||
@ObfuscatedGetter(
|
||||
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) {
|
||||
int var5 = var0.getGroupId(var1);
|
||||
int var6 = var0.getFileId(var5, var2);
|
||||
class83.method2068(var0, var5, var6, var3, var4);
|
||||
class83.playMusicTrack(var0, var5, var6, var3, var4);
|
||||
}
|
||||
|
||||
@ObfuscatedName("ka")
|
||||
|
||||
@@ -263,7 +263,7 @@ public class WorldMapData_0 extends AbstractWorldMapData {
|
||||
class197.musicTrackArchive = var1;
|
||||
class188.musicTrackGroupId = var6;
|
||||
class49.musicTrackFileId = var7;
|
||||
TileItem.field1223 = var4;
|
||||
TileItem.musicTrackVolume = var4;
|
||||
WorldMapSectionType.musicTrackBoolean = var5;
|
||||
MusicPatchNode2.field2382 = var0;
|
||||
}
|
||||
|
||||
@@ -107,7 +107,7 @@ public final class WorldMapSprite {
|
||||
class197.musicTrackArchive = null;
|
||||
class188.musicTrackGroupId = -1;
|
||||
class49.musicTrackFileId = -1;
|
||||
TileItem.field1223 = 0;
|
||||
TileItem.musicTrackVolume = 0;
|
||||
WorldMapSectionType.musicTrackBoolean = false;
|
||||
MusicPatchNode2.field2382 = 2;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import java.awt.Component;
|
||||
import java.math.BigInteger;
|
||||
import net.runelite.mapping.Export;
|
||||
import net.runelite.mapping.ObfuscatedGetter;
|
||||
import net.runelite.mapping.ObfuscatedName;
|
||||
import net.runelite.mapping.ObfuscatedSignature;
|
||||
@@ -37,12 +38,13 @@ public class class83 {
|
||||
signature = "(Lhp;IIIZI)V",
|
||||
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.musicTrackArchive = var0;
|
||||
class188.musicTrackGroupId = var1;
|
||||
class49.musicTrackFileId = var2;
|
||||
TileItem.field1223 = var3;
|
||||
TileItem.musicTrackVolume = var3;
|
||||
WorldMapSectionType.musicTrackBoolean = var4;
|
||||
MusicPatchNode2.field2382 = 10000;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user