mirror of
https://github.com/filoghost/HolographicDisplays.git
synced 2024-12-21 16:28:37 +01:00
Make some placeholder-related classes not static
This commit is contained in:
parent
6cc28cc957
commit
9a56a032de
@ -24,10 +24,12 @@ public class DefaultBackendAPI extends BackendAPI {
|
||||
|
||||
private final APIHologramManager apiHologramManager;
|
||||
private final NMSManager nmsManager;
|
||||
private final PlaceholdersRegistry placeholderRegistry;
|
||||
|
||||
public DefaultBackendAPI(APIHologramManager apiHologramManager, NMSManager nmsManager) {
|
||||
public DefaultBackendAPI(APIHologramManager apiHologramManager, NMSManager nmsManager, PlaceholdersRegistry placeholderRegistry) {
|
||||
this.apiHologramManager = apiHologramManager;
|
||||
this.nmsManager = nmsManager;
|
||||
this.placeholderRegistry = placeholderRegistry;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -46,7 +48,7 @@ public class DefaultBackendAPI extends BackendAPI {
|
||||
Preconditions.checkArgument(refreshRate >= 0, "refreshRate should be positive");
|
||||
Preconditions.notNull(replacer, "replacer");
|
||||
|
||||
return PlaceholdersRegistry.register(new Placeholder(plugin, textPlaceholder, refreshRate, replacer));
|
||||
return placeholderRegistry.register(new Placeholder(plugin, textPlaceholder, refreshRate, replacer));
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -64,14 +66,14 @@ public class DefaultBackendAPI extends BackendAPI {
|
||||
@Override
|
||||
public Collection<String> getRegisteredPlaceholders(Plugin plugin) {
|
||||
Preconditions.notNull(plugin, "plugin");
|
||||
return PlaceholdersRegistry.getTextPlaceholdersByPlugin(plugin);
|
||||
return placeholderRegistry.getTextPlaceholdersByPlugin(plugin);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean unregisterPlaceholder(Plugin plugin, String textPlaceholder) {
|
||||
Preconditions.notNull(plugin, "plugin");
|
||||
Preconditions.notNull(textPlaceholder, "textPlaceholder");
|
||||
return PlaceholdersRegistry.unregister(plugin, textPlaceholder);
|
||||
return placeholderRegistry.unregister(plugin, textPlaceholder);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -47,6 +47,8 @@ public class HolographicDisplays extends FCommonsPlugin implements ProtocolPacke
|
||||
private InternalHologramManager internalHologramManager;
|
||||
private APIHologramManager apiHologramManager;
|
||||
private BungeeServerTracker bungeeServerTracker;
|
||||
private AnimationsRegistry animationRegistry;
|
||||
private PlaceholdersManager placeholderManager;
|
||||
|
||||
@Override
|
||||
public void onCheckedEnable() throws PluginEnableException {
|
||||
@ -87,11 +89,13 @@ public class HolographicDisplays extends FCommonsPlugin implements ProtocolPacke
|
||||
} catch (Exception e) {
|
||||
throw new PluginEnableException(e, "Couldn't initialize the NMS manager.");
|
||||
}
|
||||
|
||||
|
||||
bungeeServerTracker = new BungeeServerTracker(this);
|
||||
animationRegistry = new AnimationsRegistry();
|
||||
placeholderManager = new PlaceholdersManager(bungeeServerTracker, animationRegistry);
|
||||
configManager = new ConfigManager(getDataFolder().toPath());
|
||||
internalHologramManager = new InternalHologramManager(nmsManager);
|
||||
apiHologramManager = new APIHologramManager(nmsManager);
|
||||
internalHologramManager = new InternalHologramManager(nmsManager, placeholderManager);
|
||||
apiHologramManager = new APIHologramManager(nmsManager, placeholderManager);
|
||||
|
||||
PrintableErrorCollector errorCollector = new PrintableErrorCollector();
|
||||
|
||||
@ -107,7 +111,7 @@ public class HolographicDisplays extends FCommonsPlugin implements ProtocolPacke
|
||||
ProtocolLibHook.setup(this, nmsManager, this, errorCollector);
|
||||
|
||||
// Start repeating tasks.
|
||||
PlaceholdersManager.startRefreshTask(this, bungeeServerTracker);
|
||||
placeholderManager.startRefreshTask(this);
|
||||
Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new BungeeCleanupTask(bungeeServerTracker), 5 * 60 * 20, 5 * 60 * 20);
|
||||
Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new WorldPlayerCounterTask(), 0L, 3 * 20);
|
||||
|
||||
@ -121,7 +125,7 @@ public class HolographicDisplays extends FCommonsPlugin implements ProtocolPacke
|
||||
registerListener(updateNotificationListener);
|
||||
|
||||
// Enable the API.
|
||||
BackendAPI.setImplementation(new DefaultBackendAPI(apiHologramManager, nmsManager));
|
||||
BackendAPI.setImplementation(new DefaultBackendAPI(apiHologramManager, nmsManager, placeholderManager.getRegistry()));
|
||||
|
||||
// Register bStats metrics
|
||||
int pluginID = 3123;
|
||||
@ -136,7 +140,7 @@ public class HolographicDisplays extends FCommonsPlugin implements ProtocolPacke
|
||||
}
|
||||
|
||||
public void load(boolean deferHologramsCreation, ErrorCollector errorCollector) {
|
||||
PlaceholdersManager.untrackAll();
|
||||
placeholderManager.untrackAll();
|
||||
internalHologramManager.clearAll();
|
||||
bungeeServerTracker.resetTrackedServers();
|
||||
|
||||
@ -144,7 +148,7 @@ public class HolographicDisplays extends FCommonsPlugin implements ProtocolPacke
|
||||
configManager.reloadMainConfig(errorCollector);
|
||||
HologramDatabase hologramDatabase = configManager.loadHologramDatabase(errorCollector);
|
||||
try {
|
||||
AnimationsRegistry.loadAnimations(configManager, errorCollector);
|
||||
animationRegistry.loadAnimations(configManager, errorCollector);
|
||||
} catch (IOException | ConfigException e) {
|
||||
errorCollector.add(e, "failed to load animation files");
|
||||
}
|
||||
|
@ -14,6 +14,7 @@ import me.filoghost.holographicdisplays.api.line.TextLine;
|
||||
import me.filoghost.holographicdisplays.core.nms.NMSManager;
|
||||
import me.filoghost.holographicdisplays.disk.Configuration;
|
||||
import me.filoghost.holographicdisplays.object.base.BaseHologram;
|
||||
import me.filoghost.holographicdisplays.placeholder.PlaceholdersManager;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
@ -30,8 +31,8 @@ public class APIHologram extends BaseHologram<APIHologramLine> implements Hologr
|
||||
|
||||
private boolean allowPlaceholders;
|
||||
|
||||
protected APIHologram(Location source, Plugin plugin, NMSManager nmsManager, APIHologramManager apiHologramManager) {
|
||||
super(source, nmsManager);
|
||||
protected APIHologram(Location source, Plugin plugin, NMSManager nmsManager, APIHologramManager apiHologramManager, PlaceholdersManager placeholderManager) {
|
||||
super(source, nmsManager, placeholderManager);
|
||||
Preconditions.notNull(plugin, "plugin");
|
||||
this.plugin = plugin;
|
||||
this.apiHologramManager = apiHologramManager;
|
||||
|
@ -8,6 +8,7 @@ package me.filoghost.holographicdisplays.object.api;
|
||||
import me.filoghost.holographicdisplays.api.Hologram;
|
||||
import me.filoghost.holographicdisplays.core.nms.NMSManager;
|
||||
import me.filoghost.holographicdisplays.object.base.BaseHologramManager;
|
||||
import me.filoghost.holographicdisplays.placeholder.PlaceholdersManager;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
@ -19,13 +20,15 @@ import java.util.List;
|
||||
public class APIHologramManager extends BaseHologramManager<APIHologram> {
|
||||
|
||||
private final NMSManager nmsManager;
|
||||
private final PlaceholdersManager placeholderManager;
|
||||
|
||||
public APIHologramManager(NMSManager nmsManager) {
|
||||
public APIHologramManager(NMSManager nmsManager, PlaceholdersManager placeholderManager) {
|
||||
this.nmsManager = nmsManager;
|
||||
this.placeholderManager = placeholderManager;
|
||||
}
|
||||
|
||||
public Hologram createHologram(Location source, Plugin plugin) {
|
||||
APIHologram hologram = new APIHologram(source, plugin, nmsManager, this);
|
||||
APIHologram hologram = new APIHologram(source, plugin, nmsManager, this, placeholderManager);
|
||||
super.addHologram(hologram);
|
||||
return hologram;
|
||||
}
|
||||
|
@ -10,6 +10,7 @@ import me.filoghost.holographicdisplays.core.hologram.StandardHologram;
|
||||
import me.filoghost.holographicdisplays.core.hologram.StandardHologramLine;
|
||||
import me.filoghost.holographicdisplays.core.nms.NMSManager;
|
||||
import me.filoghost.holographicdisplays.disk.Configuration;
|
||||
import me.filoghost.holographicdisplays.placeholder.PlaceholdersManager;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
|
||||
@ -21,12 +22,14 @@ import java.util.List;
|
||||
public abstract class BaseHologram<T extends StandardHologramLine> extends BaseHologramComponent implements StandardHologram {
|
||||
|
||||
private final NMSManager nmsManager;
|
||||
private final PlaceholdersManager placeholderManager;
|
||||
private final List<T> lines;
|
||||
private final List<T> unmodifiableLinesView;
|
||||
|
||||
private boolean deleted;
|
||||
|
||||
public BaseHologram(Location location, NMSManager nmsManager) {
|
||||
public BaseHologram(Location location, NMSManager nmsManager, PlaceholdersManager placeholderManager) {
|
||||
this.placeholderManager = placeholderManager;
|
||||
Preconditions.notNull(location, "location");
|
||||
this.setLocation(location);
|
||||
this.nmsManager = nmsManager;
|
||||
@ -38,6 +41,10 @@ public abstract class BaseHologram<T extends StandardHologramLine> extends BaseH
|
||||
return nmsManager;
|
||||
}
|
||||
|
||||
protected final PlaceholdersManager getPlaceholderManager() {
|
||||
return placeholderManager;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDeleted() {
|
||||
return deleted;
|
||||
|
@ -11,6 +11,7 @@ import me.filoghost.holographicdisplays.core.hologram.StandardHologram;
|
||||
import me.filoghost.holographicdisplays.core.hologram.StandardHologramLine;
|
||||
import me.filoghost.holographicdisplays.core.nms.NMSManager;
|
||||
import me.filoghost.holographicdisplays.core.nms.SpawnFailedException;
|
||||
import me.filoghost.holographicdisplays.placeholder.PlaceholdersManager;
|
||||
import org.bukkit.World;
|
||||
|
||||
public abstract class BaseHologramLine extends BaseHologramComponent implements StandardHologramLine {
|
||||
@ -33,6 +34,10 @@ public abstract class BaseHologramLine extends BaseHologramComponent implements
|
||||
return hologram.getNMSManager();
|
||||
}
|
||||
|
||||
protected final PlaceholdersManager getPlaceholderManager() {
|
||||
return hologram.getPlaceholderManager();
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void respawn(World world, double x, double y, double z) {
|
||||
Preconditions.notNull(world, "world");
|
||||
|
@ -9,7 +9,6 @@ import me.filoghost.holographicdisplays.core.hologram.StandardTextLine;
|
||||
import me.filoghost.holographicdisplays.core.nms.SpawnFailedException;
|
||||
import me.filoghost.holographicdisplays.core.nms.entity.NMSArmorStand;
|
||||
import me.filoghost.holographicdisplays.core.placeholder.RelativePlaceholder;
|
||||
import me.filoghost.holographicdisplays.placeholder.PlaceholdersManager;
|
||||
import org.bukkit.World;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@ -41,12 +40,12 @@ public abstract class BaseTextLine extends BaseTouchableLine implements Standard
|
||||
if (text != null && !text.isEmpty()) {
|
||||
textEntity.setCustomNameNMS(text);
|
||||
if (isAllowPlaceholders()) {
|
||||
PlaceholdersManager.trackIfNecessary(this);
|
||||
getPlaceholderManager().trackIfNecessary(this);
|
||||
}
|
||||
} else {
|
||||
textEntity.setCustomNameNMS(""); // It will not appear
|
||||
if (isAllowPlaceholders()) {
|
||||
PlaceholdersManager.untrack(this);
|
||||
getPlaceholderManager().untrack(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -72,7 +71,7 @@ public abstract class BaseTextLine extends BaseTouchableLine implements Standard
|
||||
}
|
||||
|
||||
if (isAllowPlaceholders()) {
|
||||
PlaceholdersManager.trackIfNecessary(this);
|
||||
getPlaceholderManager().trackIfNecessary(this);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -8,6 +8,7 @@ package me.filoghost.holographicdisplays.object.internal;
|
||||
import me.filoghost.holographicdisplays.HolographicDisplays;
|
||||
import me.filoghost.holographicdisplays.core.nms.NMSManager;
|
||||
import me.filoghost.holographicdisplays.object.base.BaseHologram;
|
||||
import me.filoghost.holographicdisplays.placeholder.PlaceholdersManager;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
@ -17,8 +18,8 @@ public class InternalHologram extends BaseHologram<InternalHologramLine> {
|
||||
|
||||
private final String name;
|
||||
|
||||
protected InternalHologram(Location source, String name, NMSManager nmsManager) {
|
||||
super(source, nmsManager);
|
||||
protected InternalHologram(Location source, String name, NMSManager nmsManager, PlaceholdersManager placeholderManager) {
|
||||
super(source, nmsManager, placeholderManager);
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
|
@ -7,18 +7,21 @@ package me.filoghost.holographicdisplays.object.internal;
|
||||
|
||||
import me.filoghost.holographicdisplays.core.nms.NMSManager;
|
||||
import me.filoghost.holographicdisplays.object.base.BaseHologramManager;
|
||||
import me.filoghost.holographicdisplays.placeholder.PlaceholdersManager;
|
||||
import org.bukkit.Location;
|
||||
|
||||
public class InternalHologramManager extends BaseHologramManager<InternalHologram> {
|
||||
|
||||
private final NMSManager nmsManager;
|
||||
private final PlaceholdersManager placeholderManager;
|
||||
|
||||
public InternalHologramManager(NMSManager nmsManager) {
|
||||
public InternalHologramManager(NMSManager nmsManager, PlaceholdersManager placeholderManager) {
|
||||
this.nmsManager = nmsManager;
|
||||
this.placeholderManager = placeholderManager;
|
||||
}
|
||||
|
||||
public InternalHologram createHologram(Location source, String name) {
|
||||
InternalHologram hologram = new InternalHologram(source, name, nmsManager);
|
||||
InternalHologram hologram = new InternalHologram(source, name, nmsManager, placeholderManager);
|
||||
super.addHologram(hologram);
|
||||
return hologram;
|
||||
}
|
||||
|
@ -24,9 +24,9 @@ public class AnimationsRegistry {
|
||||
|
||||
private static final String SPEED_PREFIX = "speed:";
|
||||
|
||||
private static final Map<String, Placeholder> animationsByFilename = new HashMap<>();
|
||||
private final Map<String, Placeholder> animationsByFilename = new HashMap<>();
|
||||
|
||||
public static void loadAnimations(ConfigManager configManager, ErrorCollector errorCollector) throws IOException, ConfigSaveException {
|
||||
public void loadAnimations(ConfigManager configManager, ErrorCollector errorCollector) throws IOException, ConfigSaveException {
|
||||
animationsByFilename.clear();
|
||||
Path animationFolder = configManager.getAnimationsFolder();
|
||||
|
||||
@ -41,7 +41,7 @@ public class AnimationsRegistry {
|
||||
}
|
||||
}
|
||||
|
||||
private static void readAnimationFile(Path file, ErrorCollector errorCollector) {
|
||||
private void readAnimationFile(Path file, ErrorCollector errorCollector) {
|
||||
String fileName = file.getFileName().toString();
|
||||
|
||||
try {
|
||||
@ -89,11 +89,11 @@ public class AnimationsRegistry {
|
||||
}
|
||||
|
||||
|
||||
public static Map<String, Placeholder> getAnimationsByFilename() {
|
||||
public Map<String, Placeholder> getAnimationsByFilename() {
|
||||
return animationsByFilename;
|
||||
}
|
||||
|
||||
public static Placeholder getAnimation(String name) {
|
||||
public Placeholder getAnimation(String name) {
|
||||
return animationsByFilename.get(name);
|
||||
}
|
||||
|
||||
|
@ -26,9 +26,6 @@ import java.util.regex.Pattern;
|
||||
|
||||
public class PlaceholdersManager {
|
||||
|
||||
private static long elapsedTenthsOfSecond;
|
||||
protected static final Set<DynamicLineData> linesToUpdate = new HashSet<>();
|
||||
|
||||
private static final Pattern BUNGEE_ONLINE_PATTERN = makePlaceholderWithArgsPattern("online");
|
||||
private static final Pattern BUNGEE_MAX_PATTERN = makePlaceholderWithArgsPattern("max_players");
|
||||
private static final Pattern BUNGEE_MOTD_PATTERN = makePlaceholderWithArgsPattern("motd");
|
||||
@ -36,24 +33,26 @@ public class PlaceholdersManager {
|
||||
private static final Pattern BUNGEE_STATUS_PATTERN = makePlaceholderWithArgsPattern("status");
|
||||
private static final Pattern ANIMATION_PATTERN = makePlaceholderWithArgsPattern("animation");
|
||||
private static final Pattern WORLD_PATTERN = makePlaceholderWithArgsPattern("world");
|
||||
|
||||
private static BungeeServerTracker bungeeServerTracker;
|
||||
|
||||
private static Pattern makePlaceholderWithArgsPattern(String prefix) {
|
||||
return Pattern.compile("(\\{" + Pattern.quote(prefix) + ":)(.+?)(\\})");
|
||||
}
|
||||
|
||||
private static String extractArgumentFromPlaceholder(Matcher matcher) {
|
||||
return matcher.group(2).trim();
|
||||
}
|
||||
|
||||
|
||||
public static void startRefreshTask(Plugin plugin, BungeeServerTracker bungeeServerTracker) {
|
||||
PlaceholdersManager.bungeeServerTracker = bungeeServerTracker;
|
||||
private final PlaceholdersRegistry placeholderRegistry;
|
||||
private final AnimationsRegistry animationRegistry;
|
||||
private final BungeeServerTracker bungeeServerTracker;
|
||||
protected final Set<DynamicLineData> linesToUpdate;
|
||||
private long elapsedTenthsOfSecond;
|
||||
|
||||
public PlaceholdersManager(BungeeServerTracker bungeeServerTracker, AnimationsRegistry animationRegistry) {
|
||||
this.placeholderRegistry = new PlaceholdersRegistry(this);
|
||||
this.animationRegistry = animationRegistry;
|
||||
this.bungeeServerTracker = bungeeServerTracker;
|
||||
this.linesToUpdate = new HashSet<>();
|
||||
|
||||
placeholderRegistry.addDefaultPlaceholders();
|
||||
}
|
||||
|
||||
public void startRefreshTask(Plugin plugin) {
|
||||
Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, () -> {
|
||||
|
||||
for (Placeholder placeholder : PlaceholdersRegistry.getPlaceholders()) {
|
||||
for (Placeholder placeholder : placeholderRegistry.getPlaceholders()) {
|
||||
if (elapsedTenthsOfSecond % placeholder.getTenthsToRefresh() == 0) {
|
||||
try {
|
||||
placeholder.update();
|
||||
@ -63,7 +62,7 @@ public class PlaceholdersManager {
|
||||
}
|
||||
}
|
||||
|
||||
for (Placeholder placeholder : AnimationsRegistry.getAnimationsByFilename().values()) {
|
||||
for (Placeholder placeholder : animationRegistry.getAnimationsByFilename().values()) {
|
||||
if (elapsedTenthsOfSecond % placeholder.getTenthsToRefresh() == 0) {
|
||||
placeholder.update();
|
||||
}
|
||||
@ -88,11 +87,11 @@ public class PlaceholdersManager {
|
||||
}
|
||||
|
||||
|
||||
public static void untrackAll() {
|
||||
public void untrackAll() {
|
||||
linesToUpdate.clear();
|
||||
}
|
||||
|
||||
public static void untrack(StandardTextLine line) {
|
||||
public void untrack(StandardTextLine line) {
|
||||
Iterator<DynamicLineData> iter = linesToUpdate.iterator();
|
||||
while (iter.hasNext()) {
|
||||
DynamicLineData data = iter.next();
|
||||
@ -103,7 +102,7 @@ public class PlaceholdersManager {
|
||||
}
|
||||
}
|
||||
|
||||
public static void trackIfNecessary(StandardTextLine line) {
|
||||
public void trackIfNecessary(StandardTextLine line) {
|
||||
String text = line.getText();
|
||||
if (text == null || text.isEmpty()) {
|
||||
return;
|
||||
@ -124,7 +123,7 @@ public class PlaceholdersManager {
|
||||
|
||||
Matcher matcher;
|
||||
|
||||
for (Placeholder placeholder : PlaceholdersRegistry.getPlaceholders()) {
|
||||
for (Placeholder placeholder : placeholderRegistry.getPlaceholders()) {
|
||||
if (text.contains(placeholder.getTextPlaceholder())) {
|
||||
if (normalPlaceholders == null) {
|
||||
normalPlaceholders = new HashSet<>();
|
||||
@ -266,7 +265,7 @@ public class PlaceholdersManager {
|
||||
matcher = ANIMATION_PATTERN.matcher(text);
|
||||
while (matcher.find()) {
|
||||
String fileName = extractArgumentFromPlaceholder(matcher);
|
||||
Placeholder animation = AnimationsRegistry.getAnimation(fileName);
|
||||
Placeholder animation = animationRegistry.getAnimation(fileName);
|
||||
|
||||
// If exists...
|
||||
if (animation != null) {
|
||||
@ -319,7 +318,7 @@ public class PlaceholdersManager {
|
||||
}
|
||||
|
||||
|
||||
private static void updatePlaceholders(DynamicLineData lineData) {
|
||||
private void updatePlaceholders(DynamicLineData lineData) {
|
||||
String oldCustomName = lineData.getEntity().getCustomNameStringNMS();
|
||||
String newCustomName = lineData.getOriginalName();
|
||||
|
||||
@ -347,4 +346,16 @@ public class PlaceholdersManager {
|
||||
}
|
||||
}
|
||||
|
||||
public PlaceholdersRegistry getRegistry() {
|
||||
return placeholderRegistry;
|
||||
}
|
||||
|
||||
private static Pattern makePlaceholderWithArgsPattern(String prefix) {
|
||||
return Pattern.compile("(\\{" + Pattern.quote(prefix) + ":)(.+?)(\\})");
|
||||
}
|
||||
|
||||
private static String extractArgumentFromPlaceholder(Matcher matcher) {
|
||||
return matcher.group(2).trim();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -18,40 +18,17 @@ import java.util.Iterator;
|
||||
import java.util.Set;
|
||||
|
||||
public class PlaceholdersRegistry {
|
||||
|
||||
private final PlaceholdersManager placeholderManager;
|
||||
private final Set<Placeholder> placeholders;
|
||||
|
||||
private static final Set<Placeholder> placeholders = new HashSet<>();
|
||||
|
||||
// Register the default placeholders statically.
|
||||
static {
|
||||
|
||||
register(new Placeholder(HolographicDisplays.getInstance(), "{online}", 1.0, () -> {
|
||||
return String.valueOf(Bukkit.getOnlinePlayers().size());
|
||||
}));
|
||||
|
||||
register(new Placeholder(HolographicDisplays.getInstance(), "{max_players}", 10.0, () -> {
|
||||
return String.valueOf(Bukkit.getMaxPlayers());
|
||||
}));
|
||||
|
||||
register(new Placeholder(HolographicDisplays.getInstance(), "{motd}", 60.0, () -> {
|
||||
return Bukkit.getMotd();
|
||||
}));
|
||||
|
||||
register(new Placeholder(HolographicDisplays.getInstance(), "{time}", 0.9, () -> {
|
||||
return Configuration.timeFormat.format(Instant.now());
|
||||
}));
|
||||
|
||||
register(new Placeholder(HolographicDisplays.getInstance(), "&u", 0.2, new CyclicPlaceholderReplacer(Utils.toStringList(
|
||||
ChatColor.RED,
|
||||
ChatColor.GOLD,
|
||||
ChatColor.YELLOW,
|
||||
ChatColor.GREEN,
|
||||
ChatColor.AQUA,
|
||||
ChatColor.LIGHT_PURPLE
|
||||
))));
|
||||
public PlaceholdersRegistry(PlaceholdersManager placeholderManager) {
|
||||
this.placeholderManager = placeholderManager;
|
||||
this.placeholders = new HashSet<>();
|
||||
}
|
||||
|
||||
|
||||
public static boolean register(Placeholder placeholder) {
|
||||
|
||||
|
||||
public boolean register(Placeholder placeholder) {
|
||||
if (placeholders.contains(placeholder)) {
|
||||
return false;
|
||||
}
|
||||
@ -60,7 +37,7 @@ public class PlaceholdersRegistry {
|
||||
return true;
|
||||
}
|
||||
|
||||
public static Set<String> getTextPlaceholdersByPlugin(Plugin plugin) {
|
||||
public Set<String> getTextPlaceholdersByPlugin(Plugin plugin) {
|
||||
Set<String> found = new HashSet<>();
|
||||
|
||||
for (Placeholder placeholder : placeholders) {
|
||||
@ -72,7 +49,7 @@ public class PlaceholdersRegistry {
|
||||
return found;
|
||||
}
|
||||
|
||||
public static boolean unregister(Plugin plugin, String textPlaceholder) {
|
||||
public boolean unregister(Plugin plugin, String textPlaceholder) {
|
||||
Iterator<Placeholder> iter = placeholders.iterator();
|
||||
|
||||
while (iter.hasNext()) {
|
||||
@ -81,7 +58,7 @@ public class PlaceholdersRegistry {
|
||||
if (placeholder.getOwner().equals(plugin) && placeholder.getTextPlaceholder().equals(textPlaceholder)) {
|
||||
iter.remove();
|
||||
|
||||
for (DynamicLineData data : PlaceholdersManager.linesToUpdate) {
|
||||
for (DynamicLineData data : placeholderManager.linesToUpdate) {
|
||||
data.getPlaceholders().remove(placeholder);
|
||||
}
|
||||
|
||||
@ -92,8 +69,35 @@ public class PlaceholdersRegistry {
|
||||
return false;
|
||||
}
|
||||
|
||||
protected static Set<Placeholder> getPlaceholders() {
|
||||
protected Set<Placeholder> getPlaceholders() {
|
||||
return placeholders;
|
||||
}
|
||||
|
||||
public void addDefaultPlaceholders() {
|
||||
register(new Placeholder(HolographicDisplays.getInstance(), "{online}", 1.0, () -> {
|
||||
return String.valueOf(Bukkit.getOnlinePlayers().size());
|
||||
}));
|
||||
|
||||
register(new Placeholder(HolographicDisplays.getInstance(), "{max_players}", 10.0, () -> {
|
||||
return String.valueOf(Bukkit.getMaxPlayers());
|
||||
}));
|
||||
|
||||
register(new Placeholder(HolographicDisplays.getInstance(), "{motd}", 60.0, () -> {
|
||||
return Bukkit.getMotd();
|
||||
}));
|
||||
|
||||
register(new Placeholder(HolographicDisplays.getInstance(), "{time}", 0.9, () -> {
|
||||
return Configuration.timeFormat.format(Instant.now());
|
||||
}));
|
||||
|
||||
register(new Placeholder(HolographicDisplays.getInstance(), "&u", 0.2, new CyclicPlaceholderReplacer(Utils.toStringList(
|
||||
ChatColor.RED,
|
||||
ChatColor.GOLD,
|
||||
ChatColor.YELLOW,
|
||||
ChatColor.GREEN,
|
||||
ChatColor.AQUA,
|
||||
ChatColor.LIGHT_PURPLE
|
||||
))));
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user