Fix SchedulerUtil exception handling
This commit is contained in:
parent
25f2f90ef0
commit
c548856b76
@ -1,14 +1,12 @@
|
|||||||
package fr.pandacube.lib.paper.scheduler;
|
package fr.pandacube.lib.paper.scheduler;
|
||||||
|
|
||||||
|
import fr.pandacube.lib.paper.PandaLibPaper;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
|
||||||
import java.util.concurrent.Callable;
|
import java.util.concurrent.Callable;
|
||||||
import java.util.concurrent.CancellationException;
|
import java.util.concurrent.CancellationException;
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
|
|
||||||
import fr.pandacube.lib.util.Log;
|
|
||||||
import fr.pandacube.lib.paper.PandaLibPaper;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provides methods to easily manage synchronous and asynchronous operations with the server thread.
|
* Provides methods to easily manage synchronous and asynchronous operations with the server thread.
|
||||||
*/
|
*/
|
||||||
@ -41,17 +39,15 @@ public class SchedulerUtil {
|
|||||||
* @throws InterruptedException – if the current thread was interrupted while waiting
|
* @throws InterruptedException – if the current thread was interrupted while waiting
|
||||||
*/
|
*/
|
||||||
public static <T> T runOnServerThreadAndWait(Callable<T> task) throws Exception {
|
public static <T> T runOnServerThreadAndWait(Callable<T> task) throws Exception {
|
||||||
if (Bukkit.isPrimaryThread())
|
if (Bukkit.isPrimaryThread()) {
|
||||||
return task.call();
|
|
||||||
|
|
||||||
return Bukkit.getScheduler().callSyncMethod(PandaLibPaper.getPlugin(), () -> {
|
|
||||||
try {
|
try {
|
||||||
return task.call();
|
return task.call();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Log.severe("Exception while running callback code on server Thread. The source exception is:", e);
|
throw new ExecutionException(e);
|
||||||
throw e;
|
|
||||||
}
|
}
|
||||||
}).get();
|
}
|
||||||
|
|
||||||
|
return Bukkit.getScheduler().callSyncMethod(PandaLibPaper.getPlugin(), task).get();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user