first commit
Build AsminVoicechat / prepare-release (push) Successful in 14s
Build AsminVoicechat / build-and-test (17) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (18) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (19) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (20) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (21) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (22) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (23) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (24) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (25) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (26) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (27-ea) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (16) (push) Canceled after 38s

This commit is contained in:
asminme committed 2026-10-24 15:18:03 +02:00
commit bbccd4a815
454 files changed
+45050

No files matched your search

@@ -0,0 +1,155 @@
/*
* Decompiled with CFR 0.152.
*
* Could not load the following classes:
* javax.annotation.Nullable
* org.bukkit.Bukkit
* org.bukkit.entity.Player
* org.bukkit.event.Listener
* org.bukkit.event.player.PlayerJoinEvent
* org.bukkit.event.player.PlayerQuitEvent
*/
package de.maxhenkel.voicechat.voice.server;
import de.maxhenkel.voicechat.Voicechat;
import de.maxhenkel.voicechat.compatibility.PlayerHideEvent;
import de.maxhenkel.voicechat.compatibility.PlayerShowEvent;
import de.maxhenkel.voicechat.net.NetManager;
import de.maxhenkel.voicechat.net.PlayerStatePacket;
import de.maxhenkel.voicechat.net.PlayerStatesPacket;
import de.maxhenkel.voicechat.net.RemovePlayerStatePacket;
import de.maxhenkel.voicechat.net.UpdateStatePacket;
import de.maxhenkel.voicechat.plugins.PluginManager;
import de.maxhenkel.voicechat.voice.common.PlayerState;
import java.util.ArrayList;
import java.util.Collection;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import javax.annotation.Nullable;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
public class PlayerStateManager
implements Listener {
private final ConcurrentHashMap<UUID, PlayerState> states = new ConcurrentHashMap();
public void onUpdateStatePacket(Player player, UpdateStatePacket packet) {
PlayerState state = this.states.get(player.getUniqueId());
if (state == null) {
state = PlayerStateManager.defaultDisconnectedState(player);
}
state.setDisabled(packet.isDisabled());
this.states.put(player.getUniqueId(), state);
this.broadcastState(player, state);
Voicechat.LOGGER.debug("Got state of {}: {}", player.getName(), state);
}
public void onPlayerQuit(PlayerQuitEvent event) {
this.states.remove(event.getPlayer().getUniqueId());
this.broadcastRemoveState(event.getPlayer());
Voicechat.LOGGER.debug("Removing state of {}", event.getPlayer().getName());
}
public void onPlayerJoin(PlayerJoinEvent event) {
PlayerState state = PlayerStateManager.defaultDisconnectedState(event.getPlayer());
this.states.put(event.getPlayer().getUniqueId(), state);
this.broadcastState(event.getPlayer(), state);
Voicechat.LOGGER.debug("Setting default state of {}: {}", event.getPlayer().getName(), state);
}
public void onPlayerHide(PlayerHideEvent event) {
RemovePlayerStatePacket packet = new RemovePlayerStatePacket(event.getHiddenPlayer().getUniqueId());
NetManager.sendToClient(event.getObserver(), packet);
Voicechat.LOGGER.debug("Removing state of {} for {}", event.getHiddenPlayer().getName(), event.getObserver().getName());
}
public void onPlayerShow(PlayerShowEvent event) {
PlayerState state = this.states.get(event.getShownPlayer().getUniqueId());
if (state == null) {
state = PlayerStateManager.defaultDisconnectedState(event.getShownPlayer());
}
PlayerStatePacket packet = new PlayerStatePacket(state);
NetManager.sendToClient(event.getObserver(), packet);
Voicechat.LOGGER.debug("Sending state of {} to {}", event.getShownPlayer().getName(), event.getObserver().getName());
}
public void broadcastState(@Nullable Player stateOwner, PlayerState state) {
PlayerStatePacket packet = new PlayerStatePacket(state);
for (Player receiver : Voicechat.INSTANCE.getServer().getOnlinePlayers()) {
if (stateOwner != null && !Voicechat.compatibility.canSee(receiver, stateOwner)) continue;
NetManager.sendToClient(receiver, packet);
}
PluginManager.instance().onPlayerStateChanged(state);
}
public void broadcastRemoveState(Player stateOwner) {
RemovePlayerStatePacket packet = new RemovePlayerStatePacket(stateOwner.getUniqueId());
for (Player receiver : Voicechat.INSTANCE.getServer().getOnlinePlayers()) {
NetManager.sendToClient(receiver, packet);
}
PluginManager.instance().onPlayerStateChanged(PlayerStateManager.defaultDisconnectedState(stateOwner));
}
public void onPlayerCompatibilityCheckSucceeded(Player player) {
ArrayList<PlayerState> stateList = new ArrayList<PlayerState>(this.states.size());
for (PlayerState state : this.states.values()) {
Player otherPlayer = Voicechat.INSTANCE.getServer().getPlayer(state.getUuid());
if (otherPlayer == null || !Voicechat.compatibility.canSee(player, otherPlayer)) continue;
stateList.add(state);
}
PlayerStatesPacket packet = new PlayerStatesPacket(stateList);
NetManager.sendToClient(player, packet);
Voicechat.LOGGER.debug("Sending initial states to {}", player.getName());
}
public void onPlayerVoicechatDisconnect(UUID uuid) {
PlayerState state = this.states.get(uuid);
if (state == null) {
return;
}
state.setDisconnected(true);
Player player = Bukkit.getPlayer((UUID)uuid);
this.broadcastState(player, state);
Voicechat.LOGGER.debug("Set state of {} to disconnected: {}", uuid, state);
}
public void onPlayerVoicechatConnect(Player player) {
PlayerState state = this.states.get(player.getUniqueId());
if (state == null) {
state = PlayerStateManager.defaultDisconnectedState(player);
}
state.setDisconnected(false);
this.states.put(player.getUniqueId(), state);
this.broadcastState(player, state);
Voicechat.LOGGER.debug("Set state of {} to connected: {}", player.getName(), state);
}
@Nullable
public PlayerState getState(UUID playerUUID) {
return this.states.get(playerUUID);
}
public static PlayerState defaultDisconnectedState(Player player) {
return new PlayerState(player.getUniqueId(), player.getName(), false, true);
}
public void setGroup(Player player, @Nullable UUID group) {
PlayerState state = this.states.get(player.getUniqueId());
if (state == null) {
state = PlayerStateManager.defaultDisconnectedState(player);
Voicechat.LOGGER.debug("Defaulting to default state for {}: {}", player.getName(), state);
}
state.setGroup(group);
this.states.put(player.getUniqueId(), state);
this.broadcastState(player, state);
Voicechat.LOGGER.debug("Setting group of {}: {}", player.getName(), state);
}
public Collection<PlayerState> getStates() {
return this.states.values();
}
}