fancyholograms: Optimize hologram updates by submitting tasks to the hologram thread on player events

This commit is contained in:
Oliver
2025-08-06 21:31:45 +02:00
parent c391881bfd
commit d38ce8f248
3 changed files with 44 additions and 28 deletions

View File

@@ -44,24 +44,30 @@ public final class PlayerListener implements Listener {
@EventHandler(priority = EventPriority.MONITOR) @EventHandler(priority = EventPriority.MONITOR)
public void onJoin(@NotNull final PlayerJoinEvent event) { public void onJoin(@NotNull final PlayerJoinEvent event) {
for (final var hologram : this.plugin.getHologramsManager().getHolograms()) { FancyHolograms.get().getHologramThread().submit(() -> {
hologram.forceHideHologram(event.getPlayer()); for (final var hologram : this.plugin.getHologramsManager().getHolograms()) {
hologram.forceUpdateShownStateFor(event.getPlayer()); hologram.forceHideHologram(event.getPlayer());
} hologram.forceUpdateShownStateFor(event.getPlayer());
}
});
} }
@EventHandler(priority = EventPriority.MONITOR) @EventHandler(priority = EventPriority.MONITOR)
public void onTeleport(@NotNull final PlayerTeleportEvent event) { public void onTeleport(@NotNull final PlayerTeleportEvent event) {
for (final Hologram hologram : this.plugin.getHologramsManager().getHolograms()) { FancyHolograms.get().getHologramThread().submit(() -> {
hologram.forceUpdateShownStateFor(event.getPlayer()); for (final Hologram hologram : this.plugin.getHologramsManager().getHolograms()) {
} hologram.forceUpdateShownStateFor(event.getPlayer());
}
});
} }
@EventHandler(priority = EventPriority.MONITOR) @EventHandler(priority = EventPriority.MONITOR)
public void onWorldChange(@NotNull final PlayerChangedWorldEvent event) { public void onWorldChange(@NotNull final PlayerChangedWorldEvent event) {
for (final Hologram hologram : this.plugin.getHologramsManager().getHolograms()) { FancyHolograms.get().getHologramThread().submit(() -> {
hologram.forceUpdateShownStateFor(event.getPlayer()); for (final Hologram hologram : this.plugin.getHologramsManager().getHolograms()) {
} hologram.forceUpdateShownStateFor(event.getPlayer());
}
});
} }
@EventHandler(priority = EventPriority.MONITOR) @EventHandler(priority = EventPriority.MONITOR)
@@ -83,9 +89,11 @@ public final class PlayerListener implements Listener {
// Removing player from the map, as they're no longer needed here. // Removing player from the map, as they're no longer needed here.
loadingResourcePacks.remove(playerUniqueId); loadingResourcePacks.remove(playerUniqueId);
// Refreshing holograms as to make sure custom textures are loaded. // Refreshing holograms as to make sure custom textures are loaded.
for (final Hologram hologram : this.plugin.getHologramsManager().getHolograms()) { FancyHolograms.get().getHologramThread().submit(() -> {
hologram.refreshHologram(event.getPlayer()); for (final Hologram hologram : this.plugin.getHologramsManager().getHolograms()) {
} hologram.refreshHologram(event.getPlayer());
}
});
} }
} }
} }

View File

@@ -35,10 +35,12 @@ public final class PlayerListener implements Listener {
@EventHandler(priority = EventPriority.MONITOR) @EventHandler(priority = EventPriority.MONITOR)
public void onJoin(@NotNull final PlayerJoinEvent event) { public void onJoin(@NotNull final PlayerJoinEvent event) {
for (final var hologram : this.plugin.getRegistry().getAll()) { FancyHologramsPlugin.get().getHologramThread().submit(() -> {
hologram.removeViewer(event.getPlayer().getUniqueId()); for (final var hologram : this.plugin.getRegistry().getAll()) {
FancyHologramsPlugin.get().getController().refreshHologram(hologram, event.getPlayer()); hologram.removeViewer(event.getPlayer().getUniqueId());
} FancyHologramsPlugin.get().getController().refreshHologram(hologram, event.getPlayer());
}
});
if (!this.plugin.getHologramConfiguration().areVersionNotificationsMuted() && event.getPlayer().hasPermission("fancyholograms.admin")) { if (!this.plugin.getHologramConfiguration().areVersionNotificationsMuted() && event.getPlayer().hasPermission("fancyholograms.admin")) {
FancyHologramsPlugin.get().getHologramThread().submit(() -> FancyHologramsPlugin.get().getVersionConfig().checkVersionAndDisplay(event.getPlayer(), true)); FancyHologramsPlugin.get().getHologramThread().submit(() -> FancyHologramsPlugin.get().getVersionConfig().checkVersionAndDisplay(event.getPlayer(), true));
@@ -57,17 +59,21 @@ public final class PlayerListener implements Listener {
@EventHandler(priority = EventPriority.MONITOR) @EventHandler(priority = EventPriority.MONITOR)
public void onTeleport(@NotNull final PlayerTeleportEvent event) { public void onTeleport(@NotNull final PlayerTeleportEvent event) {
for (final Hologram hologram : this.plugin.getRegistry().getAll()) { FancyHologramsPlugin.get().getHologramThread().submit(() -> {
FancyHologramsPlugin.get().getController().refreshHologram(hologram, event.getPlayer()); for (final Hologram hologram : this.plugin.getRegistry().getAll()) {
} FancyHologramsPlugin.get().getController().refreshHologram(hologram, event.getPlayer());
}
});
} }
@EventHandler(priority = EventPriority.MONITOR) @EventHandler(priority = EventPriority.MONITOR)
public void onWorldChange(@NotNull final PlayerChangedWorldEvent event) { public void onWorldChange(@NotNull final PlayerChangedWorldEvent event) {
for (final Hologram hologram : this.plugin.getRegistry().getAll()) { FancyHologramsPlugin.get().getHologramThread().submit(() -> {
hologram.removeViewer(event.getPlayer().getUniqueId()); for (final Hologram hologram : this.plugin.getRegistry().getAll()) {
FancyHologramsPlugin.get().getController().refreshHologram(hologram, event.getPlayer()); hologram.removeViewer(event.getPlayer().getUniqueId());
} FancyHologramsPlugin.get().getController().refreshHologram(hologram, event.getPlayer());
}
});
} }
@EventHandler(priority = EventPriority.MONITOR) @EventHandler(priority = EventPriority.MONITOR)
@@ -89,9 +95,11 @@ public final class PlayerListener implements Listener {
// Removing player from the map, as they're no longer needed here. // Removing player from the map, as they're no longer needed here.
loadingResourcePacks.remove(playerUniqueId); loadingResourcePacks.remove(playerUniqueId);
// Refreshing holograms as to make sure custom textures are loaded. // Refreshing holograms as to make sure custom textures are loaded.
for (final Hologram hologram : this.plugin.getRegistry().getAll()) { FancyHologramsPlugin.get().getHologramThread().submit(() -> {
FancyHologramsPlugin.get().getController().refreshHologram(hologram, event.getPlayer()); for (final Hologram hologram : this.plugin.getRegistry().getAll()) {
} FancyHologramsPlugin.get().getController().refreshHologram(hologram, event.getPlayer());
}
});
} }
} }
} }

View File

@@ -1 +1 @@
2.7.0.288 2.7.0.289