mirror of
https://github.com/Minestom/Minestom.git
synced 2024-09-27 14:13:24 +02:00
Cache the unmodifiable viewers set to mitigate object allocation
This commit is contained in:
parent
0645c4c764
commit
f2c586177f
@ -27,6 +27,7 @@ public class BossBar implements Viewable {
|
||||
|
||||
private final UUID uuid = UUID.randomUUID();
|
||||
private final Set<Player> viewers = new CopyOnWriteArraySet<>();
|
||||
private final Set<Player> unmodifiableViewers = Collections.unmodifiableSet(viewers);
|
||||
|
||||
private ColoredText title;
|
||||
private float progress;
|
||||
@ -89,7 +90,7 @@ public class BossBar implements Viewable {
|
||||
@NotNull
|
||||
@Override
|
||||
public Set<Player> getViewers() {
|
||||
return Collections.unmodifiableSet(viewers);
|
||||
return unmodifiableViewers;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -93,6 +93,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer, P
|
||||
private boolean autoViewable;
|
||||
private final int id;
|
||||
protected final Set<Player> viewers = new CopyOnWriteArraySet<>();
|
||||
private final Set<Player> unmodifiableViewers = Collections.unmodifiableSet(viewers);
|
||||
private Data data;
|
||||
private final Set<Permission> permissions = new CopyOnWriteArraySet<>();
|
||||
|
||||
@ -325,7 +326,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer, P
|
||||
@NotNull
|
||||
@Override
|
||||
public Set<Player> getViewers() {
|
||||
return Collections.unmodifiableSet(viewers);
|
||||
return unmodifiableViewers;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -76,6 +76,7 @@ public abstract class Chunk implements Viewable, DataContainer {
|
||||
|
||||
protected volatile boolean loaded = true;
|
||||
protected final Set<Player> viewers = new CopyOnWriteArraySet<>();
|
||||
private final Set<Player> unmodifiableViewers = Collections.unmodifiableSet(viewers);
|
||||
|
||||
// Path finding
|
||||
protected PFColumnarSpace columnarSpace;
|
||||
@ -489,7 +490,7 @@ public abstract class Chunk implements Viewable, DataContainer {
|
||||
@NotNull
|
||||
@Override
|
||||
public Set<Player> getViewers() {
|
||||
return Collections.unmodifiableSet(viewers);
|
||||
return unmodifiableViewers;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
@ -58,6 +58,7 @@ public class Inventory implements InventoryModifier, InventoryClickHandler, View
|
||||
private final ItemStack[] itemStacks;
|
||||
// the players currently viewing this inventory
|
||||
private final Set<Player> viewers = new CopyOnWriteArraySet<>();
|
||||
private final Set<Player> unmodifiableViewers = Collections.unmodifiableSet(viewers);
|
||||
// (player -> cursor item) map, used by the click listeners
|
||||
private final ConcurrentHashMap<Player, ItemStack> cursorPlayersItem = new ConcurrentHashMap<>();
|
||||
|
||||
@ -251,7 +252,7 @@ public class Inventory implements InventoryModifier, InventoryClickHandler, View
|
||||
@NotNull
|
||||
@Override
|
||||
public Set<Player> getViewers() {
|
||||
return Collections.unmodifiableSet(viewers);
|
||||
return unmodifiableViewers;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -10,7 +10,7 @@ import java.util.Set;
|
||||
import java.util.concurrent.CopyOnWriteArraySet;
|
||||
|
||||
/**
|
||||
* Represents a scoreboard which rendered a tag below the name
|
||||
* Represents a scoreboard which rendered a tag below the name.
|
||||
*/
|
||||
public class BelowNameTag implements Scoreboard {
|
||||
|
||||
@ -20,12 +20,13 @@ public class BelowNameTag implements Scoreboard {
|
||||
public static final String BELOW_NAME_TAG_PREFIX = "bnt-";
|
||||
|
||||
private final Set<Player> viewers = new CopyOnWriteArraySet<>();
|
||||
private final Set<Player> unmodifiableViewers = Collections.unmodifiableSet(viewers);
|
||||
private final String objectiveName;
|
||||
|
||||
private final ScoreboardObjectivePacket scoreboardObjectivePacket;
|
||||
|
||||
/**
|
||||
* Creates a new below name scoreboard
|
||||
* Creates a new below name scoreboard.
|
||||
*
|
||||
* @param name The objective name of the scoreboard
|
||||
* @param value The value of the scoreboard
|
||||
@ -72,6 +73,6 @@ public class BelowNameTag implements Scoreboard {
|
||||
@NotNull
|
||||
@Override
|
||||
public Set<Player> getViewers() {
|
||||
return Collections.unmodifiableSet(viewers);
|
||||
return unmodifiableViewers;
|
||||
}
|
||||
}
|
||||
|
@ -14,6 +14,7 @@ import net.minestom.server.utils.validate.Check;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Iterator;
|
||||
import java.util.Queue;
|
||||
import java.util.Set;
|
||||
@ -46,6 +47,7 @@ public class Sidebar implements Scoreboard {
|
||||
private static final int MAX_LINES_COUNT = 15;
|
||||
|
||||
private final Set<Player> viewers = new CopyOnWriteArraySet<>();
|
||||
private final Set<Player> unmodifiableViewers = Collections.unmodifiableSet(viewers);
|
||||
|
||||
private final Queue<ScoreboardLine> lines = Queues.newConcurrentLinkedQueue();
|
||||
private final IntLinkedOpenHashSet availableColors = new IntLinkedOpenHashSet();
|
||||
@ -218,7 +220,7 @@ public class Sidebar implements Scoreboard {
|
||||
@NotNull
|
||||
@Override
|
||||
public Set<Player> getViewers() {
|
||||
return viewers;
|
||||
return unmodifiableViewers;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -10,7 +10,7 @@ import java.util.Set;
|
||||
import java.util.concurrent.CopyOnWriteArraySet;
|
||||
|
||||
/**
|
||||
* Represents the {@link Player} tab list as a {@link Scoreboard}
|
||||
* Represents the {@link Player} tab list as a {@link Scoreboard}.
|
||||
*/
|
||||
public class TabList implements Scoreboard {
|
||||
|
||||
@ -19,13 +19,13 @@ public class TabList implements Scoreboard {
|
||||
*/
|
||||
private static final String TAB_LIST_PREFIX = "tl-";
|
||||
|
||||
private final Set<Player> viewers;
|
||||
private final Set<Player> viewers = new CopyOnWriteArraySet<>();
|
||||
private final Set<Player> unmodifiableViewers = Collections.unmodifiableSet(viewers);
|
||||
private final String objectiveName;
|
||||
|
||||
private ScoreboardObjectivePacket.Type type;
|
||||
|
||||
public TabList(String name, ScoreboardObjectivePacket.Type type) {
|
||||
this.viewers = new CopyOnWriteArraySet<>();
|
||||
this.objectiveName = TAB_LIST_PREFIX + name;
|
||||
|
||||
this.type = type;
|
||||
@ -77,7 +77,7 @@ public class TabList implements Scoreboard {
|
||||
@NotNull
|
||||
@Override
|
||||
public Set<Player> getViewers() {
|
||||
return Collections.unmodifiableSet(this.viewers);
|
||||
return unmodifiableViewers;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
Loading…
Reference in New Issue
Block a user