mirror of
https://github.com/Minestom/Minestom.git
synced 2025-02-16 04:11:39 +01:00
Store audiences to reduce object allocation
This commit is contained in:
parent
30cfd854a2
commit
7fd3daae5f
@ -7,12 +7,24 @@ import net.minestom.server.entity.Player;
|
|||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Utility class to access Adventure audiences.
|
* Utility class to access Adventure audiences.
|
||||||
*/
|
*/
|
||||||
public class Audiences implements AudienceProvider<Audience> {
|
public class Audiences implements AudienceProvider<Audience> {
|
||||||
private final IterableAudienceProvider collection = new IterableAudienceProvider();
|
private final IterableAudienceProvider collection;
|
||||||
|
private final Audience players, server;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new audiences instance. <b>Do not</b> instantiate this class, instead
|
||||||
|
* you can obtain an instance using {@link #audiences()}.
|
||||||
|
*/
|
||||||
|
public Audiences() {
|
||||||
|
this.collection = new IterableAudienceProvider();
|
||||||
|
this.players = PacketGroupingAudience.of(MinecraftServer.getConnectionManager().getOnlinePlayers());
|
||||||
|
this.server = Audience.audience(this.players, MinecraftServer.getCommandManager().getConsoleSender());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Short-hand method for {@link MinecraftServer#getAudiences()}.
|
* Short-hand method for {@link MinecraftServer#getAudiences()}.
|
||||||
@ -32,17 +44,17 @@ public class Audiences implements AudienceProvider<Audience> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull Audience all() {
|
public @NotNull Audience all() {
|
||||||
return Audience.audience(this.players(), this.console(), this.custom());
|
return Audience.audience(this.server, this.custom());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull Audience players() {
|
public @NotNull Audience players() {
|
||||||
return PacketGroupingAudience.of(this.iterable().players());
|
return this.players;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull Audience players(@NotNull Predicate<Player> filter) {
|
public @NotNull Audience players(@NotNull Predicate<Player> filter) {
|
||||||
return PacketGroupingAudience.of(this.iterable().players(filter));
|
return PacketGroupingAudience.of(MinecraftServer.getConnectionManager().getOnlinePlayers().stream().filter(filter).collect(Collectors.toList()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -52,7 +64,7 @@ public class Audiences implements AudienceProvider<Audience> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull Audience server() {
|
public @NotNull Audience server() {
|
||||||
return Audience.audience(this.players(), this.console());
|
return this.server;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Loading…
Reference in New Issue
Block a user