aboutsummaryrefslogtreecommitdiff
path: root/spark-paper/src
diff options
context:
space:
mode:
authorlucko <git@lucko.me>2024-07-21 12:44:06 +0100
committerGitHub <noreply@github.com>2024-07-21 12:44:06 +0100
commitb78afab85ee15d809ea4ff0ccb14c2b263ede860 (patch)
treed3d987473aee0b1e71ac6a24ea2f692be78bf14b /spark-paper/src
parent635800af986351f08dba33aa2e8ec5dd691bbffb (diff)
downloadspark-b78afab85ee15d809ea4ff0ccb14c2b263ede860.tar.gz
spark-b78afab85ee15d809ea4ff0ccb14c2b263ede860.tar.bz2
spark-b78afab85ee15d809ea4ff0ccb14c2b263ede860.zip
Include gamerule settings in metadata (#425)
Diffstat (limited to 'spark-paper/src')
-rw-r--r--spark-paper/src/main/java/me/lucko/spark/paper/PaperSparkPlugin.java1
-rw-r--r--spark-paper/src/main/java/me/lucko/spark/paper/PaperWorldInfoProvider.java29
2 files changed, 29 insertions, 1 deletions
diff --git a/spark-paper/src/main/java/me/lucko/spark/paper/PaperSparkPlugin.java b/spark-paper/src/main/java/me/lucko/spark/paper/PaperSparkPlugin.java
index eb595cc..eb82f8e 100644
--- a/spark-paper/src/main/java/me/lucko/spark/paper/PaperSparkPlugin.java
+++ b/spark-paper/src/main/java/me/lucko/spark/paper/PaperSparkPlugin.java
@@ -39,7 +39,6 @@ import me.lucko.spark.paper.api.PaperSparkModule;
import org.bukkit.Server;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.Plugin;
-import org.bukkit.plugin.ServicePriority;
import java.nio.file.Path;
import java.util.Arrays;
diff --git a/spark-paper/src/main/java/me/lucko/spark/paper/PaperWorldInfoProvider.java b/spark-paper/src/main/java/me/lucko/spark/paper/PaperWorldInfoProvider.java
index 29ab1ef..feda9a0 100644
--- a/spark-paper/src/main/java/me/lucko/spark/paper/PaperWorldInfoProvider.java
+++ b/spark-paper/src/main/java/me/lucko/spark/paper/PaperWorldInfoProvider.java
@@ -24,6 +24,7 @@ import me.lucko.spark.common.platform.world.AbstractChunkInfo;
import me.lucko.spark.common.platform.world.CountMap;
import me.lucko.spark.common.platform.world.WorldInfoProvider;
import org.bukkit.Chunk;
+import org.bukkit.GameRule;
import org.bukkit.Server;
import org.bukkit.World;
import org.bukkit.entity.Entity;
@@ -31,6 +32,7 @@ import org.bukkit.entity.EntityType;
import java.util.ArrayList;
import java.util.List;
+import java.util.Objects;
public class PaperWorldInfoProvider implements WorldInfoProvider {
private final Server server;
@@ -75,6 +77,33 @@ public class PaperWorldInfoProvider implements WorldInfoProvider {
return data;
}
+ @Override
+ public GameRulesResult pollGameRules() {
+ GameRulesResult data = new GameRulesResult();
+
+ boolean addDefaults = true; // add defaults in the first iteration
+ for (World world : this.server.getWorlds()) {
+ for (String gameRule : world.getGameRules()) {
+ GameRule<?> ruleObj = GameRule.getByName(gameRule);
+ if (ruleObj == null) {
+ continue;
+ }
+
+ if (addDefaults) {
+ Object defaultValue = world.getGameRuleDefault(ruleObj);
+ data.putDefault(gameRule, Objects.toString(defaultValue));
+ }
+
+ Object value = world.getGameRuleValue(ruleObj);
+ data.put(gameRule, world.getName(), Objects.toString(value));
+ }
+
+ addDefaults = false;
+ }
+
+ return data;
+ }
+
static final class PaperChunkInfo extends AbstractChunkInfo<EntityType> {
private final CountMap<EntityType> entityCounts;