Fixed invisible players for joining players by sending custom packets

This commit is contained in:
2023-11-26 18:19:03 +01:00
parent 440d4f1b48
commit 8b47eb1139
8 changed files with 83 additions and 32 deletions

View File

@@ -15,7 +15,7 @@ public class MoveInstance {
playerList.forEach(player -> move(player, destination));
}
public static void move(Entity p, Spawnable destination) {
p.setInstance((Instance) destination, destination.getSpawn());
if(p.getInstance() != destination) p.setInstance((Instance) destination, destination.getSpawn());
}
public static void forceCloseInstance(InstanceContainer instance) {

View File

@@ -0,0 +1,40 @@
package eu.mhsl.minenet.minigames.util;
import net.minestom.server.MinecraftServer;
import net.minestom.server.entity.GameMode;
import net.minestom.server.entity.Player;
import net.minestom.server.entity.PlayerSkin;
import net.minestom.server.network.packet.server.play.PlayerInfoUpdatePacket;
import net.minestom.server.network.packet.server.play.SpawnPlayerPacket;
import java.util.List;
public class PacketUtil {
public static void resendPlayerList(Player p) {
MinecraftServer.getConnectionManager().getOnlinePlayers().forEach(player -> {
if(player.getUuid().equals(p.getUuid())) return;
final PlayerSkin skin = player.getSkin();
List<PlayerInfoUpdatePacket.Property> properties =
skin != null ? List.of(new PlayerInfoUpdatePacket.Property("textures", skin.textures(), skin.signature())) : List.of();
p.sendPacket(
new PlayerInfoUpdatePacket(PlayerInfoUpdatePacket.Action.ADD_PLAYER,
new PlayerInfoUpdatePacket.Entry(
player.getUuid(),
player.getUsername(),
properties,
true,
0,
GameMode.SURVIVAL,
null,
null
)
)
);
p.sendPacket(
new SpawnPlayerPacket(player.getEntityId(), player.getUuid(), player.getPosition())
);
});
}
}