aboutsummaryrefslogtreecommitdiff
path: root/spark-bukkit
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-bukkit
parent635800af986351f08dba33aa2e8ec5dd691bbffb (diff)
downloadspark-b78afab85ee15d809ea4ff0ccb14c2b263ede860.tar.gz
spark-b78afab85ee15d809ea4ff0ccb14c2b263ede860.tar.bz2
spark-b78afab85ee15d809ea4ff0ccb14c2b263ede860.zip
Include gamerule settings in metadata (#425)
Diffstat (limited to 'spark-bukkit')
-rw-r--r--spark-bukkit/src/main/java/me/lucko/spark/bukkit/BukkitWorldInfoProvider.java29
1 files changed, 29 insertions, 0 deletions
diff --git a/spark-bukkit/src/main/java/me/lucko/spark/bukkit/BukkitWorldInfoProvider.java b/spark-bukkit/src/main/java/me/lucko/spark/bukkit/BukkitWorldInfoProvider.java
index 8d2ea51..6290391 100644
--- a/spark-bukkit/src/main/java/me/lucko/spark/bukkit/BukkitWorldInfoProvider.java
+++ b/spark-bukkit/src/main/java/me/lucko/spark/bukkit/BukkitWorldInfoProvider.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.block.BlockState;
@@ -32,6 +33,7 @@ import org.bukkit.entity.EntityType;
import java.util.ArrayList;
import java.util.List;
+import java.util.Objects;
public class BukkitWorldInfoProvider implements WorldInfoProvider {
private static final boolean SUPPORTS_PAPER_COUNT_METHODS;
@@ -110,6 +112,33 @@ public class BukkitWorldInfoProvider 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 BukkitChunkInfo extends AbstractChunkInfo<EntityType> {
private final CountMap<EntityType> entityCounts;