diff options
author | Luck <git@lucko.me> | 2024-09-05 20:37:25 +0100 |
---|---|---|
committer | Luck <git@lucko.me> | 2024-09-05 20:37:37 +0100 |
commit | 8986c711cef445650ceef832a3ac999819cd06a0 (patch) | |
tree | 3a53b128d88ad5f3028c0651e1c2b03a0cbd5288 /spark-common/src/main/java | |
parent | ed33fd51cefabfd04df4376dc2118f31ce93a90d (diff) | |
download | spark-8986c711cef445650ceef832a3ac999819cd06a0.tar.gz spark-8986c711cef445650ceef832a3ac999819cd06a0.tar.bz2 spark-8986c711cef445650ceef832a3ac999819cd06a0.zip |
Include datapacks info in sampler proto
Diffstat (limited to 'spark-common/src/main/java')
4 files changed, 70 insertions, 7 deletions
diff --git a/spark-common/src/main/java/me/lucko/spark/common/platform/world/AsyncWorldInfoProvider.java b/spark-common/src/main/java/me/lucko/spark/common/platform/world/AsyncWorldInfoProvider.java index 0f48b2e..707097a 100644 --- a/spark-common/src/main/java/me/lucko/spark/common/platform/world/AsyncWorldInfoProvider.java +++ b/spark-common/src/main/java/me/lucko/spark/common/platform/world/AsyncWorldInfoProvider.java @@ -23,6 +23,7 @@ package me.lucko.spark.common.platform.world; import me.lucko.spark.common.SparkPlatform; import me.lucko.spark.common.SparkPlugin; +import java.util.Collection; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; @@ -84,6 +85,10 @@ public class AsyncWorldInfoProvider { return async(WorldInfoProvider::pollGameRules); } + public CompletableFuture<Collection<WorldInfoProvider.DataPackInfo>> pollDataPacks() { + return async(WorldInfoProvider::pollDataPacks); + } + public WorldInfoProvider.CountsResult getCounts() { return get(pollCounts()); } @@ -95,4 +100,8 @@ public class AsyncWorldInfoProvider { public WorldInfoProvider.GameRulesResult getGameRules() { return get(pollGameRules()); } + + public Collection<WorldInfoProvider.DataPackInfo> getDataPacks() { + return get(pollDataPacks()); + } } diff --git a/spark-common/src/main/java/me/lucko/spark/common/platform/world/WorldInfoProvider.java b/spark-common/src/main/java/me/lucko/spark/common/platform/world/WorldInfoProvider.java index e360ea4..457f8c9 100644 --- a/spark-common/src/main/java/me/lucko/spark/common/platform/world/WorldInfoProvider.java +++ b/spark-common/src/main/java/me/lucko/spark/common/platform/world/WorldInfoProvider.java @@ -20,6 +20,7 @@ package me.lucko.spark.common.platform.world; +import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -44,6 +45,11 @@ public interface WorldInfoProvider { public GameRulesResult pollGameRules() { return null; } + + @Override + public Collection<DataPackInfo> pollDataPacks() { + return null; + } }; /** @@ -67,6 +73,13 @@ public interface WorldInfoProvider { */ GameRulesResult pollGameRules(); + /** + * Polls for data packs. + * + * @return the data packs + */ + Collection<DataPackInfo> pollDataPacks(); + default boolean mustCallSync() { return true; } @@ -146,4 +159,28 @@ public interface WorldInfoProvider { } } + final class DataPackInfo { + private final String name; + private final String description; + private final String source; + + public DataPackInfo(String name, String description, String source) { + this.name = name; + this.description = description; + this.source = source; + } + + public String name() { + return this.name; + } + + public String description() { + return this.description; + } + + public String source() { + return this.source; + } + } + } diff --git a/spark-common/src/main/java/me/lucko/spark/common/platform/world/WorldStatisticsProvider.java b/spark-common/src/main/java/me/lucko/spark/common/platform/world/WorldStatisticsProvider.java index 5d00037..58183a0 100644 --- a/spark-common/src/main/java/me/lucko/spark/common/platform/world/WorldStatisticsProvider.java +++ b/spark-common/src/main/java/me/lucko/spark/common/platform/world/WorldStatisticsProvider.java @@ -23,6 +23,7 @@ package me.lucko.spark.common.platform.world; import me.lucko.spark.proto.SparkProtos.WorldStatistics; import java.util.ArrayList; +import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; @@ -80,6 +81,16 @@ public class WorldStatisticsProvider { )); } + Collection<WorldInfoProvider.DataPackInfo> dataPacks = this.provider.getDataPacks(); + if (dataPacks != null) { + dataPacks.forEach(dataPack -> stats.addDataPacks(WorldStatistics.DataPack.newBuilder() + .setName(dataPack.name()) + .setDescription(dataPack.description()) + .setSource(dataPack.source()) + .build() + )); + } + return stats.build(); } diff --git a/spark-common/src/main/java/me/lucko/spark/common/sampler/source/SourceMetadata.java b/spark-common/src/main/java/me/lucko/spark/common/sampler/source/SourceMetadata.java index 9410b80..d023a68 100644 --- a/spark-common/src/main/java/me/lucko/spark/common/sampler/source/SourceMetadata.java +++ b/spark-common/src/main/java/me/lucko/spark/common/sampler/source/SourceMetadata.java @@ -33,15 +33,16 @@ import java.util.function.Function; */ public class SourceMetadata { - public static <T> List<SourceMetadata> gather(Collection<T> sources, Function<? super T, String> nameFunction, Function<? super T, String> versionFunction, Function<? super T, String> authorFunction) { + public static <T> List<SourceMetadata> gather(Collection<T> sources, Function<? super T, String> name, Function<? super T, String> version, Function<? super T, String> author, Function<? super T, String> description) { ImmutableList.Builder<SourceMetadata> builder = ImmutableList.builder(); for (T source : sources) { - String name = nameFunction.apply(source); - String version = versionFunction.apply(source); - String author = authorFunction.apply(source); - - SourceMetadata metadata = new SourceMetadata(name, version, author); + SourceMetadata metadata = new SourceMetadata( + name.apply(source), + version.apply(source), + author.apply(source), + description.apply(source) + ); builder.add(metadata); } @@ -51,11 +52,13 @@ public class SourceMetadata { private final String name; private final String version; private final String author; + private final String description; - public SourceMetadata(String name, String version, String author) { + public SourceMetadata(String name, String version, String author, String description) { this.name = name; this.version = version; this.author = author; + this.description = description; } public String getName() { @@ -78,6 +81,9 @@ public class SourceMetadata { if (this.author != null) { builder.setAuthor(this.author); } + if (this.description != null) { + builder.setDescription(this.description); + } return builder.build(); } |