Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ public void registerPackets() {
final TrackedEntity trackedEntity = tracker(wrapper.user()).entity(entityId);

trackedEntity.put(mannequinData);
sendInitialPlayerInfoUpdate(wrapper.user(), mannequinData, new GameProfile.Property[0]);
sendInitialPlayerInfoUpdate(wrapper.user(), mannequinData, new GameProfile.Property[0], false);

mannequinData.setPosition(x, y, z);
mannequinData.setRotation(yaw, pitch);
Expand Down Expand Up @@ -255,7 +255,8 @@ private void storeMovementMannequinData(final PacketWrapper wrapper, final boole
}
}

private void sendInitialPlayerInfoUpdate(final UserConnection connection, final MannequinData mannequinData, final GameProfile.Property[] properties) {
private void sendInitialPlayerInfoUpdate(final UserConnection connection, final MannequinData mannequinData,
final GameProfile.Property[] properties, final boolean registerTeam) {
final PacketWrapper playerInfo = PacketWrapper.create(ClientboundPackets1_21_6.PLAYER_INFO_UPDATE, connection);

final BitSet actions = new BitSet(8);
Expand All @@ -276,7 +277,9 @@ private void sendInitialPlayerInfoUpdate(final UserConnection connection, final
playerInfo.write(Types.BOOLEAN, true); // Show hat
playerInfo.send(Protocol1_21_9To1_21_7.class);

sendPlayerTeamDisplayName(connection, mannequinData, mannequinData.displayName());
if (registerTeam) {
sendPlayerTeamDisplayName(connection, mannequinData, mannequinData.displayName());
}
}

private void sendPlayerInfoDisplayNameUpdate(final UserConnection connection, final MannequinData mannequinData, @Nullable final Tag displayName) {
Expand All @@ -294,16 +297,16 @@ private void sendPlayerInfoDisplayNameUpdate(final UserConnection connection, fi

private void sendPlayerTeamDisplayName(final UserConnection connection, final MannequinData mannequinData, final Tag displayName) {
// Send the display name as a team prefix
final Tag nonNullDisplayName = displayName != null ? displayName : new StringTag("Mannequin");
boolean hasName = displayName != null && !displayName.asRawString().isEmpty();
final PacketWrapper addTeam = PacketWrapper.create(ClientboundPackets1_21_6.SET_PLAYER_TEAM, connection);
addTeam.write(Types.STRING, mannequinData.name());
addTeam.write(Types.BYTE, mannequinData.hasTeam() ? (byte) 2 : 0); // Mode
addTeam.write(Types.TRUSTED_TAG, nonNullDisplayName); // Display Name
addTeam.write(Types.TRUSTED_TAG, hasName ? displayName : new StringTag("Mannequin")); // Display Name
addTeam.write(Types.BYTE, (byte) 0); // Flags
addTeam.write(Types.VAR_INT, 0); // Nametag visibility
addTeam.write(Types.VAR_INT, hasName ? 0 : 1); // Nametag visibility
addTeam.write(Types.VAR_INT, 0); // Collision rule
addTeam.write(Types.VAR_INT, 15); // Color
addTeam.write(Types.TRUSTED_TAG, nonNullDisplayName); // Prefix
addTeam.write(Types.TRUSTED_TAG, hasName ? displayName : new StringTag("")); // Prefix
addTeam.write(Types.TRUSTED_TAG, new StringTag("")); // Suffix
if (!mannequinData.hasTeam()) {
addTeam.write(Types.STRING_ARRAY, new String[]{mannequinData.name()});
Expand Down Expand Up @@ -410,7 +413,10 @@ protected void registerRewrites() {
playerInfoRemove.send(Protocol1_21_9To1_21_7.class);

// Spawn new entity
sendInitialPlayerInfoUpdate(event.user(), mannequinData, profile.profile().properties());
if (profile.profile().name() != null) {
mannequinData.setName(profile.profile().name());
}
sendInitialPlayerInfoUpdate(event.user(), mannequinData, profile.profile().properties(), true);

final PacketWrapper spawnEntityPacket = PacketWrapper.create(ClientboundPackets1_21_6.ADD_ENTITY, event.user());
spawnEntityPacket.write(Types.VAR_INT, event.entityId());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@

public final class MannequinData implements StorableObject {
private final UUID uuid;
private final String name;
private String name;
private boolean hasTeam;


Expand Down Expand Up @@ -85,6 +85,10 @@ public void setPassengers(final int[] passengers) {
this.passengers = passengers;
}

public void setName(String name) {
this.name = name;
}

public double x() {
return x;
}
Expand Down