mirror of https://github.com/Minestom/Minestom.git
Change default tab implementation to show all online players
This commit is contained in:
parent
3924d2c0a2
commit
fd08cabb6a
|
@ -306,7 +306,7 @@ public class Entity implements Viewable, Tickable, TagHandler, PermissionHandler
|
|||
}
|
||||
|
||||
protected boolean addViewer0(@NotNull Player player) {
|
||||
if (!this.viewers.add(player)) {
|
||||
if (player == this || !this.viewers.add(player)) {
|
||||
return false;
|
||||
}
|
||||
player.viewableEntities.add(this);
|
||||
|
@ -334,7 +334,7 @@ public class Entity implements Viewable, Tickable, TagHandler, PermissionHandler
|
|||
}
|
||||
|
||||
protected boolean removeViewer0(@NotNull Player player) {
|
||||
if (!viewers.remove(player)) {
|
||||
if (player == this || !viewers.remove(player)) {
|
||||
return false;
|
||||
}
|
||||
player.getPlayerConnection().sendPacket(new DestroyEntitiesPacket(getEntityId()));
|
||||
|
|
|
@ -241,7 +241,10 @@ public class Player extends LivingEntity implements CommandSender, Localizable,
|
|||
EventDispatcher.call(skinInitEvent);
|
||||
this.skin = skinInitEvent.getSkin();
|
||||
// FIXME: when using Geyser, this line remove the skin of the client
|
||||
playerConnection.sendPacket(getAddPlayerToList());
|
||||
PacketUtils.broadcastPacket(getAddPlayerToList());
|
||||
for (var player : MinecraftServer.getConnectionManager().getOnlinePlayers()) {
|
||||
this.playerConnection.sendPacket(player.getAddPlayerToList());
|
||||
}
|
||||
|
||||
// Commands start
|
||||
{
|
||||
|
@ -429,11 +432,6 @@ public class Player extends LivingEntity implements CommandSender, Localizable,
|
|||
teleport(respawnEvent.getRespawnPosition()).thenRun(this::refreshAfterTeleport);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void spawn() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOnGround() {
|
||||
return onGround;
|
||||
|
@ -462,16 +460,8 @@ public class Player extends LivingEntity implements CommandSender, Localizable,
|
|||
this.viewableEntities.forEach(entity -> entity.removeViewer(this));
|
||||
// Clear all viewable chunks
|
||||
this.viewableChunks.forEach(chunk -> chunk.removeViewer(this));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean addViewer0(@NotNull Player player) {
|
||||
if (player == this) {
|
||||
return false;
|
||||
}
|
||||
PlayerConnection viewerConnection = player.getPlayerConnection();
|
||||
viewerConnection.sendPacket(getAddPlayerToList());
|
||||
return super.addViewer0(player);
|
||||
// Remove from the tab-list
|
||||
PacketUtils.broadcastPacket(getRemovePlayerToList());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -479,13 +469,9 @@ public class Player extends LivingEntity implements CommandSender, Localizable,
|
|||
if (player == this || !super.removeViewer0(player)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
PlayerConnection viewerConnection = player.getPlayerConnection();
|
||||
viewerConnection.sendPacket(getRemovePlayerToList());
|
||||
|
||||
// Team
|
||||
if (this.getTeam() != null && this.getTeam().getMembers().size() == 1) {// If team only contains "this" player
|
||||
viewerConnection.sendPacket(this.getTeam().createTeamDestructionPacket());
|
||||
player.getPlayerConnection().sendPacket(this.getTeam().createTeamDestructionPacket());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -15,8 +15,8 @@ import net.minestom.server.network.packet.client.login.LoginStartPacket;
|
|||
import net.minestom.server.network.packet.server.login.LoginSuccessPacket;
|
||||
import net.minestom.server.network.packet.server.play.DisconnectPacket;
|
||||
import net.minestom.server.network.packet.server.play.KeepAlivePacket;
|
||||
import net.minestom.server.network.player.PlayerSocketConnection;
|
||||
import net.minestom.server.network.player.PlayerConnection;
|
||||
import net.minestom.server.network.player.PlayerSocketConnection;
|
||||
import net.minestom.server.utils.StringUtils;
|
||||
import net.minestom.server.utils.async.AsyncUtils;
|
||||
import net.minestom.server.utils.validate.Check;
|
||||
|
@ -373,11 +373,12 @@ public final class ConnectionManager {
|
|||
final Instance spawningInstance = loginEvent.getSpawningInstance();
|
||||
|
||||
Check.notNull(spawningInstance, "You need to specify a spawning instance in the PlayerLoginEvent");
|
||||
|
||||
waitingPlayer.UNSAFE_init(spawningInstance);
|
||||
|
||||
// Spawn the player at Player#getRespawnPoint during the next instance tick
|
||||
spawningInstance.scheduleNextTick(waitingPlayer::setInstance);
|
||||
Player finalWaitingPlayer = waitingPlayer;
|
||||
spawningInstance.scheduleNextTick(instance -> {
|
||||
finalWaitingPlayer.UNSAFE_init(spawningInstance);
|
||||
finalWaitingPlayer.setInstance(spawningInstance);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -10,8 +10,8 @@ import net.minestom.server.listener.manager.PacketListenerManager;
|
|||
import net.minestom.server.network.packet.FramedPacket;
|
||||
import net.minestom.server.network.packet.server.ComponentHoldingServerPacket;
|
||||
import net.minestom.server.network.packet.server.ServerPacket;
|
||||
import net.minestom.server.network.player.PlayerSocketConnection;
|
||||
import net.minestom.server.network.player.PlayerConnection;
|
||||
import net.minestom.server.network.player.PlayerSocketConnection;
|
||||
import net.minestom.server.network.socket.Server;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import net.minestom.server.utils.callback.validator.PlayerValidator;
|
||||
|
@ -122,6 +122,10 @@ public final class PacketUtils {
|
|||
sendGroupedPacket(players, packet, player -> true);
|
||||
}
|
||||
|
||||
public static void broadcastPacket(@NotNull ServerPacket packet) {
|
||||
sendGroupedPacket(MinecraftServer.getConnectionManager().getOnlinePlayers(), packet);
|
||||
}
|
||||
|
||||
public static void writeFramedPacket(@NotNull ByteBuffer buffer,
|
||||
@NotNull ServerPacket packet,
|
||||
boolean compression) {
|
||||
|
|
Loading…
Reference in New Issue