From b682dd7c4293daa3651b456e34ee1a0d346565d2 Mon Sep 17 00:00:00 2001 From: LoJoSho Date: Thu, 22 Jun 2023 13:15:44 -0500 Subject: [PATCH] feat: optimize new packet pufferfish system --- .../hmccosmetics/cosmetic/types/CosmeticBalloonType.java | 3 ++- .../hmccosmetics/user/manager/UserBalloonPufferfish.java | 6 +++++- 2 files changed, 7 insertions(+), 2 deletions(-) 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; } }