From 1ae2cf78af242ca7587763970f7f0eae0f73c6e7 Mon Sep 17 00:00:00 2001 From: Konstantin Shandurenko Date: Mon, 1 Mar 2021 13:09:08 +0300 Subject: [PATCH] Added support of custom entity position synchronization cooldown --- .../net/minestom/server/entity/Entity.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/minestom/server/entity/Entity.java b/src/main/java/net/minestom/server/entity/Entity.java index 7d9298bdb..6c61f512d 100644 --- a/src/main/java/net/minestom/server/entity/Entity.java +++ b/src/main/java/net/minestom/server/entity/Entity.java @@ -101,6 +101,7 @@ public class Entity implements Viewable, EventHandler, DataContainer, Permission // Network synchronization, send the absolute position of the entity each X milliseconds private static final UpdateOption SYNCHRONIZATION_COOLDOWN = new UpdateOption(1500, TimeUnit.MILLISECOND); + private UpdateOption customSynchronizationCooldown; private long lastAbsoluteSynchronizationTime; // Events @@ -670,7 +671,7 @@ public class Entity implements Viewable, EventHandler, DataContainer, Permission } // Scheduled synchronization - if (!CooldownUtils.hasCooldown(time, lastAbsoluteSynchronizationTime, SYNCHRONIZATION_COOLDOWN)) { + if (!CooldownUtils.hasCooldown(time, lastAbsoluteSynchronizationTime, getSynchronizationCooldown())) { this.lastAbsoluteSynchronizationTime = time; sendSynchronization(); } @@ -1485,6 +1486,22 @@ public class Entity implements Viewable, EventHandler, DataContainer, Permission this.lastAbsoluteSynchronizationTime = 0; } + /** + * Set custom cooldown for position synchronization. + * + * @param cooldown custom cooldown for position synchronization. + */ + public void setCustomSynchronizationCooldown(@Nullable UpdateOption cooldown) { + this.customSynchronizationCooldown = cooldown; + } + + private UpdateOption getSynchronizationCooldown() { + if (this.customSynchronizationCooldown != null) { + return this.customSynchronizationCooldown; + } + return SYNCHRONIZATION_COOLDOWN; + } + public enum Pose { STANDING, FALL_FLYING,