Fix holograms being loaded before worlds with certain world management plugins

This commit is contained in:
filoghost 2018-09-17 20:38:00 +02:00
parent 0054bb47c8
commit 8022a167ed
3 changed files with 28 additions and 27 deletions

View File

@ -15,7 +15,6 @@
package com.gmail.filoghost.holographicdisplays;
import java.io.File;
import java.util.Set;
import java.util.logging.Level;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@ -33,9 +32,6 @@ import com.gmail.filoghost.holographicdisplays.commands.main.HologramsCommandHan
import com.gmail.filoghost.holographicdisplays.disk.Configuration;
import com.gmail.filoghost.holographicdisplays.disk.HologramDatabase;
import com.gmail.filoghost.holographicdisplays.disk.UnicodeSymbols;
import com.gmail.filoghost.holographicdisplays.exception.HologramNotFoundException;
import com.gmail.filoghost.holographicdisplays.exception.InvalidFormatException;
import com.gmail.filoghost.holographicdisplays.exception.WorldNotFoundException;
import com.gmail.filoghost.holographicdisplays.listener.MainListener;
import com.gmail.filoghost.holographicdisplays.nms.interfaces.NMSManager;
import com.gmail.filoghost.holographicdisplays.object.DefaultBackendAPI;
@ -218,24 +214,6 @@ public class HolographicDisplays extends JavaPlugin {
Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new BungeeCleanupTask(), 5 * 60 * 20, 5 * 60 * 20);
Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new WorldPlayerCounterTask(), 0L, 3 * 20);
Set<String> savedHologramsNames = HologramDatabase.getHolograms();
if (savedHologramsNames != null && savedHologramsNames.size() > 0) {
for (String singleHologramName : savedHologramsNames) {
try {
NamedHologram singleHologram = HologramDatabase.loadHologram(singleHologramName);
NamedHologramManager.addHologram(singleHologram);
} catch (HologramNotFoundException e) {
ConsoleLogger.log(Level.WARNING, "Hologram '" + singleHologramName + "' not found, skipping it.");
} catch (InvalidFormatException e) {
ConsoleLogger.log(Level.WARNING, "Hologram '" + singleHologramName + "' has an invalid location format.");
} catch (WorldNotFoundException e) {
ConsoleLogger.log(Level.WARNING, "Hologram '" + singleHologramName + "' was in the world '" + e.getMessage() + "' but it wasn't loaded.");
} catch (Exception e) {
ConsoleLogger.log(Level.WARNING, "Unhandled exception while loading the hologram '" + singleHologramName + "'. Please contact the developer.", e);
}
}
}
if (getCommand("holograms") == null) {
printWarnAndDisable(
"******************************************************",
@ -254,8 +232,8 @@ public class HolographicDisplays extends JavaPlugin {
// Register bStats metrics
new MetricsLite(this);
// The entities are loaded when the server is ready.
Bukkit.getScheduler().scheduleSyncDelayedTask(this, new StartupLoadHologramsTask(), 10L);
// Holograms are loaded later, when the worlds are ready.
Bukkit.getScheduler().runTask(this, new StartupLoadHologramsTask());
// Enable the API.
BackendAPI.setImplementation(new DefaultBackendAPI());

View File

@ -14,15 +14,38 @@
*/
package com.gmail.filoghost.holographicdisplays.task;
import java.util.Set;
import java.util.logging.Level;
import com.gmail.filoghost.holographicdisplays.disk.HologramDatabase;
import com.gmail.filoghost.holographicdisplays.exception.HologramNotFoundException;
import com.gmail.filoghost.holographicdisplays.exception.InvalidFormatException;
import com.gmail.filoghost.holographicdisplays.exception.WorldNotFoundException;
import com.gmail.filoghost.holographicdisplays.object.NamedHologram;
import com.gmail.filoghost.holographicdisplays.object.NamedHologramManager;
import com.gmail.filoghost.holographicdisplays.util.ConsoleLogger;
public class StartupLoadHologramsTask implements Runnable {
@Override
public void run() {
for (NamedHologram hologram : NamedHologramManager.getHolograms()) {
hologram.refreshAll();
Set<String> savedHologramsNames = HologramDatabase.getHolograms();
if (savedHologramsNames != null) {
for (String hologramName : savedHologramsNames) {
try {
NamedHologram namedHologram = HologramDatabase.loadHologram(hologramName);
NamedHologramManager.addHologram(namedHologram);
namedHologram.refreshAll();
} catch (HologramNotFoundException e) {
ConsoleLogger.log(Level.WARNING, "Hologram '" + hologramName + "' not found, skipping it.");
} catch (InvalidFormatException e) {
ConsoleLogger.log(Level.WARNING, "Hologram '" + hologramName + "' has an invalid location format.");
} catch (WorldNotFoundException e) {
ConsoleLogger.log(Level.WARNING, "Hologram '" + hologramName + "' was in the world '" + e.getMessage() + "' but it wasn't loaded.");
} catch (Exception e) {
ConsoleLogger.log(Level.WARNING, "Unhandled exception while loading the hologram '" + hologramName + "'. Please contact the developer.", e);
}
}
}
}

View File

@ -3,7 +3,7 @@ main: com.gmail.filoghost.holographicdisplays.HolographicDisplays
version: ${project.version}
api-version: 1.13
softdepend: [Multiverse-Core, MultiWorld, My Worlds, My_Worlds, ProtocolLib]
softdepend: [ProtocolLib]
commands:
holograms: