Skip to content

Commit 1f7b531

Browse files
chore: removed nametag from people in a murder mystery game
1 parent 0da4c5a commit 1f7b531

1 file changed

Lines changed: 63 additions & 0 deletions

File tree

  • type.murdermysterygame/src/main/java/net/swofty/type/murdermysterygame/game

type.murdermysterygame/src/main/java/net/swofty/type/murdermysterygame/game/Game.java

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import net.minestom.server.coordinate.Pos;
1111
import net.minestom.server.entity.GameMode;
1212
import net.minestom.server.instance.InstanceContainer;
13+
import net.minestom.server.network.packet.server.play.TeamsPacket;
1314
import net.minestom.server.tag.Tag;
1415
import net.minestom.server.timer.TaskSchedule;
1516
import net.swofty.commons.ServerType;
@@ -150,6 +151,7 @@ public void rejoin(MurderMysteryPlayer player) {
150151
GameRole role = roleManager.getRole(player.getUuid());
151152
if (role != null) {
152153
setupPlayerForGame(player, role);
154+
addPlayerToHiddenNametagsTeam(player);
153155
player.setInstance(instanceContainer, getWaitingPosition());
154156
player.sendMessage(Component.text("You have rejoined the game!", NamedTextColor.GREEN));
155157
} else {
@@ -182,6 +184,7 @@ public void startGame() {
182184
murdererReceivedSword = false;
183185

184186
roleManager.assignRoles();
187+
setupHiddenNametags();
185188

186189
for (MurderMysteryPlayer player : players) {
187190
GameRole role = roleManager.getRole(player.getUuid());
@@ -389,6 +392,66 @@ private void setupPlayerForSpectator(MurderMysteryPlayer player) {
389392
player.setFlying(true);
390393
}
391394

395+
private void setupHiddenNametags() {
396+
// Create a team with hidden nametags for all players
397+
List<String> playerNames = players.stream()
398+
.map(MurderMysteryPlayer::getUsername)
399+
.toList();
400+
401+
TeamsPacket createTeamPacket = new TeamsPacket(
402+
"mm_hidden",
403+
new TeamsPacket.CreateTeamAction(
404+
Component.empty(),
405+
(byte) 0x00,
406+
TeamsPacket.NameTagVisibility.NEVER,
407+
TeamsPacket.CollisionRule.ALWAYS,
408+
NamedTextColor.WHITE,
409+
Component.empty(),
410+
Component.empty(),
411+
playerNames
412+
)
413+
);
414+
415+
// Send to all players
416+
for (MurderMysteryPlayer player : players) {
417+
player.sendPacket(createTeamPacket);
418+
}
419+
}
420+
421+
private void addPlayerToHiddenNametagsTeam(MurderMysteryPlayer newPlayer) {
422+
// Send existing team info to the new player
423+
List<String> allPlayerNames = players.stream()
424+
.map(MurderMysteryPlayer::getUsername)
425+
.toList();
426+
427+
TeamsPacket createTeamPacket = new TeamsPacket(
428+
"mm_hidden",
429+
new TeamsPacket.CreateTeamAction(
430+
Component.empty(),
431+
(byte) 0x00,
432+
TeamsPacket.NameTagVisibility.NEVER,
433+
TeamsPacket.CollisionRule.ALWAYS,
434+
NamedTextColor.WHITE,
435+
Component.empty(),
436+
Component.empty(),
437+
allPlayerNames
438+
)
439+
);
440+
newPlayer.sendPacket(createTeamPacket);
441+
442+
// Tell existing players to add the new player to the team
443+
TeamsPacket addPlayerPacket = new TeamsPacket(
444+
"mm_hidden",
445+
new TeamsPacket.AddEntitiesToTeamAction(List.of(newPlayer.getUsername()))
446+
);
447+
448+
for (MurderMysteryPlayer player : players) {
449+
if (!player.equals(newPlayer)) {
450+
player.sendPacket(addPlayerPacket);
451+
}
452+
}
453+
}
454+
392455
private Pos getRandomSpawnPosition() {
393456
var config = mapEntry.getConfiguration();
394457
if (config != null && config.getPlayerSpawns() != null && !config.getPlayerSpawns().isEmpty()) {

0 commit comments

Comments
 (0)