Remove any tracked bossbars when a client switches servers.
This commit is contained in:
@@ -1,13 +1,12 @@
|
||||
package net.md_5.bungee;
|
||||
|
||||
import com.google.common.base.Objects;
|
||||
import com.google.common.base.Preconditions;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.ByteBufAllocator;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Queue;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import net.md_5.bungee.api.ChatColor;
|
||||
@@ -31,7 +30,7 @@ import net.md_5.bungee.netty.HandlerBoss;
|
||||
import net.md_5.bungee.netty.PacketHandler;
|
||||
import net.md_5.bungee.protocol.DefinedPacket;
|
||||
import net.md_5.bungee.protocol.Protocol;
|
||||
import net.md_5.bungee.protocol.ProtocolConstants;
|
||||
import net.md_5.bungee.protocol.packet.BossBar;
|
||||
import net.md_5.bungee.protocol.packet.EncryptionRequest;
|
||||
import net.md_5.bungee.protocol.packet.Handshake;
|
||||
import net.md_5.bungee.protocol.packet.Kick;
|
||||
@@ -218,6 +217,13 @@ public class ServerConnector extends PacketHandler
|
||||
}
|
||||
serverScoreboard.clear();
|
||||
|
||||
for ( UUID bossbar : user.getSentBossBars() )
|
||||
{
|
||||
// Send remove bossbar packet
|
||||
user.unsafe().sendPacket( new net.md_5.bungee.protocol.packet.BossBar( bossbar, 1 ) );
|
||||
}
|
||||
user.getSentBossBars().clear();
|
||||
|
||||
user.sendDimensionSwitch();
|
||||
|
||||
user.setServerEntityId( login.getEntityId() );
|
||||
|
@@ -11,6 +11,7 @@ import io.netty.channel.ChannelInitializer;
|
||||
import io.netty.channel.ChannelOption;
|
||||
import io.netty.util.internal.PlatformDependent;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
@@ -124,6 +125,8 @@ public final class UserConnection implements ProxiedPlayer
|
||||
private ClientSettings settings;
|
||||
@Getter
|
||||
private final Scoreboard serverSentScoreboard = new Scoreboard();
|
||||
@Getter
|
||||
private final Collection<UUID> sentBossBars = new HashSet<>();
|
||||
/*========================================================================*/
|
||||
@Getter
|
||||
private String displayName;
|
||||
|
@@ -29,7 +29,7 @@ import net.md_5.bungee.netty.ChannelWrapper;
|
||||
import net.md_5.bungee.netty.PacketHandler;
|
||||
import net.md_5.bungee.protocol.DefinedPacket;
|
||||
import net.md_5.bungee.protocol.PacketWrapper;
|
||||
import net.md_5.bungee.protocol.ProtocolConstants;
|
||||
import net.md_5.bungee.protocol.packet.BossBar;
|
||||
import net.md_5.bungee.protocol.packet.KeepAlive;
|
||||
import net.md_5.bungee.protocol.packet.PlayerListItem;
|
||||
import net.md_5.bungee.protocol.packet.ScoreboardObjective;
|
||||
@@ -484,6 +484,22 @@ public class DownstreamBridge extends PacketHandler
|
||||
throw CancelSendSignal.INSTANCE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(BossBar bossBar)
|
||||
{
|
||||
switch ( bossBar.getAction() )
|
||||
{
|
||||
// Handle add bossbar
|
||||
case 0:
|
||||
con.getSentBossBars().add( bossBar.getUuid() );
|
||||
break;
|
||||
// Handle remove bossbar
|
||||
case 1:
|
||||
con.getSentBossBars().remove( bossBar.getUuid() );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
|
Reference in New Issue
Block a user