diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/types/CosmeticBalloonType.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/types/CosmeticBalloonType.java index 27102443..977b9eba 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/types/CosmeticBalloonType.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/types/CosmeticBalloonType.java @@ -72,11 +72,12 @@ public class CosmeticBalloonType extends Cosmetic { userBalloonManager.setLocation(newLocation); PacketManager.sendTeleportPacket(userBalloonManager.getPufferfishBalloonId(), newLocation, false, viewer); + PacketManager.sendLeashPacket(userBalloonManager.getPufferfishBalloonId(), entity.getEntityId(), viewer); if (!user.getHidden() && showLead) { List sendTo = userBalloonManager.getPufferfish().refreshViewers(newLocation); + if (sendTo.isEmpty()) return; PacketManager.sendEntitySpawnPacket(newLocation, userBalloonManager.getPufferfishBalloonId(), EntityType.PUFFERFISH, userBalloonManager.getPufferfishBalloonUniqueId(), sendTo); PacketManager.sendInvisibilityPacket(userBalloonManager.getPufferfishBalloonId(), sendTo); - PacketManager.sendLeashPacket(userBalloonManager.getPufferfishBalloonId(), entity.getEntityId(), viewer); } } diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/user/manager/UserBalloonPufferfish.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/user/manager/UserBalloonPufferfish.java index 4be51b3e..d5f73c1b 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/user/manager/UserBalloonPufferfish.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/user/manager/UserBalloonPufferfish.java @@ -1,5 +1,6 @@ package com.hibiscusmc.hmccosmetics.user.manager; +import com.hibiscusmc.hmccosmetics.util.MessagesUtil; import com.hibiscusmc.hmccosmetics.util.PlayerUtils; import com.hibiscusmc.hmccosmetics.util.packets.PacketManager; import org.bukkit.Location; @@ -14,10 +15,12 @@ public class UserBalloonPufferfish { private int id; private UUID uuid; private List viewers = new ArrayList<>(); + private Long lastUpdate; public UserBalloonPufferfish(int id, UUID uuid) { this.id = id; this.uuid = uuid; + this.lastUpdate = System.currentTimeMillis(); } public int getId() { @@ -29,11 +32,11 @@ public class UserBalloonPufferfish { } public List refreshViewers(Location location) { + if (System.currentTimeMillis() - lastUpdate <= 1000) return List.of(); //Prevents mass refreshes ArrayList newPlayers = new ArrayList<>(); ArrayList removePlayers = new ArrayList<>(); List players = PlayerUtils.getNearbyPlayers(location); - for (Player player : players) { if (!viewers.contains(player)) { viewers.add(player); @@ -49,6 +52,7 @@ public class UserBalloonPufferfish { } } viewers.removeAll(removePlayers); + lastUpdate = System.currentTimeMillis(); return newPlayers; } }