Skip to content

Commit 8ac7866

Browse files
authored
Merge pull request #363 from Mindgamesnl/feature/proxy-update-volume-clientstate
WIP: Update the clientstate from the proxy on volume change
2 parents bfba011 + 9bbef4b commit 8ac7866

File tree

5 files changed

+31
-9
lines changed

5 files changed

+31
-9
lines changed

plugin/src/main/java/com/craftmend/openaudiomc/generic/networking/handlers/ClientChangedVolumeHandler.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,30 @@
11
package com.craftmend.openaudiomc.generic.networking.handlers;
22

3+
import com.craftmend.openaudiomc.OpenAudioMc;
34
import com.craftmend.openaudiomc.generic.networking.abstracts.PayloadHandler;
45
import com.craftmend.openaudiomc.generic.client.objects.ClientConnection;
56
import com.craftmend.openaudiomc.generic.networking.interfaces.Authenticatable;
67
import com.craftmend.openaudiomc.generic.networking.payloads.in.ClientChangedVolumePayload;
8+
import com.craftmend.openaudiomc.generic.node.packets.ClientUpdateStatePacket;
9+
import com.craftmend.openaudiomc.generic.platform.Platform;
10+
import com.craftmend.openaudiomc.generic.proxy.interfaces.UserHooks;
711

812
public class ClientChangedVolumeHandler extends PayloadHandler<ClientChangedVolumePayload> {
913

1014
@Override
1115
public void onReceive(ClientChangedVolumePayload payload) {
1216
Authenticatable authenticatable = findSession(payload.getClient());
1317
if (authenticatable instanceof ClientConnection) {
14-
((ClientConnection) authenticatable).getSession().setVolume(payload.getVolume());
18+
ClientConnection connection = ((ClientConnection) authenticatable);
19+
connection.getSession().setVolume(payload.getVolume());
20+
21+
// are we running in spigot? if not then we should forward this as a state change
22+
if (OpenAudioMc.getInstance().getPlatform() != Platform.SPIGOT) {
23+
UserHooks hooks = OpenAudioMc.getInstance().getInvoker().getUserHooks();
24+
hooks.sendPacket(connection.getUser(),
25+
ClientUpdateStatePacket.of(connection)
26+
);
27+
}
1528
} else {
1629
// you don't even have volume
1730
authenticatable.kickConnection();

plugin/src/main/java/com/craftmend/openaudiomc/generic/networking/handlers/ClientInitializedRtcHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ private void handleState(ClientConnection cc, ClientOpenedRtcPayload payload) {
8282

8383
private void broadcastRtcUpdate(User player, boolean isConnected, boolean isMicOn, String streamKey, ClientConnection cc) {
8484
// am I a proxy thingy? then send it to my other thingy
85-
ClientUpdateStatePacket clientUpdateRtcStatePacket = new ClientUpdateStatePacket(player.getUniqueId(), streamKey, isConnected, isMicOn, cc.getAuth().getStaticToken());
85+
ClientUpdateStatePacket clientUpdateRtcStatePacket = new ClientUpdateStatePacket(player.getUniqueId(), streamKey, isConnected, isMicOn, cc.getAuth().getStaticToken(), cc.getVolume());
8686
// sends an update to the server, or nothing if its just spigot
8787
OpenAudioMc.resolveDependency(UserHooks.class).sendPacket(player, clientUpdateRtcStatePacket);
8888
}

plugin/src/main/java/com/craftmend/openaudiomc/generic/node/packets/ClientUpdateStatePacket.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.craftmend.openaudiomc.generic.node.packets;
22

33
import com.craftmend.openaudiomc.OpenAudioMc;
4+
import com.craftmend.openaudiomc.generic.client.objects.ClientConnection;
45
import com.craftmend.openaudiomc.generic.proxy.messages.PacketWriter;
56
import com.craftmend.openaudiomc.generic.proxy.messages.StandardPacket;
67
import lombok.AllArgsConstructor;
@@ -21,6 +22,7 @@ public class ClientUpdateStatePacket extends StandardPacket {
2122
private boolean enabled;
2223
private boolean microphoneEnabled;
2324
private String explodedToken;
25+
private int volume;
2426

2527
public void handle(DataInputStream dataInputStream) throws IOException {
2628
ClientUpdateStatePacket self = OpenAudioMc.getGson().fromJson(dataInputStream.readUTF(), ClientUpdateStatePacket.class);
@@ -29,6 +31,18 @@ public void handle(DataInputStream dataInputStream) throws IOException {
2931
this.enabled = self.isEnabled();
3032
this.microphoneEnabled = self.isMicrophoneEnabled();
3133
this.explodedToken = self.getExplodedToken();
34+
this.volume = self.getVolume();
35+
}
36+
37+
public static ClientUpdateStatePacket of(ClientConnection cc) {
38+
return new ClientUpdateStatePacket(
39+
cc.getOwner().getUniqueId(),
40+
cc.getRtcSessionManager().getStreamKey(),
41+
cc.getSession().isConnectedToRtc(),
42+
cc.getRtcSessionManager().isMicrophoneEnabled(),
43+
cc.getAuth().getStaticToken(),
44+
cc.getSession().getVolume()
45+
);
3246
}
3347

3448
public PacketWriter write() throws IOException {

plugin/src/main/java/com/craftmend/openaudiomc/generic/proxy/ProxyHostService.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -60,13 +60,7 @@ public void onServerSwitch(User user, ProxyNode from, ProxyNode to) {
6060

6161
if (OpenAudioMc.getService(OpenaudioAccountService.class).is(CraftmendTag.VOICECHAT)) {
6262
this.userHooks.sendPacket(user,
63-
new ClientUpdateStatePacket(
64-
user.getUniqueId(),
65-
connection.getRtcSessionManager().getStreamKey(),
66-
connection.getSession().isConnectedToRtc(),
67-
connection.getRtcSessionManager().isMicrophoneEnabled(),
68-
connection.getAuth().getStaticToken()
69-
)
63+
ClientUpdateStatePacket.of(connection)
7064
);
7165
}
7266

plugin/src/main/java/com/craftmend/openaudiomc/spigot/modules/proxy/listeners/BukkitPacketListener.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ public void onStateSync(User user, ClientUpdateStatePacket packet) {
6161
connection.getRtcSessionManager().setMicrophoneEnabled(packet.isMicrophoneEnabled());
6262
connection.getRtcSessionManager().setStreamKey(packet.getStreamId());
6363
connection.getSession().setConnectedToRtc(packet.isEnabled());
64+
connection.getSession().setVolume(packet.getVolume());
6465

6566
connection.setAuth(new ClientAuth(connection, packet.getExplodedToken(), packet.getExplodedToken()));
6667

0 commit comments

Comments
 (0)