From afa96da127cbd9a309c8cbc6bd079bb9a474a5e2 Mon Sep 17 00:00:00 2001 From: OliverSchlueter Date: Sat, 3 Aug 2024 13:33:49 +0200 Subject: [PATCH 1/6] Run HologramsLoadedEvent async in hologram manager --- .../fancyholograms/HologramManagerImpl.java | 34 +++++++++++-------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/src/main/java/de/oliver/fancyholograms/HologramManagerImpl.java b/src/main/java/de/oliver/fancyholograms/HologramManagerImpl.java index 1dcaa878..354525e8 100644 --- a/src/main/java/de/oliver/fancyholograms/HologramManagerImpl.java +++ b/src/main/java/de/oliver/fancyholograms/HologramManagerImpl.java @@ -106,15 +106,15 @@ public void removeHologram(@NotNull final Hologram hologram) { Optional optionalHologram = Optional.ofNullable(this.holograms.remove(name.toLowerCase(Locale.ROOT))); optionalHologram.ifPresent(hologram -> { - for (UUID viewer : hologram.getViewers()) { - Player player = Bukkit.getPlayer(viewer); - if (player != null) { - FancyHolograms.get().getHologramThread().submit(() -> hologram.forceHideHologram(player)); + for (UUID viewer : hologram.getViewers()) { + Player player = Bukkit.getPlayer(viewer); + if (player != null) { + FancyHolograms.get().getHologramThread().submit(() -> hologram.forceHideHologram(player)); + } } - } - FancyHolograms.get().getHologramThread().submit(() -> plugin.getHologramStorage().delete(hologram)); - } + FancyHolograms.get().getHologramThread().submit(() -> plugin.getHologramStorage().delete(hologram)); + } ); return optionalHologram; @@ -152,7 +152,7 @@ public void loadHolograms() { } isLoaded = true; - Bukkit.getPluginManager().callEvent(new HologramsLoadedEvent(ImmutableList.copyOf(allLoaded))); + FancyHolograms.get().getHologramThread().submit(() -> Bukkit.getPluginManager().callEvent(new HologramsLoadedEvent(ImmutableList.copyOf(allLoaded)))); FancyHolograms.get().getLogger().info(String.format("Loaded %d holograms for all loaded worlds", allLoaded.size())); } @@ -188,8 +188,8 @@ void initializeTasks() { }); final var updateTimes = CacheBuilder.newBuilder() - .expireAfterAccess(Duration.ofMinutes(5)) - .build(); + .expireAfterAccess(Duration.ofMinutes(5)) + .build(); hologramThread.scheduleAtFixedRate(() -> { final var time = System.currentTimeMillis(); @@ -233,15 +233,19 @@ public void reloadHolograms() { } public void unloadHolograms() { - final var online = List.copyOf(Bukkit.getOnlinePlayers()); - FancyHolograms.get().getHologramThread().submit(() -> { List unloaded = new ArrayList<>(); for (final var hologram : this.getPersistentHolograms()) { this.holograms.remove(hologram.getName()); unloaded.add(hologram); - online.forEach(hologram::forceHideHologram); + + for (UUID viewer : hologram.getViewers()) { + Player player = Bukkit.getPlayer(viewer); + if (player != null) { + hologram.forceHideHologram(player); + } + } } Bukkit.getPluginManager().callEvent(new HologramsUnloadedEvent(ImmutableList.copyOf(unloaded))); @@ -253,8 +257,8 @@ public void unloadHolograms(String world) { FancyHolograms.get().getHologramThread().submit(() -> { List h = getPersistentHolograms().stream() - .filter(hologram -> hologram.getData().getLocation().getWorld().getName().equals(world)) - .toList(); + .filter(hologram -> hologram.getData().getLocation().getWorld().getName().equals(world)) + .toList(); FancyHolograms.get().getHologramStorage().saveBatch(h, true); From 949249f2aafa04806adfe38f975bb1d2960d08ae Mon Sep 17 00:00:00 2001 From: OliverSchlueter Date: Sat, 3 Aug 2024 13:37:39 +0200 Subject: [PATCH 2/6] Update version to 2.3.1 --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 3e2a7077..77d3c3f9 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -19,7 +19,7 @@ runPaper.folia.registerTask() allprojects { group = "de.oliver" val buildId = System.getenv("BUILD_ID") - version = "2.3.0" + (if (buildId != null) ".$buildId" else "") + version = "2.3.1" + (if (buildId != null) ".$buildId" else "") description = "Simple, lightweight and fast hologram plugin using display entities" repositories { From b06556df2c17f76020146e04b7dd8d1f97abd1ef Mon Sep 17 00:00:00 2001 From: OliverSchlueter Date: Mon, 5 Aug 2024 21:23:10 +0200 Subject: [PATCH 3/6] Update build.yml --- .github/workflows/build.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7821f4fc..c2d567e2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -2,6 +2,9 @@ name: Build plugin on: push: + pull_request: + types: + - opened jobs: build-plugin: From 64ca4849f921a49e8c782a0f22f71c54c01d6d39 Mon Sep 17 00:00:00 2001 From: Oak <55620516+OakLoaf@users.noreply.github.com> Date: Mon, 5 Aug 2024 20:23:56 +0100 Subject: [PATCH 4/6] Seperated text update interval refresh into separate more frequent schedule (#133) --- .../fancyholograms/HologramManagerImpl.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/main/java/de/oliver/fancyholograms/HologramManagerImpl.java b/src/main/java/de/oliver/fancyholograms/HologramManagerImpl.java index 354525e8..5a4c3a13 100644 --- a/src/main/java/de/oliver/fancyholograms/HologramManagerImpl.java +++ b/src/main/java/de/oliver/fancyholograms/HologramManagerImpl.java @@ -204,24 +204,32 @@ void initializeTasks() { if (data instanceof TextHologramData) { updateTimes.put(hologram.getData().getName(), time); } - } else if (data instanceof TextHologramData textData) { + } + } + }, 50, 1000, TimeUnit.MILLISECONDS); + + hologramThread.scheduleAtFixedRate(() -> { + final var time = System.currentTimeMillis(); + + for (final var hologram : getHolograms()) { + if (hologram.getData() instanceof TextHologramData textData) { final var interval = textData.getTextUpdateInterval(); if (interval < 1) { continue; // doesn't update } - final var lastUpdate = updateTimes.asMap().get(data.getName()); + final var lastUpdate = updateTimes.asMap().get(textData.getName()); if (lastUpdate != null && time < (lastUpdate + interval)) { continue; } if (lastUpdate == null || time > (lastUpdate + interval)) { hologram.refreshForViewersInWorld(); - updateTimes.put(data.getName(), time); + updateTimes.put(textData.getName(), time); } } } - }, 50, 1000, TimeUnit.MILLISECONDS); + }, 50, 50, TimeUnit.MILLISECONDS); } /** From 3b3339ebffdc2a11da80f21912754a202cbdd76e Mon Sep 17 00:00:00 2001 From: OliverSchlueter Date: Wed, 7 Aug 2024 19:14:03 +0200 Subject: [PATCH 5/6] Update fancylib to 1.0.31 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 9eafab93..0af8ee83 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ minecraftVersion=1.21 fancyNpcsVersion=2.2.1 -fancyLibVersion=1.0.28 +fancyLibVersion=1.0.31 viaversionVersion=5.0.1 chatcolorhandlerVersion=v2.5.3 \ No newline at end of file From d2de091b674a8856f68a9fe81660bb557106eed4 Mon Sep 17 00:00:00 2001 From: OliverSchlueter Date: Wed, 7 Aug 2024 19:16:06 +0200 Subject: [PATCH 6/6] Fix compile issue --- src/main/java/de/oliver/fancyholograms/FancyHolograms.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/de/oliver/fancyholograms/FancyHolograms.java b/src/main/java/de/oliver/fancyholograms/FancyHolograms.java index 06653a67..13736f33 100644 --- a/src/main/java/de/oliver/fancyholograms/FancyHolograms.java +++ b/src/main/java/de/oliver/fancyholograms/FancyHolograms.java @@ -108,7 +108,7 @@ Please update the server to one of (%s). public void onEnable() { getHologramConfiguration().reload(this); // initialize configuration - FancyLib.setPlugin(this); + FancyLib.setPlugin(this, getFile()); if (!ServerSoftware.isPaper()) { getLogger().warning("""