Skip to content

Commit

Permalink
Layout - Implement latency updating for player slots (#545)
Browse files Browse the repository at this point in the history
  • Loading branch information
NEZNAMY committed Mar 31, 2022
1 parent 6d922d5 commit a8b0b48
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 0 deletions.
2 changes: 2 additions & 0 deletions shared/src/main/java/me/neznamy/tab/shared/TabConstants.java
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ public static class PacketCategory {

public static final String LAYOUT_FIXED_SLOTS = "Layout (Fixed slots)";
public static final String LAYOUT_PLAYER_SLOTS = "Layout (Player slots)";
public static final String LAYOUT_LATENCY = "Layout (Updating latency)";

public static final String NAMETAGS_TEAM_REGISTER = "NameTags (Team register)";
public static final String NAMETAGS_TEAM_UNREGISTER = "NameTags (Team unregister)";
Expand Down Expand Up @@ -224,6 +225,7 @@ public static class Feature {
public static final String PING_SPOOF = "PingSpoof";
public static final String SORTING = "sorting";
public static final String LAYOUT = "layout";
public static final String LAYOUT_LATENCY = "layout-latency";
public static final String NICK_COMPATIBILITY = "nick";
public static final String PIPELINE_INJECTION = "injection";
public static final String BOSS_BAR = "BossBar";
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package me.neznamy.tab.shared.features.layout;

import me.neznamy.tab.api.TabFeature;
import me.neznamy.tab.api.TabPlayer;
import me.neznamy.tab.api.protocol.PacketPlayOutPlayerInfo;
import me.neznamy.tab.shared.TAB;
import me.neznamy.tab.shared.TabConstants;

public class LayoutLatencyRefresher extends TabFeature {

private final LayoutManager manager;

public LayoutLatencyRefresher(LayoutManager manager) {
super(manager.getFeatureName(), "Updating latency");
this.manager = manager;
TAB.getInstance().getPlaceholderManager().addUsedPlaceholder("%ping%", this);
}

@Override
public void refresh(TabPlayer p, boolean force) {
for (TabPlayer all : TAB.getInstance().getOnlinePlayers()) {
PlayerSlot slot = manager.getPlayerViews().get(all).getSlot(p);
if (slot != null) {
all.sendCustomPacket(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.UPDATE_LATENCY,
new PacketPlayOutPlayerInfo.PlayerInfoData(slot.getUUID(), p.getPing())), TabConstants.PacketCategory.LAYOUT_LATENCY);
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ public LayoutManager() {
}
loadLayouts();
TAB.getInstance().getPlaceholderManager().addUsedPlaceholders(Collections.singletonList("%vanished%"));
TAB.getInstance().getFeatureManager().registerFeature(TabConstants.Feature.LAYOUT_LATENCY, new LayoutLatencyRefresher(this));
TAB.getInstance().debug("Loaded Layout feature");
}

Expand Down

0 comments on commit a8b0b48

Please sign in to comment.