mirror of
https://github.com/FancyInnovations/FancyPlugins.git
synced 2025-12-06 07:43:36 +00:00
fancyholograms-v2: Use player loaded event to spawn hologram once the player loaded the world
This commit is contained in:
@@ -56,6 +56,7 @@ public abstract class Hologram {
|
||||
/**
|
||||
* Returns the entity id of this hologram
|
||||
* This id is for packet use only as the entity is not registered to the server
|
||||
*
|
||||
* @return entity id
|
||||
*/
|
||||
public abstract int getEntityId();
|
||||
|
||||
@@ -2,20 +2,19 @@ package de.oliver.fancyholograms.listeners;
|
||||
|
||||
import de.oliver.fancyholograms.FancyHolograms;
|
||||
import de.oliver.fancyholograms.api.hologram.Hologram;
|
||||
import io.papermc.paper.event.player.PlayerClientLoadedWorldEvent;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.*;
|
||||
import org.bukkit.event.player.PlayerChangedWorldEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
import org.bukkit.event.player.PlayerResourcePackStatusEvent;
|
||||
import org.bukkit.event.player.PlayerResourcePackStatusEvent.Status;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.bukkit.event.player.PlayerTeleportEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public final class PlayerListener implements Listener {
|
||||
|
||||
private final @NotNull FancyHolograms plugin;
|
||||
@@ -27,14 +26,21 @@ public final class PlayerListener implements Listener {
|
||||
this.loadingResourcePacks = new HashMap<>();
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR)
|
||||
public void onJoin(@NotNull final PlayerJoinEvent event) {
|
||||
for (final var hologram : this.plugin.getHologramsManager().getHolograms()) {
|
||||
hologram.updateShownStateFor(event.getPlayer());
|
||||
// For 1.20.2 and higher this method returns actual pack identifier, while for older versions, the identifier is a dummy UUID full of zeroes.
|
||||
// Versions prior 1.20.2 supports sending and receiving only one resource-pack and a dummy, constant identifier can be used as a key.
|
||||
private static @NotNull UUID getResourcePackID(final @NotNull PlayerResourcePackStatusEvent event) {
|
||||
try {
|
||||
event.getClass().getMethod("getID");
|
||||
return event.getID();
|
||||
} catch (final @NotNull NoSuchMethodException e) {
|
||||
return new UUID(0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
if (!this.plugin.getHologramConfiguration().areVersionNotificationsEnabled() && event.getPlayer().hasPermission("fancyholograms.admin")) {
|
||||
FancyHolograms.get().getHologramThread().submit(() -> FancyHolograms.get().getVersionConfig().checkVersionAndDisplay(event.getPlayer(), true));
|
||||
@EventHandler(priority = EventPriority.MONITOR)
|
||||
public void onPlayerLoaded(@NotNull final PlayerClientLoadedWorldEvent event) {
|
||||
for (final Hologram hologram : this.plugin.getHologramsManager().getHolograms()) {
|
||||
hologram.forceUpdateShownStateFor(event.getPlayer());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,14 +56,14 @@ public final class PlayerListener implements Listener {
|
||||
@EventHandler(priority = EventPriority.MONITOR)
|
||||
public void onTeleport(@NotNull final PlayerTeleportEvent event) {
|
||||
for (final Hologram hologram : this.plugin.getHologramsManager().getHolograms()) {
|
||||
hologram.updateShownStateFor(event.getPlayer());
|
||||
hologram.forceUpdateShownStateFor(event.getPlayer());
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR)
|
||||
public void onWorldChange(@NotNull final PlayerChangedWorldEvent event) {
|
||||
for (final Hologram hologram : this.plugin.getHologramsManager().getHolograms()) {
|
||||
hologram.updateShownStateFor(event.getPlayer());
|
||||
hologram.forceUpdateShownStateFor(event.getPlayer());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -87,15 +93,4 @@ public final class PlayerListener implements Listener {
|
||||
}
|
||||
}
|
||||
|
||||
// For 1.20.2 and higher this method returns actual pack identifier, while for older versions, the identifier is a dummy UUID full of zeroes.
|
||||
// Versions prior 1.20.2 supports sending and receiving only one resource-pack and a dummy, constant identifier can be used as a key.
|
||||
private static @NotNull UUID getResourcePackID(final @NotNull PlayerResourcePackStatusEvent event) {
|
||||
try {
|
||||
event.getClass().getMethod("getID");
|
||||
return event.getID();
|
||||
} catch (final @NotNull NoSuchMethodException e) {
|
||||
return new UUID(0,0);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user