Fix real-time updates being sent to non-ready players

This commit is contained in:
s809
2024-09-29 22:45:36 +05:00
parent 7f0c42396b
commit f9d008ef78
3 changed files with 5 additions and 2 deletions
@@ -413,7 +413,7 @@ public abstract class AbstractDhServerLevel extends AbstractDhLevel implements I
CompletableFuture.runAsync(() ->
{
FullDataPayload payload = new FullDataPayload(data);
for (ServerPlayerState serverPlayerState : this.serverPlayerStateManager.getConnectedPlayers())
for (ServerPlayerState serverPlayerState : this.serverPlayerStateManager.getReadyPlayers())
{
if (serverPlayerState.getServerPlayer().getLevel() != this.serverLevelWrapper)
{
@@ -32,6 +32,7 @@ public class ServerPlayerState implements Closeable
@NotNull
public final SessionConfig sessionConfig = new SessionConfig();
public boolean isReady() { return this.sessionConfig.constrainingConfig != null; }
private final ConcurrentHashMap<AbstractDhServerLevel, RateLimiterSet> rateLimiterSets = new ConcurrentHashMap<>();
public RateLimiterSet getRateLimiterSet(AbstractDhServerLevel level) { return this.rateLimiterSets.computeIfAbsent(level, ignored -> new RateLimiterSet()); }
@@ -4,6 +4,7 @@ import com.seibel.distanthorizons.core.network.messages.AbstractNetworkMessage;
import com.seibel.distanthorizons.core.wrapperInterfaces.misc.IServerPlayerWrapper;
import org.jetbrains.annotations.Nullable;
import java.util.Collection;
import java.util.Queue;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentLinkedQueue;
@@ -80,7 +81,8 @@ public class ServerPlayerStateManager
@Nullable
public ServerPlayerState getConnectedPlayer(IServerPlayerWrapper player) { return this.connectedPlayerStateByPlayerWrapper.get(player); }
public Iterable<ServerPlayerState> getConnectedPlayers() { return this.connectedPlayerStateByPlayerWrapper.values(); }
public Collection<ServerPlayerState> getConnectedPlayers() { return this.connectedPlayerStateByPlayerWrapper.values(); }
public Iterable<ServerPlayerState> getReadyPlayers() { return this.getConnectedPlayers().stream().filter(ServerPlayerState::isReady)::iterator; }
private static class MessageQueueState