diff options
author | lucko <git@lucko.me> | 2024-07-21 12:44:06 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-21 12:44:06 +0100 |
commit | b78afab85ee15d809ea4ff0ccb14c2b263ede860 (patch) | |
tree | d3d987473aee0b1e71ac6a24ea2f692be78bf14b /spark-bukkit/src | |
parent | 635800af986351f08dba33aa2e8ec5dd691bbffb (diff) | |
download | spark-b78afab85ee15d809ea4ff0ccb14c2b263ede860.tar.gz spark-b78afab85ee15d809ea4ff0ccb14c2b263ede860.tar.bz2 spark-b78afab85ee15d809ea4ff0ccb14c2b263ede860.zip |
Include gamerule settings in metadata (#425)
Diffstat (limited to 'spark-bukkit/src')
-rw-r--r-- | spark-bukkit/src/main/java/me/lucko/spark/bukkit/BukkitWorldInfoProvider.java | 29 |
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; |