Skip to content

Commit

Permalink
[Chat components] Remove redundant checks for player's version
Browse files Browse the repository at this point in the history
  • Loading branch information
NEZNAMY committed Jan 19, 2025
1 parent 1cef440 commit f086318
Show file tree
Hide file tree
Showing 17 changed files with 51 additions and 39 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ public void registerObjective(@NonNull Objective objective) {
dummyScoreboard,
objective.getName(),
ObjectiveCriteria.DUMMY,
objective.getTitle().convert(player.getVersion()),
objective.getTitle().convert(),
ObjectiveCriteria.RenderType.values()[objective.getHealthDisplay().ordinal()],
false,
objective.getNumberFormat() == null ? null : objective.getNumberFormat().toFixedFormat(FixedFormat::new)
Expand All @@ -76,7 +76,7 @@ public void unregisterObjective(@NonNull Objective objective) {
@Override
public void updateObjective(@NonNull Objective objective) {
net.minecraft.world.scores.Objective obj = (net.minecraft.world.scores.Objective) objective.getPlatformObjective();
obj.setDisplayName(objective.getTitle().convert(player.getVersion()));
obj.setDisplayName(objective.getTitle().convert());
obj.setRenderType(ObjectiveCriteria.RenderType.values()[objective.getHealthDisplay().ordinal()]);
sendPacket(new ClientboundSetObjectivePacket(obj, ObjectiveAction.UPDATE));
}
Expand All @@ -88,7 +88,7 @@ public void setScore(@NonNull Score score) {
score.getHolder(),
score.getObjective().getName(),
score.getValue(),
Optional.ofNullable(score.getDisplayName() == null ? null : score.getDisplayName().convert(player.getVersion())),
Optional.ofNullable(score.getDisplayName() == null ? null : score.getDisplayName().convert()),
Optional.ofNullable(score.getNumberFormat() == null ? null : score.getNumberFormat().toFixedFormat(FixedFormat::new))
)
);
Expand Down Expand Up @@ -131,8 +131,8 @@ private void updateTeamProperties(@NonNull Team team) {
t.setColor(formats[team.getColor().getLegacyColor().ordinal()]);
t.setCollisionRule(collisions[team.getCollision().ordinal()]);
t.setNameTagVisibility(visibilities[team.getVisibility().ordinal()]);
t.setPlayerPrefix(team.getPrefix().convert(player.getVersion()));
t.setPlayerSuffix(team.getSuffix().convert(player.getVersion()));
t.setPlayerPrefix(team.getPrefix().convert());
t.setPlayerSuffix(team.getSuffix().convert());
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ id, createProfile(id, name, skin), listed, latency, GameType.byId(gameMode), dis

@Override
public void setPlayerListHeaderFooter(@NonNull TabComponent header, @NonNull TabComponent footer) {
sendPacket(new ClientboundTabListPacket(header.convert(player.getVersion()), footer.convert(player.getVersion())));
sendPacket(new ClientboundTabListPacket(header.convert(), footer.convert()));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ public int getPing() {

@Override
public void sendMessage(@NotNull TabComponent message) {
getPlayer().sendMessage(getPlatform().toBukkitFormat(message, getVersion().supportsRGB()));
getPlayer().sendMessage(getPlatform().toBukkitFormat(message));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public class BukkitBossBar extends SafeBossBar<BossBar> {
@NotNull
public BossBar constructBossBar(@NotNull TabComponent title, float progress, @NotNull BarColor color, @NotNull BarStyle style) {
BossBar bar = Bukkit.createBossBar(
player.getPlatform().toBukkitFormat(title, player.getVersion().supportsRGB()),
player.getPlatform().toBukkitFormat(title),
org.bukkit.boss.BarColor.valueOf(color.name()),
styles[style.ordinal()]
);
Expand All @@ -43,7 +43,7 @@ public void create(SafeBossBar<BossBar>.@NotNull BossBarInfo bar) {

@Override
public void updateTitle(SafeBossBar<BossBar>.@NotNull BossBarInfo bar) {
bar.getBossBar().setTitle(player.getPlatform().toBukkitFormat(bar.getTitle(), player.getVersion().supportsRGB()));
bar.getBossBar().setTitle(player.getPlatform().toBukkitFormat(bar.getTitle()));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ public class BukkitHeaderFooter extends HeaderFooter {
@SuppressWarnings("deprecation") // Marked as deprecated by Paper to make us use their methods instead
public void set(@NotNull BukkitTabPlayer player, @NotNull TabComponent header, @NotNull TabComponent footer) {
player.getPlayer().setPlayerListHeaderFooter(
player.getPlatform().toBukkitFormat(header, player.getVersion().supportsRGB()),
player.getPlatform().toBukkitFormat(footer, player.getVersion().supportsRGB())
player.getPlatform().toBukkitFormat(header),
player.getPlatform().toBukkitFormat(footer)
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,6 @@ public PacketHeaderFooter() throws ReflectiveOperationException {
@Override
@SneakyThrows
public void set(@NotNull BukkitTabPlayer player, @NotNull TabComponent header, @NotNull TabComponent footer) {
packetSender.sendPacket(player, createPacket.apply(header.convert(player.getVersion()), footer.convert(player.getVersion())));
packetSender.sendPacket(player, createPacket.apply(header.convert(), footer.convert()));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -206,12 +206,12 @@ public void registerSyncPlaceholder(@NotNull String identifier, int refresh) {

@Override
public void logInfo(@NotNull TabComponent message) {
Bukkit.getConsoleSender().sendMessage("[TAB] " + toBukkitFormat(message, true));
Bukkit.getConsoleSender().sendMessage("[TAB] " + toBukkitFormat(message));
}

@Override
public void logWarn(@NotNull TabComponent message) {
Bukkit.getConsoleSender().sendMessage("§c[TAB] [WARN] " + toBukkitFormat(message, true));
Bukkit.getConsoleSender().sendMessage("§c[TAB] [WARN] " + toBukkitFormat(message));
}

@Override
Expand Down Expand Up @@ -352,25 +352,23 @@ public void runSync(@NotNull Entity entity, @NotNull Runnable task) {
}

/**
* Converts component to legacy string using bukkit RGB format if supported by both server and client.
* Converts component to string using bukkit RGB format if supported by the server.
* If not, closest legacy color is used instead.
*
* @param component
* Component to convert
* @param rgbClient
* Whether client accepts RGB colors or not.
* @return Converted string using bukkit color format
*/
@NotNull
public String toBukkitFormat(@NotNull TabComponent component, boolean rgbClient) {
public String toBukkitFormat(@NotNull TabComponent component) {
if (component instanceof SimpleComponent) {
return ((SimpleComponent) component).getText();
}
if (component instanceof StructuredComponent) {
StructuredComponent iComponent = (StructuredComponent) component;
StringBuilder sb = new StringBuilder();
if (iComponent.getModifier().getColor() != null) {
if (serverVersion.supportsRGB() && rgbClient) {
if (serverVersion.supportsRGB()) {
String hexCode = iComponent.getModifier().getColor().getHexCode();
sb.append('§').append("x").append('§').append(hexCode.charAt(0)).append('§').append(hexCode.charAt(1))
.append('§').append(hexCode.charAt(2)).append('§').append(hexCode.charAt(3))
Expand All @@ -382,7 +380,7 @@ public String toBukkitFormat(@NotNull TabComponent component, boolean rgbClient)
sb.append(iComponent.getModifier().getMagicCodes());
sb.append(iComponent.getText());
for (StructuredComponent extra : iComponent.getExtra()) {
sb.append(toBukkitFormat(extra, rgbClient));
sb.append(toBukkitFormat(extra));
}
return sb.toString();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -274,7 +274,7 @@ public void setSuffix(@NonNull org.bukkit.scoreboard.Team team, @NonNull TabComp
*/
@NotNull
private String transform(@NonNull TabComponent text, int maxLengthModern, int maxLengthLegacy) {
String transformed = player.getPlatform().toBukkitFormat(text, player.getVersion().supportsRGB());
String transformed = player.getPlatform().toBukkitFormat(text);
if (player.getPlatform().getServerVersion().supportsRGB() && maxLengthModern < TITLE_LIMIT_MODERN) { // Scoreboard title is not stripping colors
while (ChatColor.stripColor(transformed).length() > maxLengthModern)
transformed = transformed.substring(0, transformed.length()-1);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ public void updateObjective(@NonNull Objective objective) {
@Override
public void setScore(@NonNull Score score) {
packetSender.sendPacket(player, scorePacketData.setScore(score.getObjective().getName(), score.getHolder(), score.getValue(),
score.getDisplayName() == null ? null : score.getDisplayName().convert(player.getVersion()),
score.getDisplayName() == null ? null : score.getDisplayName().convert(),
score.getNumberFormat() == null ? null : toFixedFormat(score.getNumberFormat())));
}

Expand Down Expand Up @@ -202,7 +202,7 @@ private Object newObjective(@NonNull Objective objective) {
emptyScoreboard,
objective.getName(),
null, // Criteria
objective.getTitle().convert(player.getVersion()),
objective.getTitle().convert(),
healthDisplays[objective.getHealthDisplay().ordinal()],
false, // Auto update
objective.getNumberFormat() == null ? null : toFixedFormat(objective.getNumberFormat())
Expand All @@ -214,7 +214,7 @@ private Object newObjective(@NonNull Objective objective) {
emptyScoreboard,
objective.getName(),
null, // Criteria
objective.getTitle().convert(player.getVersion()),
objective.getTitle().convert(),
healthDisplays[objective.getHealthDisplay().ordinal()]
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -224,8 +224,8 @@ private void updateTeamData(@NonNull Team team, @NotNull ProtocolVersion clientV
ScoreboardTeam_setAllowFriendlyFire.invoke(nmsTeam, (team.getOptions() & 0x1) > 0);
ScoreboardTeam_setCanSeeFriendlyInvisibles.invoke(nmsTeam, (team.getOptions() & 0x2) > 0);
if (MODERN_TEAM_DATA_VERSION) {
ScoreboardTeam_setPrefix.invoke(nmsTeam, (Object) team.getPrefix().convert(clientVersion));
ScoreboardTeam_setSuffix.invoke(nmsTeam, (Object) team.getSuffix().convert(clientVersion));
ScoreboardTeam_setPrefix.invoke(nmsTeam, (Object) team.getPrefix().convert());
ScoreboardTeam_setSuffix.invoke(nmsTeam, (Object) team.getSuffix().convert());
ScoreboardTeam_setColor.invoke(nmsTeam, chatFormats[team.getColor().getLegacyColor().ordinal()]);
} else {
String prefix = team.getPrefix().toLegacyText();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ public class FabricBossBar extends SafeBossBar<ServerBossEvent> {
@NotNull
public ServerBossEvent constructBossBar(@NotNull TabComponent title, float progress, @NotNull BarColor color, @NotNull BarStyle style) {
ServerBossEvent bar = new ServerBossEvent(
title.convert(player.getVersion()),
title.convert(),
BossBarColor.valueOf(color.name()),
BossBarOverlay.valueOf(style.name())
);
Expand All @@ -39,7 +39,7 @@ public void create(@NotNull BossBarInfo bar) {

@Override
public void updateTitle(@NotNull BossBarInfo bar) {
bar.getBossBar().setName(bar.getTitle().convert(player.getVersion()));
bar.getBossBar().setName(bar.getTitle().convert());
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public FabricScoreboard(FabricTabPlayer player) {
public void registerObjective(@NonNull Objective objective) {
net.minecraft.world.scores.Objective obj = FabricMultiVersion.newObjective(
objective.getName(),
objective.getTitle().convert(player.getVersion()),
objective.getTitle().convert(),
RenderType.values()[objective.getHealthDisplay().ordinal()],
objective.getNumberFormat()
);
Expand All @@ -53,15 +53,15 @@ public void unregisterObjective(@NonNull Objective objective) {
@Override
public void updateObjective(@NonNull Objective objective) {
net.minecraft.world.scores.Objective obj = (net.minecraft.world.scores.Objective) objective.getPlatformObjective();
obj.setDisplayName(objective.getTitle().convert(player.getVersion()));
obj.setDisplayName(objective.getTitle().convert());
obj.setRenderType(RenderType.values()[objective.getHealthDisplay().ordinal()]);
player.sendPacket(new ClientboundSetObjectivePacket(obj, ObjectiveAction.UPDATE));
}

@Override
public void setScore(@NonNull Score score) {
player.sendPacket(FabricMultiVersion.setScore(score.getObjective().getName(), score.getHolder(), score.getValue(),
score.getDisplayName() == null ? null : score.getDisplayName().convert(player.getVersion()),
score.getDisplayName() == null ? null : score.getDisplayName().convert(),
score.getNumberFormat()));
}

Expand Down Expand Up @@ -102,8 +102,8 @@ private void updateTeamProperties(@NonNull Team team) {
t.setColor(formats[team.getColor().getLegacyColor().ordinal()]);
t.setCollisionRule(collisions[team.getCollision().ordinal()]);
t.setNameTagVisibility(visibilities[team.getVisibility().ordinal()]);
t.setPlayerPrefix(team.getPrefix().convert(player.getVersion()));
t.setPlayerSuffix(team.getSuffix().convert(player.getVersion()));
t.setPlayerPrefix(team.getPrefix().convert());
t.setPlayerSuffix(team.getSuffix().convert());
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ private int executeCommand(@NotNull CommandSourceStack source, @NotNull String[]
boolean hasReloadPermission = PermissionsAPIHook.hasPermission(source, TabConstants.Permission.COMMAND_RELOAD);
boolean hasAdminPermission = PermissionsAPIHook.hasPermission(source, TabConstants.Permission.COMMAND_ALL);
for (String message : TAB.getInstance().getDisabledCommand().execute(args, hasReloadPermission, hasAdminPermission)) {
FabricMultiVersion.sendMessage(source, TabComponent.fromColoredText(message).convert(((FabricPlatform) TAB.getInstance().getPlatform()).getServerVersion()));
FabricMultiVersion.sendMessage(source, TabComponent.fromColoredText(message).convert());
}
} else {
if (source.getEntity() == null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public int getPing() {

@Override
public void sendMessage(@NotNull TabComponent message) {
FabricMultiVersion.sendMessage(getPlayer(), message.convert(getVersion()));
FabricMultiVersion.sendMessage(getPlayer(), message.convert());
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,20 @@ public <T> T convert(@NotNull ProtocolVersion clientVersion) {
}
}

/**
* Converts this component to platform's component.
*
* @return Converted component
* @param <T>
* Platform's component class
*/
@NotNull
@SuppressWarnings("unchecked")
public <T> T convert() {
if (convertedModern == null) convertedModern = TAB.getInstance().getPlatform().convertComponent(this, true);
return (T) convertedModern;
}

/**
* Converts this component to an Adventure component.
* @return Converted component
Expand All @@ -95,7 +109,7 @@ public Component toAdventure() {
@SuppressWarnings("unchecked")
@SneakyThrows
public <F, C> F toFixedFormat(@NotNull FunctionWithException<C, F> createFunction) {
if (fixedFormat == null) fixedFormat = createFunction.apply(convert(ProtocolVersion.LATEST_KNOWN_VERSION)); // Numbers formats are 1.20.3+, which is above 1.16
if (fixedFormat == null) fixedFormat = createFunction.apply(convert());
return (F) fixedFormat;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public class SpongeBossBar extends SafeBossBar<ServerBossBar> {
@NotNull
public ServerBossBar constructBossBar(@NotNull TabComponent title, float progress, @NotNull BarColor color, @NotNull BarStyle style) {
return ServerBossBar.builder()
.name(title.convert(player.getVersion()))
.name(title.convert())
.color(colors[color.ordinal()])
.overlay(styles[style.ordinal()])
.percent(progress)
Expand All @@ -56,7 +56,7 @@ public void create(@NotNull BossBarInfo bar) {

@Override
public void updateTitle(@NotNull BossBarInfo bar) {
bar.getBossBar().setName(bar.getTitle().convert(player.getVersion()));
bar.getBossBar().setName(bar.getTitle().convert());
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ public int getPing() {

@Override
public void sendMessage(@NotNull TabComponent message) {
getPlayer().sendMessage((Text) message.convert(getVersion()));
getPlayer().sendMessage((Text) message.convert());
}

@Override
Expand Down

0 comments on commit f086318

Please sign in to comment.