HolographicDisplays/core/src/main/java/me/filoghost/holographicdisplays/core/api/v2/V2HologramsAPIProvider.java

119 lines
4.2 KiB
Java
Raw Normal View History

2021-05-16 20:48:31 +02:00
/*
* Copyright (C) filoghost and contributors
*
* SPDX-License-Identifier: GPL-3.0-or-later
*/
package me.filoghost.holographicdisplays.core.api.v2;
2021-05-16 20:48:31 +02:00
import com.gmail.filoghost.holographicdisplays.api.Hologram;
import com.gmail.filoghost.holographicdisplays.api.internal.HologramsAPIProvider;
import com.gmail.filoghost.holographicdisplays.api.placeholder.PlaceholderReplacer;
import me.filoghost.fcommons.Preconditions;
2021-09-01 20:30:19 +02:00
import me.filoghost.fcommons.collection.CollectionUtils;
import me.filoghost.holographicdisplays.core.base.ImmutablePosition;
import me.filoghost.holographicdisplays.core.placeholder.registry.LegacyGlobalPlaceholderExpansion;
import me.filoghost.holographicdisplays.core.placeholder.registry.PlaceholderRegistry;
2021-05-16 20:48:31 +02:00
import org.bukkit.Location;
import org.bukkit.entity.Entity;
import org.bukkit.plugin.Plugin;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
@SuppressWarnings("deprecation")
public class V2HologramsAPIProvider extends HologramsAPIProvider {
2021-08-23 13:45:41 +02:00
private final V2HologramManager hologramManager;
2021-05-16 20:48:31 +02:00
private final PlaceholderRegistry placeholderRegistry;
2021-08-23 13:45:41 +02:00
public V2HologramsAPIProvider(V2HologramManager hologramManager, PlaceholderRegistry placeholderRegistry) {
this.hologramManager = hologramManager;
2021-05-16 20:48:31 +02:00
this.placeholderRegistry = placeholderRegistry;
}
@Override
public Hologram createHologram(Plugin plugin, Location source) {
Preconditions.notNull(plugin, "plugin");
Preconditions.notNull(source, "source");
2021-08-25 09:09:00 +02:00
Preconditions.notNull(source.getWorld(), "source.getWorld()");
2021-05-16 20:48:31 +02:00
return hologramManager.createHologram(ImmutablePosition.of(source), plugin);
2021-05-16 20:48:31 +02:00
}
2021-06-20 17:23:48 +02:00
2021-05-16 20:48:31 +02:00
@Override
public Collection<Hologram> getHolograms(Plugin plugin) {
Preconditions.notNull(plugin, "plugin");
List<Hologram> ownedHolograms = new ArrayList<>();
2021-08-23 13:45:41 +02:00
for (V2Hologram hologram : hologramManager.getHolograms()) {
2021-05-16 20:59:34 +02:00
if (hologram.getCreatorPlugin().equals(plugin)) {
2021-08-23 13:45:41 +02:00
ownedHolograms.add(hologram);
2021-05-16 20:48:31 +02:00
}
}
return Collections.unmodifiableList(ownedHolograms);
}
2021-06-20 17:23:48 +02:00
2021-05-16 20:48:31 +02:00
@Override
public boolean registerPlaceholder(Plugin plugin, String textPlaceholder, double refreshRate, PlaceholderReplacer replacer) {
Preconditions.notNull(plugin, "plugin");
Preconditions.notNull(textPlaceholder, "textPlaceholder");
Preconditions.checkArgument(refreshRate >= 0, "refreshRate should be positive");
Preconditions.notNull(replacer, "replacer");
2021-06-20 17:23:48 +02:00
2021-05-16 20:48:31 +02:00
int refreshIntervalTicks = Math.min((int) (refreshRate * 20.0), 1);
boolean alreadyRegistered = placeholderRegistry.isRegisteredLegacyPlaceholder(plugin, textPlaceholder);
2021-06-20 17:23:48 +02:00
2021-05-16 20:48:31 +02:00
if (!alreadyRegistered) {
placeholderRegistry.registerLegacyPlaceholder(
plugin,
textPlaceholder,
refreshIntervalTicks,
argument -> replacer.update());
2021-05-16 20:48:31 +02:00
return true;
} else {
return false;
}
}
2021-06-20 17:23:48 +02:00
2021-05-16 20:48:31 +02:00
@Override
public Collection<String> getRegisteredPlaceholders(Plugin plugin) {
Preconditions.notNull(plugin, "plugin");
2021-06-20 17:23:48 +02:00
return CollectionUtils.toArrayList(
placeholderRegistry.getRegisteredLegacyPlaceholders(plugin),
LegacyGlobalPlaceholderExpansion::getTextPlaceholder);
2021-05-16 20:48:31 +02:00
}
2021-06-20 17:23:48 +02:00
2021-05-16 20:48:31 +02:00
@Override
public boolean unregisterPlaceholder(Plugin plugin, String textPlaceholder) {
Preconditions.notNull(plugin, "plugin");
Preconditions.notNull(textPlaceholder, "textPlaceholder");
2021-06-20 17:23:48 +02:00
boolean registered = placeholderRegistry.isRegisteredLegacyPlaceholder(plugin, textPlaceholder);
2021-06-20 17:23:48 +02:00
2021-05-16 20:48:31 +02:00
if (registered) {
placeholderRegistry.unregisterLegacyPlaceholder(plugin, textPlaceholder);
2021-05-16 20:48:31 +02:00
return true;
} else {
return false;
}
}
2021-06-20 17:23:48 +02:00
2021-05-16 20:48:31 +02:00
@Override
public void unregisterPlaceholders(Plugin plugin) {
Preconditions.notNull(plugin, "plugin");
2021-06-20 17:23:48 +02:00
placeholderRegistry.unregisterAllLegacyPlaceholders(plugin);
2021-05-16 20:48:31 +02:00
}
2021-06-20 17:23:48 +02:00
2021-05-16 20:48:31 +02:00
@Override
public boolean isHologramEntity(Entity bukkitEntity) {
Preconditions.notNull(bukkitEntity, "bukkitEntity");
return false;
2021-05-16 20:48:31 +02:00
}
}