aboutsummaryrefslogtreecommitdiff
path: root/spark-sponge8/src/main/java/me/lucko/spark/sponge/Sponge8SparkPlugin.java
diff options
context:
space:
mode:
authorembeddedt <42941056+embeddedt@users.noreply.github.com>2022-07-11 12:17:35 -0400
committerembeddedt <42941056+embeddedt@users.noreply.github.com>2022-07-11 12:17:35 -0400
commit9e477ace0acb3ba3f8d48841922b9b1eb2d2bf1e (patch)
tree799200e997f98da276792f16b6f12e3c6f1483b5 /spark-sponge8/src/main/java/me/lucko/spark/sponge/Sponge8SparkPlugin.java
parentecc3714e6441ace0eb78156b2b4475ca050280db (diff)
parenta10f966a443d56845a5efb1e65232e6b87eabb96 (diff)
downloadspark-9e477ace0acb3ba3f8d48841922b9b1eb2d2bf1e.tar.gz
spark-9e477ace0acb3ba3f8d48841922b9b1eb2d2bf1e.tar.bz2
spark-9e477ace0acb3ba3f8d48841922b9b1eb2d2bf1e.zip
Merge remote-tracking branch 'lucko/master' into forge-1.7.10
Diffstat (limited to 'spark-sponge8/src/main/java/me/lucko/spark/sponge/Sponge8SparkPlugin.java')
-rw-r--r--spark-sponge8/src/main/java/me/lucko/spark/sponge/Sponge8SparkPlugin.java36
1 files changed, 32 insertions, 4 deletions
diff --git a/spark-sponge8/src/main/java/me/lucko/spark/sponge/Sponge8SparkPlugin.java b/spark-sponge8/src/main/java/me/lucko/spark/sponge/Sponge8SparkPlugin.java
index e867a75..68e47e3 100644
--- a/spark-sponge8/src/main/java/me/lucko/spark/sponge/Sponge8SparkPlugin.java
+++ b/spark-sponge8/src/main/java/me/lucko/spark/sponge/Sponge8SparkPlugin.java
@@ -27,6 +27,7 @@ import me.lucko.spark.common.SparkPlugin;
import me.lucko.spark.common.command.sender.CommandSender;
import me.lucko.spark.common.monitor.ping.PlayerPingProvider;
import me.lucko.spark.common.platform.PlatformInfo;
+import me.lucko.spark.common.platform.world.WorldInfoProvider;
import me.lucko.spark.common.sampler.ThreadDumper;
import me.lucko.spark.common.tick.TickHook;
import me.lucko.spark.common.util.ClassSourceLookup;
@@ -67,6 +68,7 @@ public class Sponge8SparkPlugin implements SparkPlugin {
private final Game game;
private final Path configDirectory;
private final ExecutorService asyncExecutor;
+ private final ExecutorService syncExecutor;
private SparkPlatform platform;
private final ThreadDumper.GameThread threadDumper = new ThreadDumper.GameThread();
@@ -78,6 +80,14 @@ public class Sponge8SparkPlugin implements SparkPlugin {
this.game = game;
this.configDirectory = configDirectory;
this.asyncExecutor = game.asyncScheduler().executor(pluginContainer);
+
+ if (game.isServerAvailable()) {
+ this.syncExecutor = game.server().scheduler().executor(pluginContainer);
+ } else if (game.isClientAvailable()) {
+ this.syncExecutor = game.client().scheduler().executor(pluginContainer);
+ } else {
+ throw new IllegalStateException("Server and client both unavailable");
+ }
}
@@ -114,10 +124,14 @@ public class Sponge8SparkPlugin implements SparkPlugin {
@Override
public Stream<CommandSender> getCommandSenders() {
- return Stream.concat(
- this.game.server().onlinePlayers().stream(),
- Stream.of(this.game.systemSubject())
- ).map(Sponge8CommandSender::new);
+ if (this.game.isServerAvailable()) {
+ return Stream.concat(
+ this.game.server().onlinePlayers().stream(),
+ Stream.of(this.game.systemSubject())
+ ).map(Sponge8CommandSender::new);
+ } else {
+ return Stream.of(this.game.systemSubject()).map(Sponge8CommandSender::new);
+ }
}
@Override
@@ -126,6 +140,11 @@ public class Sponge8SparkPlugin implements SparkPlugin {
}
@Override
+ public void executeSync(Runnable task) {
+ this.syncExecutor.execute(task);
+ }
+
+ @Override
public void log(Level level, String msg) {
if (level == Level.INFO) {
this.logger.info(msg);
@@ -163,6 +182,15 @@ public class Sponge8SparkPlugin implements SparkPlugin {
}
@Override
+ public WorldInfoProvider createWorldInfoProvider() {
+ if (this.game.isServerAvailable()) {
+ return new Sponge8WorldInfoProvider(this.game.server());
+ } else {
+ return WorldInfoProvider.NO_OP;
+ }
+ }
+
+ @Override
public PlatformInfo getPlatformInfo() {
return new Sponge8PlatformInfo(this.game);
}