mirror of
https://github.com/BlueMap-Minecraft/BlueMap.git
synced 2024-11-25 20:16:00 +01:00
Fix bluemap not stopping correctly when stopping the server
This commit is contained in:
parent
27d7f37e38
commit
4ed0731956
@ -140,11 +140,7 @@ public synchronized void load() throws ExecutionException, IOException, NoSuchRe
|
|||||||
handleMissingResources(defaultResourceFile, configFile);
|
handleMissingResources(defaultResourceFile, configFile);
|
||||||
unload();
|
unload();
|
||||||
|
|
||||||
//only register reload command
|
Sponge.getCommandManager().register(this, new Commands(this).createStandaloneReloadCommand(), "bluemap");
|
||||||
syncExecutor.submit(() -> //just to be save we do this on the server thread
|
|
||||||
Sponge.getCommandManager().register(this, new Commands(this).createStandaloneReloadCommand(), "bluemap")
|
|
||||||
).get();
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -232,9 +228,7 @@ public synchronized void load() throws ExecutionException, IOException, NoSuchRe
|
|||||||
}
|
}
|
||||||
|
|
||||||
//start map updater
|
//start map updater
|
||||||
syncExecutor.submit(() ->
|
this.updateHandler = new MapUpdateHandler();
|
||||||
this.updateHandler = new MapUpdateHandler()
|
|
||||||
).get();
|
|
||||||
|
|
||||||
//create/update webfiles
|
//create/update webfiles
|
||||||
WebFilesManager webFilesManager = new WebFilesManager(config.getWebRoot());
|
WebFilesManager webFilesManager = new WebFilesManager(config.getWebRoot());
|
||||||
@ -261,9 +255,7 @@ public synchronized void load() throws ExecutionException, IOException, NoSuchRe
|
|||||||
}
|
}
|
||||||
|
|
||||||
//init commands
|
//init commands
|
||||||
syncExecutor.submit(() -> //just to be save we do this on the server thread
|
Sponge.getCommandManager().register(this, new Commands(this).createRootCommand(), "bluemap");
|
||||||
Sponge.getCommandManager().register(this, new Commands(this).createRootCommand(), "bluemap")
|
|
||||||
).get();
|
|
||||||
|
|
||||||
//metrics
|
//metrics
|
||||||
Sponge.getScheduler().createTaskBuilder()
|
Sponge.getScheduler().createTaskBuilder()
|
||||||
@ -279,20 +271,14 @@ public synchronized void load() throws ExecutionException, IOException, NoSuchRe
|
|||||||
}
|
}
|
||||||
|
|
||||||
public synchronized void unload() {
|
public synchronized void unload() {
|
||||||
try {
|
//unregister commands
|
||||||
syncExecutor.submit(() -> { //just to be save we do this on the server thread
|
Sponge.getCommandManager().getOwnedBy(this).forEach(Sponge.getCommandManager()::removeMapping);
|
||||||
//unregister commands
|
|
||||||
Sponge.getCommandManager().getOwnedBy(this).forEach(Sponge.getCommandManager()::removeMapping);
|
|
||||||
|
|
||||||
//unregister listeners
|
//unregister listeners
|
||||||
if (updateHandler != null) Sponge.getEventManager().unregisterListeners(updateHandler);
|
if (updateHandler != null) Sponge.getEventManager().unregisterListeners(updateHandler);
|
||||||
|
|
||||||
//stop scheduled tasks
|
//stop scheduled tasks
|
||||||
Sponge.getScheduler().getScheduledTasks(this).forEach(t -> t.cancel());
|
Sponge.getScheduler().getScheduledTasks(this).forEach(t -> t.cancel());
|
||||||
}).get();
|
|
||||||
} catch (InterruptedException | ExecutionException unexpected) {
|
|
||||||
throw new RuntimeException("Unexpected exception!", unexpected); //should never happen
|
|
||||||
}
|
|
||||||
|
|
||||||
//stop services
|
//stop services
|
||||||
if (renderManager != null) renderManager.stop();
|
if (renderManager != null) renderManager.stop();
|
||||||
@ -354,10 +340,8 @@ public void onServerStart(GameStartingServerEvent evt) {
|
|||||||
|
|
||||||
@Listener
|
@Listener
|
||||||
public void onServerStop(GameStoppingEvent evt) {
|
public void onServerStop(GameStoppingEvent evt) {
|
||||||
asyncExecutor.execute(() -> {
|
unload();
|
||||||
unload();
|
Logger.global.logInfo("Saved and stopped!");
|
||||||
Logger.global.logInfo("Saved and stopped!");
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Listener
|
@Listener
|
||||||
|
Loading…
Reference in New Issue
Block a user