forked from Upstream/Velocitab
Periodic updates: Also update header/footer, fix extra delay
This commit is contained in:
parent
b431ee2165
commit
6df397b77a
@ -15,6 +15,7 @@ import org.jetbrains.annotations.Nullable;
|
|||||||
|
|
||||||
import java.util.OptionalInt;
|
import java.util.OptionalInt;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
public class LuckPermsHook extends Hook {
|
public class LuckPermsHook extends Hook {
|
||||||
|
|
||||||
@ -47,11 +48,15 @@ public class LuckPermsHook extends Hook {
|
|||||||
|
|
||||||
public void onLuckPermsGroupUpdate(@NotNull UserDataRecalculateEvent event) {
|
public void onLuckPermsGroupUpdate(@NotNull UserDataRecalculateEvent event) {
|
||||||
plugin.getServer().getPlayer(event.getUser().getUniqueId())
|
plugin.getServer().getPlayer(event.getUser().getUniqueId())
|
||||||
.ifPresent(player -> plugin.getTabList().onUpdate(new TabPlayer(
|
.ifPresent(player -> plugin.getServer().getScheduler()
|
||||||
player,
|
.buildTask(plugin, () -> plugin.getTabList()
|
||||||
getRoleFromMetadata(event.getData().getMetaData()),
|
.onUpdate(new TabPlayer(
|
||||||
getHighestWeight()
|
player,
|
||||||
)));
|
getRoleFromMetadata(event.getData().getMetaData()),
|
||||||
|
getHighestWeight()
|
||||||
|
)))
|
||||||
|
.delay(500, TimeUnit.MILLISECONDS)
|
||||||
|
.schedule());
|
||||||
}
|
}
|
||||||
|
|
||||||
private OptionalInt getWeight(@Nullable String groupName) {
|
private OptionalInt getWeight(@Nullable String groupName) {
|
||||||
|
@ -34,7 +34,7 @@ public class PlayerTabList {
|
|||||||
|
|
||||||
// If the update time is set to 0 do not schedule the updater
|
// If the update time is set to 0 do not schedule the updater
|
||||||
if (plugin.getSettings().getUpdateRate() > 0) {
|
if (plugin.getSettings().getUpdateRate() > 0) {
|
||||||
updateTimer(plugin.getSettings().getUpdateRate());
|
this.updatePeriodically(plugin.getSettings().getUpdateRate());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -142,16 +142,13 @@ public class PlayerTabList {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void onUpdate(@NotNull TabPlayer tabPlayer) {
|
public void onUpdate(@NotNull TabPlayer tabPlayer) {
|
||||||
plugin.getServer().getScheduler()
|
players.forEach(player -> tabPlayer.getDisplayName(plugin).thenAccept(displayName -> {
|
||||||
.buildTask(plugin, () -> players.forEach(player -> tabPlayer.getDisplayName(plugin).thenAccept(displayName -> {
|
player.getPlayer().getTabList().getEntries().stream()
|
||||||
player.getPlayer().getTabList().getEntries().stream()
|
.filter(e -> e.getProfile().getId().equals(tabPlayer.getPlayer().getUniqueId())).findFirst()
|
||||||
.filter(e -> e.getProfile().getId().equals(tabPlayer.getPlayer().getUniqueId())).findFirst()
|
.ifPresent(entry -> entry.setDisplayName(displayName));
|
||||||
.ifPresent(entry -> entry.setDisplayName(displayName));
|
plugin.getScoreboardManager().updateRoles(player.getPlayer(),
|
||||||
plugin.getScoreboardManager().updateRoles(player.getPlayer(),
|
tabPlayer.getTeamName(), tabPlayer.getPlayer().getUsername());
|
||||||
tabPlayer.getTeamName(), tabPlayer.getPlayer().getUsername());
|
}));
|
||||||
})))
|
|
||||||
.delay(500, TimeUnit.MILLISECONDS)
|
|
||||||
.schedule();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public CompletableFuture<Component> getHeader(@NotNull TabPlayer player) {
|
public CompletableFuture<Component> getHeader(@NotNull TabPlayer player) {
|
||||||
@ -168,12 +165,17 @@ public class PlayerTabList {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateTimer(int updateRate) {
|
// Update the tab list periodically
|
||||||
|
private void updatePeriodically(int updateRate) {
|
||||||
plugin.getServer().getScheduler()
|
plugin.getServer().getScheduler()
|
||||||
.buildTask(plugin, () -> {
|
.buildTask(plugin, () -> {
|
||||||
if (!players.isEmpty()) {
|
if (players.isEmpty()) {
|
||||||
players.forEach(this::onUpdate);
|
return;
|
||||||
}
|
}
|
||||||
|
players.forEach(player -> {
|
||||||
|
this.onUpdate(player);
|
||||||
|
player.sendHeaderAndFooter(this);
|
||||||
|
});
|
||||||
})
|
})
|
||||||
.repeat(updateRate, TimeUnit.MILLISECONDS)
|
.repeat(updateRate, TimeUnit.MILLISECONDS)
|
||||||
.schedule();
|
.schedule();
|
||||||
|
Loading…
Reference in New Issue
Block a user