mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-07-03 08:26:11 +00:00
close engines using a shutdown hook
This commit is contained in:
parent
e42317139d
commit
61301ffd4d
@ -572,18 +572,23 @@ public class Iris extends VolmitPlugin implements Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void onDisable() {
|
public void onDisable() {
|
||||||
Bukkit.getWorlds()
|
|
||||||
.parallelStream()
|
|
||||||
.map(IrisToolbelt::access)
|
|
||||||
.filter(Objects::nonNull)
|
|
||||||
.forEach(PlatformChunkGenerator::close);
|
|
||||||
services.values().forEach(IrisService::onDisable);
|
services.values().forEach(IrisService::onDisable);
|
||||||
Bukkit.getScheduler().cancelTasks(this);
|
Bukkit.getScheduler().cancelTasks(this);
|
||||||
HandlerList.unregisterAll((Plugin) this);
|
HandlerList.unregisterAll((Plugin) this);
|
||||||
postShutdown.forEach(Runnable::run);
|
postShutdown.forEach(Runnable::run);
|
||||||
|
super.onDisable();
|
||||||
|
|
||||||
|
J.attempt(new JarScanner(instance.getJarFile(), "", false)::scan);
|
||||||
|
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
|
||||||
|
Bukkit.getWorlds()
|
||||||
|
.stream()
|
||||||
|
.map(IrisToolbelt::access)
|
||||||
|
.filter(Objects::nonNull)
|
||||||
|
.forEach(PlatformChunkGenerator::close);
|
||||||
|
|
||||||
MultiBurst.burst.close();
|
MultiBurst.burst.close();
|
||||||
services.clear();
|
services.clear();
|
||||||
super.onDisable();
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupPapi() {
|
private void setupPapi() {
|
||||||
|
@ -301,7 +301,9 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun
|
|||||||
hotloader.interrupt();
|
hotloader.interrupt();
|
||||||
}
|
}
|
||||||
|
|
||||||
getEngine().close();
|
final Engine engine = getEngine();
|
||||||
|
if (engine != null && !engine.isClosed())
|
||||||
|
engine.close();
|
||||||
folder.clear();
|
folder.clear();
|
||||||
populators.clear();
|
populators.clear();
|
||||||
|
|
||||||
|
@ -31,16 +31,22 @@ public class JarScanner {
|
|||||||
private final KSet<Class<?>> classes;
|
private final KSet<Class<?>> classes;
|
||||||
private final File jar;
|
private final File jar;
|
||||||
private final String superPackage;
|
private final String superPackage;
|
||||||
|
private final boolean report;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a scanner
|
* Create a scanner
|
||||||
*
|
*
|
||||||
* @param jar the path to the jar
|
* @param jar the path to the jar
|
||||||
*/
|
*/
|
||||||
public JarScanner(File jar, String superPackage) {
|
public JarScanner(File jar, String superPackage, boolean report) {
|
||||||
this.jar = jar;
|
this.jar = jar;
|
||||||
this.classes = new KSet<>();
|
this.classes = new KSet<>();
|
||||||
this.superPackage = superPackage;
|
this.superPackage = superPackage;
|
||||||
|
this.report = report;
|
||||||
|
}
|
||||||
|
|
||||||
|
public JarScanner(File jar, String superPackage) {
|
||||||
|
this(jar, superPackage, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -65,7 +71,8 @@ public class JarScanner {
|
|||||||
try {
|
try {
|
||||||
Class<?> clazz = Class.forName(c);
|
Class<?> clazz = Class.forName(c);
|
||||||
classes.add(clazz);
|
classes.add(clazz);
|
||||||
} catch (ClassNotFoundException e) {
|
} catch (Throwable e) {
|
||||||
|
if (!report) continue;
|
||||||
Iris.reportError(e);
|
Iris.reportError(e);
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user