Renamed CooldownUtils to Cooldown

This commit is contained in:
themode 2021-03-31 19:17:37 +02:00
parent 79da0de502
commit d332855bc4
10 changed files with 38 additions and 32 deletions

View File

@ -37,7 +37,7 @@ import net.minestom.server.utils.chunk.ChunkCallback;
import net.minestom.server.utils.chunk.ChunkUtils;
import net.minestom.server.utils.entity.EntityUtils;
import net.minestom.server.utils.player.PlayerUtils;
import net.minestom.server.utils.time.CooldownUtils;
import net.minestom.server.utils.time.Cooldown;
import net.minestom.server.utils.time.TimeUnit;
import net.minestom.server.utils.time.UpdateOption;
import net.minestom.server.utils.validate.Check;
@ -684,7 +684,7 @@ public class Entity implements Viewable, EventHandler, DataContainer, Permission
}
// Scheduled synchronization
if (!CooldownUtils.hasCooldown(time, lastAbsoluteSynchronizationTime, getSynchronizationCooldown())) {
if (!Cooldown.hasCooldown(time, lastAbsoluteSynchronizationTime, getSynchronizationCooldown())) {
this.lastAbsoluteSynchronizationTime = time;
sendSynchronization();
}

View File

@ -6,7 +6,7 @@ import net.minestom.server.instance.Instance;
import net.minestom.server.item.ItemStack;
import net.minestom.server.item.StackingRule;
import net.minestom.server.utils.Position;
import net.minestom.server.utils.time.CooldownUtils;
import net.minestom.server.utils.time.Cooldown;
import net.minestom.server.utils.time.TimeUnit;
import net.minestom.server.utils.time.UpdateOption;
import org.jetbrains.annotations.NotNull;
@ -75,7 +75,7 @@ public class ItemEntity extends ObjectEntity {
@Override
public void update(long time) {
if (isMergeable() && isPickable() &&
(mergeUpdateOption == null || !CooldownUtils.hasCooldown(time, lastMergeCheck, mergeUpdateOption))) {
(mergeUpdateOption == null || !Cooldown.hasCooldown(time, lastMergeCheck, mergeUpdateOption))) {
this.lastMergeCheck = time;
final Chunk chunk = instance.getChunkAt(getPosition());

View File

@ -25,7 +25,7 @@ import net.minestom.server.utils.BlockPosition;
import net.minestom.server.utils.Position;
import net.minestom.server.utils.Vector;
import net.minestom.server.utils.block.BlockIterator;
import net.minestom.server.utils.time.CooldownUtils;
import net.minestom.server.utils.time.Cooldown;
import net.minestom.server.utils.time.TimeUnit;
import net.minestom.server.utils.time.UpdateOption;
import org.jetbrains.annotations.NotNull;
@ -39,8 +39,7 @@ public class LivingEntity extends Entity implements EquipmentHandler {
// Item pickup
protected boolean canPickupItem;
protected UpdateOption itemPickupCooldown = new UpdateOption(5, TimeUnit.TICK);
private long lastItemPickupCheckTime;
protected Cooldown itemPickupCooldown = new Cooldown(new UpdateOption(5, TimeUnit.TICK));
protected boolean isDead;
@ -213,8 +212,8 @@ public class LivingEntity extends Entity implements EquipmentHandler {
}
// Items picking
if (canPickupItem() && !CooldownUtils.hasCooldown(time, lastItemPickupCheckTime, itemPickupCooldown)) {
this.lastItemPickupCheckTime = time;
if (canPickupItem() && itemPickupCooldown.isReady(time)) {
itemPickupCooldown.refreshLastUpdate(time);
final Chunk chunk = getChunk(); // TODO check surrounding chunks
final Set<Entity> entities = instance.getChunkEntities(chunk);
@ -551,7 +550,7 @@ public class LivingEntity extends Entity implements EquipmentHandler {
playerConnection.sendPacket(getEquipmentsPacket());
playerConnection.sendPacket(getPropertiesPacket());
if (getTeam() != null){
if (getTeam() != null) {
playerConnection.sendPacket(getTeam().createTeamsCreationPacket());
}

View File

@ -67,7 +67,7 @@ import net.minestom.server.utils.chunk.ChunkCallback;
import net.minestom.server.utils.chunk.ChunkUtils;
import net.minestom.server.utils.entity.EntityUtils;
import net.minestom.server.utils.instance.InstanceUtils;
import net.minestom.server.utils.time.CooldownUtils;
import net.minestom.server.utils.time.Cooldown;
import net.minestom.server.utils.time.TimeUnit;
import net.minestom.server.utils.time.UpdateOption;
import net.minestom.server.utils.validate.Check;
@ -78,7 +78,6 @@ import org.jetbrains.annotations.Nullable;
import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArraySet;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.UnaryOperator;
@ -152,8 +151,7 @@ public class Player extends LivingEntity implements CommandSender, Localizable,
private float lastPlayerSyncYaw, lastPlayerSyncPitch;
// Experience orb pickup
protected UpdateOption experiencePickupCooldown = new UpdateOption(10, TimeUnit.TICK);
private long lastExperiencePickupCheckTime;
protected Cooldown experiencePickupCooldown = new Cooldown(new UpdateOption(10, TimeUnit.TICK));
private BelowNameTag belowNameTag;
@ -374,9 +372,8 @@ public class Player extends LivingEntity implements CommandSender, Localizable,
}
// Experience orb pickup
if (!CooldownUtils.hasCooldown(time, lastExperiencePickupCheckTime, experiencePickupCooldown)) {
this.lastExperiencePickupCheckTime = time;
if (experiencePickupCooldown.isReady(time)) {
experiencePickupCooldown.refreshLastUpdate(time);
final Chunk chunk = getChunk(); // TODO check surrounding chunks
final Set<Entity> entities = instance.getChunkEntities(chunk);
for (Entity entity : entities) {

View File

@ -7,7 +7,7 @@ import net.minestom.server.entity.ai.GoalSelector;
import net.minestom.server.entity.pathfinding.Navigator;
import net.minestom.server.entity.type.projectile.EntityProjectile;
import net.minestom.server.utils.Position;
import net.minestom.server.utils.time.CooldownUtils;
import net.minestom.server.utils.time.Cooldown;
import net.minestom.server.utils.time.TimeUnit;
import net.minestom.server.utils.validate.Check;
import org.jetbrains.annotations.NotNull;
@ -122,12 +122,12 @@ public class CombinedAttackGoal extends GoalSelector {
boolean comeClose = false;
// First of all, checking if to perform melee or ranged attack depending on the distance to target.
if (distanceSquared <= this.meleeRangeSquared) {
if (!CooldownUtils.hasCooldown(time, this.lastAttack, this.meleeTimeUnit, this.meleeDelay)) {
if (!Cooldown.hasCooldown(time, this.lastAttack, this.meleeTimeUnit, this.meleeDelay)) {
this.entityCreature.attack(target, true);
this.lastAttack = time;
}
} else if (distanceSquared <= this.rangedRangeSquared) {
if (!CooldownUtils.hasCooldown(time, this.lastAttack, this.rangedTimeUnit, this.rangedDelay)) {
if (!Cooldown.hasCooldown(time, this.lastAttack, this.rangedTimeUnit, this.rangedDelay)) {
if (this.entityCreature.hasLineOfSight(target)) {
// If target is on line of entity sight, ranged attack can be performed
Position to = target.getPosition().clone().add(0D, target.getEyeHeight(), 0D);

View File

@ -6,11 +6,9 @@ import net.minestom.server.entity.ai.GoalSelector;
import net.minestom.server.entity.ai.TargetSelector;
import net.minestom.server.entity.pathfinding.Navigator;
import net.minestom.server.utils.Position;
import net.minestom.server.utils.time.CooldownUtils;
import net.minestom.server.utils.time.Cooldown;
import net.minestom.server.utils.time.TimeUnit;
import net.minestom.server.utils.validate.Check;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* Attacks the entity's target ({@link EntityCreature#getTarget()}) OR the closest entity
@ -67,7 +65,7 @@ public class MeleeAttackGoal extends GoalSelector {
// Attack the target entity
if (entityCreature.getDistance(target) <= range) {
if (!CooldownUtils.hasCooldown(time, lastHit, timeUnit, delay)) {
if (!Cooldown.hasCooldown(time, lastHit, timeUnit, delay)) {
entityCreature.attack(target, true);
this.lastHit = time;
}

View File

@ -7,7 +7,7 @@ import net.minestom.server.entity.ai.GoalSelector;
import net.minestom.server.entity.pathfinding.Navigator;
import net.minestom.server.entity.type.projectile.EntityProjectile;
import net.minestom.server.utils.Position;
import net.minestom.server.utils.time.CooldownUtils;
import net.minestom.server.utils.time.Cooldown;
import net.minestom.server.utils.time.TimeUnit;
import net.minestom.server.utils.validate.Check;
import org.jetbrains.annotations.NotNull;
@ -83,7 +83,7 @@ public class RangedAttackGoal extends GoalSelector {
double distanceSquared = this.entityCreature.getDistanceSquared(target);
boolean comeClose = false;
if (distanceSquared <= this.attackRangeSquared) {
if (!CooldownUtils.hasCooldown(time, this.lastShot, this.timeUnit, this.delay)) {
if (!Cooldown.hasCooldown(time, this.lastShot, this.timeUnit, this.delay)) {
if (this.entityCreature.hasLineOfSight(target)) {
Position to = target.getPosition().clone().add(0D, target.getEyeHeight(), 0D);

View File

@ -19,7 +19,7 @@ import net.minestom.server.utils.block.CustomBlockUtils;
import net.minestom.server.utils.callback.OptionalCallback;
import net.minestom.server.utils.chunk.ChunkCallback;
import net.minestom.server.utils.chunk.ChunkUtils;
import net.minestom.server.utils.time.CooldownUtils;
import net.minestom.server.utils.time.Cooldown;
import net.minestom.server.utils.time.UpdateOption;
import net.minestom.server.utils.validate.Check;
import net.minestom.server.world.biomes.Biome;
@ -145,7 +145,7 @@ public class DynamicChunk extends Chunk {
final UpdateOption updateOption = customBlock.getUpdateOption();
if (updateOption != null) {
final long lastUpdate = updatableBlocksLastUpdate.get(index);
final boolean hasCooldown = CooldownUtils.hasCooldown(time, lastUpdate, updateOption);
final boolean hasCooldown = Cooldown.hasCooldown(time, lastUpdate, updateOption);
if (hasCooldown)
continue;

View File

@ -30,7 +30,7 @@ import net.minestom.server.utils.Position;
import net.minestom.server.utils.chunk.ChunkCallback;
import net.minestom.server.utils.chunk.ChunkUtils;
import net.minestom.server.utils.entity.EntityUtils;
import net.minestom.server.utils.time.CooldownUtils;
import net.minestom.server.utils.time.Cooldown;
import net.minestom.server.utils.time.TimeUnit;
import net.minestom.server.utils.time.UpdateOption;
import net.minestom.server.utils.validate.Check;
@ -1026,7 +1026,7 @@ public abstract class Instance implements BlockModifier, EventHandler, DataConta
this.time += timeRate;
// time needs to be send to players
if (timeUpdate != null && !CooldownUtils.hasCooldown(time, lastTimeUpdate, timeUpdate)) {
if (timeUpdate != null && !Cooldown.hasCooldown(time, lastTimeUpdate, timeUpdate)) {
PacketUtils.sendGroupedPacket(getPlayers(), createTimePacket());
this.lastTimeUpdate = time;
}

View File

@ -2,10 +2,22 @@ package net.minestom.server.utils.time;
import org.jetbrains.annotations.NotNull;
public final class CooldownUtils {
public final class Cooldown {
private CooldownUtils() {
private UpdateOption updateOption;
private long lastUpdate;
public Cooldown(@NotNull UpdateOption updateOption) {
this.updateOption = updateOption;
this.lastUpdate = System.currentTimeMillis();
}
public void refreshLastUpdate(long lastUpdate) {
this.lastUpdate = lastUpdate;
}
public boolean isReady(long time) {
return !hasCooldown(time, lastUpdate, updateOption.getTimeUnit(), updateOption.getValue());
}
/**