aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuck <git@lucko.me>2021-05-23 11:52:46 +0100
committerLuck <git@lucko.me>2021-05-23 11:52:46 +0100
commit69c8401d85b66c544b376ea714befc882f1397cd (patch)
tree4a75fcfd1e7fc2bd443f1ebce09b9485fadad6af
parenta20d365bdac8ebd1b3b1aea10fa31688641d90ac (diff)
downloadspark-69c8401d85b66c544b376ea714befc882f1397cd.tar.gz
spark-69c8401d85b66c544b376ea714befc882f1397cd.tar.bz2
spark-69c8401d85b66c544b376ea714befc882f1397cd.zip
Fix bug where platform would enable twice on Fabric/Forge (#116)
-rw-r--r--spark-common/src/main/java/me/lucko/spark/common/SparkPlatform.java14
-rw-r--r--spark-fabric/src/main/java/me/lucko/spark/fabric/plugin/FabricSparkPlugin.java1
-rw-r--r--spark-forge/src/main/java/me/lucko/spark/forge/plugin/ForgeSparkPlugin.java1
-rw-r--r--spark-forge1122/src/main/java/me/lucko/spark/forge/plugin/Forge1122SparkPlugin.java1
4 files changed, 9 insertions, 8 deletions
diff --git a/spark-common/src/main/java/me/lucko/spark/common/SparkPlatform.java b/spark-common/src/main/java/me/lucko/spark/common/SparkPlatform.java
index 099ad2d..a4ae848 100644
--- a/spark-common/src/main/java/me/lucko/spark/common/SparkPlatform.java
+++ b/spark-common/src/main/java/me/lucko/spark/common/SparkPlatform.java
@@ -54,6 +54,7 @@ import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.locks.ReentrantLock;
import java.util.stream.Collectors;
@@ -89,8 +90,7 @@ public class SparkPlatform {
private final TickStatistics tickStatistics;
private Map<String, GarbageCollectorStatistics> startupGcStatistics = ImmutableMap.of();
private long serverNormalOperationStartTime;
-
- private SparkApi api;
+ private final AtomicBoolean enabled = new AtomicBoolean(false);
public SparkPlatform(SparkPlugin plugin) {
this.plugin = plugin;
@@ -119,6 +119,10 @@ public class SparkPlatform {
}
public void enable() {
+ if (this.enabled.compareAndSet(false, true)) {
+ throw new RuntimeException("Platform has already been enabled!");
+ }
+
if (this.tickHook != null) {
this.tickHook.addCallback(this.tickStatistics);
this.tickHook.start();
@@ -135,9 +139,9 @@ public class SparkPlatform {
this.serverNormalOperationStartTime = System.currentTimeMillis();
});
- this.api = new SparkApi(this);
- this.plugin.registerApi(this.api);
- SparkApi.register(this.api);
+ SparkApi api = new SparkApi(this);
+ this.plugin.registerApi(api);
+ SparkApi.register(api);
}
public void disable() {
diff --git a/spark-fabric/src/main/java/me/lucko/spark/fabric/plugin/FabricSparkPlugin.java b/spark-fabric/src/main/java/me/lucko/spark/fabric/plugin/FabricSparkPlugin.java
index 59610b1..4b48d6a 100644
--- a/spark-fabric/src/main/java/me/lucko/spark/fabric/plugin/FabricSparkPlugin.java
+++ b/spark-fabric/src/main/java/me/lucko/spark/fabric/plugin/FabricSparkPlugin.java
@@ -55,7 +55,6 @@ public abstract class FabricSparkPlugin implements SparkPlugin {
return thread;
});
this.platform = new SparkPlatform(this);
- this.platform.enable();
}
public void enable() {
diff --git a/spark-forge/src/main/java/me/lucko/spark/forge/plugin/ForgeSparkPlugin.java b/spark-forge/src/main/java/me/lucko/spark/forge/plugin/ForgeSparkPlugin.java
index 35e6d7b..083a350 100644
--- a/spark-forge/src/main/java/me/lucko/spark/forge/plugin/ForgeSparkPlugin.java
+++ b/spark-forge/src/main/java/me/lucko/spark/forge/plugin/ForgeSparkPlugin.java
@@ -74,7 +74,6 @@ public abstract class ForgeSparkPlugin implements SparkPlugin {
return thread;
});
this.platform = new SparkPlatform(this);
- this.platform.enable();
}
public void enable() {
diff --git a/spark-forge1122/src/main/java/me/lucko/spark/forge/plugin/Forge1122SparkPlugin.java b/spark-forge1122/src/main/java/me/lucko/spark/forge/plugin/Forge1122SparkPlugin.java
index 936e0b9..d052d72 100644
--- a/spark-forge1122/src/main/java/me/lucko/spark/forge/plugin/Forge1122SparkPlugin.java
+++ b/spark-forge1122/src/main/java/me/lucko/spark/forge/plugin/Forge1122SparkPlugin.java
@@ -55,7 +55,6 @@ public abstract class Forge1122SparkPlugin implements SparkPlugin, ICommand {
return thread;
});
this.platform = new SparkPlatform(this);
- this.platform.enable();
}
public void enable() {