Use enum for enabling placeholder replacement in holograms

This commit is contained in:
filoghost 2021-09-19 20:59:40 +02:00
parent b4c8c6ede4
commit dc9f0fe2b4
4 changed files with 27 additions and 17 deletions

View File

@ -81,22 +81,14 @@ public interface Hologram {
void setPosition(@NotNull Location location); void setPosition(@NotNull Location location);
/** /**
* Checks if the hologram will track and replace placeholders.
* This is false by default.
*
* @return if the hologram allows placeholders
* @since 1 * @since 1
*/ */
boolean isAllowPlaceholders(); @NotNull ResolvePlaceholders getResolvePlaceholders();
/** /**
* Sets if the hologram should track and replace placeholders.
* By default, it will not track them.
*
* @param allowPlaceholders if the hologram should track placeholders
* @since 1 * @since 1
*/ */
void setAllowPlaceholders(boolean allowPlaceholders); void setResolvePlaceholders(@NotNull ResolvePlaceholders resolvePlaceholders);
/** /**
* Deletes this hologram. Editing or teleporting the hologram when deleted * Deletes this hologram. Editing or teleporting the hologram when deleted

View File

@ -0,0 +1,14 @@
/*
* Copyright (C) filoghost and contributors
*
* SPDX-License-Identifier: GPL-3.0-or-later
*/
package me.filoghost.holographicdisplays.api.hologram;
public enum ResolvePlaceholders {
DEFAULT,
ALL,
NONE
}

View File

@ -8,6 +8,7 @@ package me.filoghost.holographicdisplays.plugin.api.current;
import me.filoghost.fcommons.Preconditions; import me.filoghost.fcommons.Preconditions;
import me.filoghost.holographicdisplays.api.Position; import me.filoghost.holographicdisplays.api.Position;
import me.filoghost.holographicdisplays.api.hologram.Hologram; import me.filoghost.holographicdisplays.api.hologram.Hologram;
import me.filoghost.holographicdisplays.api.hologram.ResolvePlaceholders;
import me.filoghost.holographicdisplays.plugin.hologram.base.BaseHologram; import me.filoghost.holographicdisplays.plugin.hologram.base.BaseHologram;
import me.filoghost.holographicdisplays.plugin.hologram.base.ImmutablePosition; import me.filoghost.holographicdisplays.plugin.hologram.base.ImmutablePosition;
import me.filoghost.holographicdisplays.plugin.hologram.tracking.LineTrackerManager; import me.filoghost.holographicdisplays.plugin.hologram.tracking.LineTrackerManager;
@ -22,7 +23,7 @@ public class APIHologram extends BaseHologram implements Hologram {
private final APIHologramManager hologramManager; private final APIHologramManager hologramManager;
private final DefaultVisibilitySettings visibilitySettings; private final DefaultVisibilitySettings visibilitySettings;
private boolean allowPlaceholders; private @NotNull ResolvePlaceholders resolvePlaceholders;
protected APIHologram( protected APIHologram(
ImmutablePosition position, ImmutablePosition position,
@ -35,6 +36,7 @@ public class APIHologram extends BaseHologram implements Hologram {
this.plugin = plugin; this.plugin = plugin;
this.hologramManager = hologramManager; this.hologramManager = hologramManager;
this.visibilitySettings = new DefaultVisibilitySettings(); this.visibilitySettings = new DefaultVisibilitySettings();
this.resolvePlaceholders = ResolvePlaceholders.DEFAULT;
} }
@Override @Override
@ -53,19 +55,20 @@ public class APIHologram extends BaseHologram implements Hologram {
} }
@Override @Override
public boolean isAllowPlaceholders() { public @NotNull ResolvePlaceholders getResolvePlaceholders() {
return allowPlaceholders; return resolvePlaceholders;
} }
@Override @Override
public void setAllowPlaceholders(boolean allowPlaceholders) { public void setResolvePlaceholders(@NotNull ResolvePlaceholders resolvePlaceholders) {
Preconditions.notNull(resolvePlaceholders, "resolvePlaceholders");
checkNotDeleted(); checkNotDeleted();
if (this.allowPlaceholders == allowPlaceholders) { if (this.resolvePlaceholders == resolvePlaceholders) {
return; return;
} }
this.allowPlaceholders = allowPlaceholders; this.resolvePlaceholders = resolvePlaceholders;
for (APIHologramLine line : lines) { for (APIHologramLine line : lines) {
line.setChanged(); line.setChanged();
} }

View File

@ -5,6 +5,7 @@
*/ */
package me.filoghost.holographicdisplays.plugin.api.current; package me.filoghost.holographicdisplays.plugin.api.current;
import me.filoghost.holographicdisplays.api.hologram.ResolvePlaceholders;
import me.filoghost.holographicdisplays.api.hologram.line.ClickListener; import me.filoghost.holographicdisplays.api.hologram.line.ClickListener;
import me.filoghost.holographicdisplays.api.hologram.line.TextHologramLine; import me.filoghost.holographicdisplays.api.hologram.line.TextHologramLine;
import me.filoghost.holographicdisplays.plugin.hologram.base.BaseTextHologramLine; import me.filoghost.holographicdisplays.plugin.hologram.base.BaseTextHologramLine;
@ -23,7 +24,7 @@ public class APITextHologramLine extends BaseTextHologramLine implements TextHol
@Override @Override
public boolean isAllowPlaceholders() { public boolean isAllowPlaceholders() {
return hologram.isAllowPlaceholders(); return hologram.getResolvePlaceholders() == ResolvePlaceholders.ALL;
} }
@Override @Override