Refresh line positions on plugin reload for potential changes in option "space-between-lines"

This commit is contained in:
filoghost 2021-08-23 13:59:14 +02:00
parent b4e5edfa8e
commit 087105ccd1
5 changed files with 18 additions and 7 deletions

View File

@ -12,6 +12,7 @@ import me.filoghost.fcommons.logging.ErrorCollector;
import me.filoghost.holographicdisplays.api.internal.HolographicDisplaysAPIProvider;
import me.filoghost.holographicdisplays.common.nms.NMSManager;
import me.filoghost.holographicdisplays.plugin.api.current.DefaultHolographicDisplaysAPIProvider;
import me.filoghost.holographicdisplays.plugin.api.v2.V2Hologram;
import me.filoghost.holographicdisplays.plugin.api.v2.V2HologramManager;
import me.filoghost.holographicdisplays.plugin.api.v2.V2HologramsAPIProvider;
import me.filoghost.holographicdisplays.plugin.bridge.bungeecord.BungeeServerTracker;
@ -23,6 +24,7 @@ import me.filoghost.holographicdisplays.plugin.config.Settings;
import me.filoghost.holographicdisplays.plugin.config.upgrade.AnimationsLegacyUpgrade;
import me.filoghost.holographicdisplays.plugin.config.upgrade.DatabaseLegacyUpgrade;
import me.filoghost.holographicdisplays.plugin.config.upgrade.SymbolsLegacyUpgrade;
import me.filoghost.holographicdisplays.plugin.hologram.api.APIHologram;
import me.filoghost.holographicdisplays.plugin.hologram.api.APIHologramManager;
import me.filoghost.holographicdisplays.plugin.hologram.internal.InternalHologramManager;
import me.filoghost.holographicdisplays.plugin.hologram.tracking.LineTrackerManager;
@ -53,10 +55,12 @@ public class HolographicDisplays extends FCommonsPlugin {
private NMSManager nmsManager;
private ConfigManager configManager;
private InternalHologramManager internalHologramManager;
private BungeeServerTracker bungeeServerTracker;
private PlaceholderRegistry placeholderRegistry;
private LineTrackerManager lineTrackerManager;
private InternalHologramManager internalHologramManager;
private APIHologramManager apiHologramManager;
private V2HologramManager v2HologramManager;
@Override
public void onCheckedEnable() throws PluginEnableException {
@ -104,8 +108,8 @@ public class HolographicDisplays extends FCommonsPlugin {
LineClickListener lineClickListener = new LineClickListener();
lineTrackerManager = new LineTrackerManager(nmsManager, placeholderTracker, lineClickListener);
internalHologramManager = new InternalHologramManager(lineTrackerManager);
APIHologramManager apiHologramManager = new APIHologramManager(lineTrackerManager);
V2HologramManager v2HologramManager = new V2HologramManager(lineTrackerManager);
apiHologramManager = new APIHologramManager(lineTrackerManager);
v2HologramManager = new V2HologramManager(lineTrackerManager);
// Run only once at startup, before loading the configuration
new SymbolsLegacyUpgrade(configManager, errorCollector).tryRun();
@ -171,6 +175,13 @@ public class HolographicDisplays extends FCommonsPlugin {
HologramDatabase hologramDatabase = configManager.loadHologramDatabase(errorCollector);
hologramDatabase.createHolograms(internalHologramManager, errorCollector);
for (APIHologram hologram : apiHologramManager.getHolograms()) {
hologram.getLines().updateLinePositions();
}
for (V2Hologram hologram : v2HologramManager.getHolograms()) {
hologram.getLines().updateLinePositions();
}
}
@Override

View File

@ -44,7 +44,7 @@ public class V2Hologram extends BaseHologram implements Hologram {
}
@Override
protected BaseHologramLines<V2HologramLine> getLines() {
public BaseHologramLines<V2HologramLine> getLines() {
return lines;
}

View File

@ -41,7 +41,7 @@ public class APIHologram extends BaseHologram implements Hologram {
}
@Override
protected BaseHologramLines<APIHologramLine> getLines() {
public BaseHologramLines<APIHologramLine> getLines() {
return lines;
}

View File

@ -26,7 +26,7 @@ public abstract class BaseHologram extends BaseHologramComponent {
this.lineTrackerManager = lineTrackerManager;
}
protected abstract BaseHologramLines<? extends EditableHologramLine> getLines();
public abstract BaseHologramLines<? extends EditableHologramLine> getLines();
protected abstract boolean isVisibleTo(Player player);

View File

@ -114,7 +114,7 @@ public class BaseHologramLines<T extends EditableHologramLine> implements Iterab
* The top part of the first line should be exactly on the Y position of the hologram.
* The second line is below the first, and so on.
*/
protected void updateLinePositions() {
public void updateLinePositions() {
HologramPosition hologramPosition = hologram.getPosition();
double currentLineY = hologramPosition.getY();