Skip to content

Commit f429776

Browse files
Fix queue xp sound
1 parent c2be3e7 commit f429776

3 files changed

Lines changed: 33 additions & 8 deletions

File tree

src/main/java/net/pistonmaster/pistonqueue/bukkit/PistonQueueBukkit.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,4 +103,9 @@ public void onEnable() {
103103
getServer().getPluginManager().registerEvents(new ServerListener(this), this);
104104
getServer().getMessenger().registerIncomingPluginChannel(this, "piston:queue", new QueuePluginMessageListener(this));
105105
}
106+
107+
@Override
108+
public void onDisable() {
109+
this.getServer().getMessenger().unregisterOutgoingPluginChannel(this);
110+
}
106111
}

src/main/java/net/pistonmaster/pistonqueue/bukkit/QueuePluginMessageListener.java

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,20 +27,40 @@
2727
import org.bukkit.plugin.messaging.PluginMessageListener;
2828
import org.jetbrains.annotations.NotNull;
2929

30+
import java.util.ArrayList;
31+
import java.util.List;
32+
import java.util.UUID;
33+
3034
@RequiredArgsConstructor
3135
public final class QueuePluginMessageListener implements PluginMessageListener {
3236
private final PistonQueueBukkit plugin;
3337

34-
@SuppressWarnings("UnstableApiUsage")
3538
@Override
39+
@SuppressWarnings("UnstableApiUsage")
3640
public void onPluginMessageReceived(@NotNull String channel, @NotNull Player player, byte[] message) {
3741
if (!channel.equals("piston:queue")) return;
3842

3943
ByteArrayDataInput in = ByteStreams.newDataInput(message);
4044
String subChannel = in.readUTF();
4145

4246
if (plugin.isPlayXP() && subChannel.equals("xp")) {
43-
player.playSound(player.getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 100.0F, 1.0F);
47+
List<String> uuids = new ArrayList<>();
48+
while (true) {
49+
try {
50+
uuids.add(in.readUTF());
51+
} catch (Exception e) {
52+
break;
53+
}
54+
}
55+
56+
for (String uuid : uuids) {
57+
Player p = plugin.getServer().getPlayer(UUID.fromString(uuid));
58+
59+
if (p == null)
60+
continue;
61+
62+
p.playSound(p.getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 100.0F, 1.0F);
63+
}
4464
}
4565
}
4666
}

src/main/java/net/pistonmaster/pistonqueue/shared/QueueListenerShared.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -254,9 +254,6 @@ protected void connectPlayer(QueueType type) {
254254

255255
type.getQueueMap().remove(entry.getKey());
256256

257-
if (Config.SEND_XP_SOUND)
258-
sendXPSoundToQueueType(type);
259-
260257
player.get().sendMessage(Config.JOINING_MAIN_SERVER);
261258
player.get().sendPlayerListHeaderAndFooter(null, null);
262259

@@ -280,6 +277,8 @@ protected void connectPlayer(QueueType type) {
280277

281278
player.get().connect(entry.getValue());
282279
}
280+
if (Config.SEND_XP_SOUND)
281+
sendXPSoundToQueueType(type);
283282
}
284283

285284
protected void sendXPSoundToQueueType(QueueType type) {
@@ -290,11 +289,12 @@ protected void sendXPSoundToQueueType(QueueType type) {
290289
AtomicInteger counter = new AtomicInteger(0);
291290
type.getQueueMap().forEach((uuid, server) -> {
292291
if (counter.incrementAndGet() <= 5) {
293-
plugin.getPlayer(uuid).flatMap(playerWrapper ->
294-
playerWrapper.getCurrentServer().flatMap(plugin::getServer)).ifPresent(serverWrapper ->
295-
serverWrapper.sendPluginMessage("piston:queue", out.toByteArray()));
292+
out.writeUTF(uuid.toString());
296293
}
297294
});
295+
296+
plugin.getServer(Config.QUEUE_SERVER).ifPresent(server ->
297+
server.sendPluginMessage("piston:queue", out.toByteArray()));
298298
}
299299

300300
protected void indexPositionTime() {

0 commit comments

Comments
 (0)