diff options
33 files changed, 290 insertions, 281 deletions
diff --git a/spark-bukkit/build.gradle b/spark-bukkit/build.gradle index 99f3871..da46dc3 100644 --- a/spark-bukkit/build.gradle +++ b/spark-bukkit/build.gradle @@ -2,10 +2,14 @@ plugins { id 'com.gradleup.shadow' version '8.3.0' } +java { + disableAutoTargetJvm() +} + dependencies { implementation project(':spark-common') implementation 'net.kyori:adventure-platform-bukkit:4.3.3' - compileOnly 'com.destroystokyo.paper:paper-api:1.16.4-R0.1-SNAPSHOT' + compileOnly 'io.papermc.paper:paper-api:1.21.1-R0.1-SNAPSHOT' // placeholders compileOnly 'me.clip:placeholderapi:2.10.3' diff --git a/spark-bukkit/src/main/java/me/lucko/spark/bukkit/BukkitSparkPlugin.java b/spark-bukkit/src/main/java/me/lucko/spark/bukkit/BukkitSparkPlugin.java index dc87fce..afab555 100644 --- a/spark-bukkit/src/main/java/me/lucko/spark/bukkit/BukkitSparkPlugin.java +++ b/spark-bukkit/src/main/java/me/lucko/spark/bukkit/BukkitSparkPlugin.java @@ -188,7 +188,8 @@ public class BukkitSparkPlugin extends JavaPlugin implements SparkPlugin { Arrays.asList(getServer().getPluginManager().getPlugins()), Plugin::getName, plugin -> plugin.getDescription().getVersion(), - plugin -> String.join(", ", plugin.getDescription().getAuthors()) + plugin -> String.join(", ", plugin.getDescription().getAuthors()), + plugin -> plugin.getDescription().getDescription() ); } 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 be04640..303cc3e 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 @@ -32,12 +32,16 @@ import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; import java.util.ArrayList; +import java.util.Collection; import java.util.List; +import java.util.Locale; import java.util.Objects; +import java.util.stream.Collectors; public class BukkitWorldInfoProvider implements WorldInfoProvider { private static final boolean SUPPORTS_PAPER_COUNT_METHODS; private static final boolean SUPPORTS_GAMERULES; + private static final boolean SUPPORTS_DATAPACKS; static { boolean supportsPaperCountMethods = false; @@ -59,8 +63,17 @@ public class BukkitWorldInfoProvider implements WorldInfoProvider { // ignored } + boolean supportsDataPacks = false; + try { + Server.class.getMethod("getDataPackManager"); + supportsDataPacks = true; + } catch (Exception e) { + // ignored + } + SUPPORTS_PAPER_COUNT_METHODS = supportsPaperCountMethods; SUPPORTS_GAMERULES = supportsGameRules; + SUPPORTS_DATAPACKS = supportsDataPacks; } private final Server server; @@ -155,6 +168,22 @@ public class BukkitWorldInfoProvider implements WorldInfoProvider { return data; } + @SuppressWarnings("removal") + @Override + public Collection<DataPackInfo> pollDataPacks() { + if (!SUPPORTS_DATAPACKS) { + return null; + } + + return this.server.getDataPackManager().getDataPacks().stream() + .map(pack -> new DataPackInfo( + pack.getTitle(), + pack.getDescription(), + pack.getSource().name().toLowerCase(Locale.ROOT).replace("_", "") + )) + .collect(Collectors.toList()); + } + static final class BukkitChunkInfo extends AbstractChunkInfo<EntityType> { private final CountMap<EntityType> entityCounts; diff --git a/spark-bungeecord/src/main/java/me/lucko/spark/bungeecord/BungeeCordSparkPlugin.java b/spark-bungeecord/src/main/java/me/lucko/spark/bungeecord/BungeeCordSparkPlugin.java index 11f64db..85d72c7 100644 --- a/spark-bungeecord/src/main/java/me/lucko/spark/bungeecord/BungeeCordSparkPlugin.java +++ b/spark-bungeecord/src/main/java/me/lucko/spark/bungeecord/BungeeCordSparkPlugin.java @@ -98,7 +98,8 @@ public class BungeeCordSparkPlugin extends Plugin implements SparkPlugin { getProxy().getPluginManager().getPlugins(), plugin -> plugin.getDescription().getName(), plugin -> plugin.getDescription().getVersion(), - plugin -> plugin.getDescription().getAuthor() + plugin -> plugin.getDescription().getAuthor(), + plugin -> plugin.getDescription().getDescription() ); } 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(); } diff --git a/spark-common/src/main/proto/spark/spark.proto b/spark-common/src/main/proto/spark/spark.proto index 779b3c6..f8d7988 100644 --- a/spark-common/src/main/proto/spark/spark.proto +++ b/spark-common/src/main/proto/spark/spark.proto @@ -158,6 +158,7 @@ message WorldStatistics { map<string, int32> entity_counts = 2; repeated World worlds = 3; repeated GameRule game_rules = 4; + repeated DataPack data_packs = 5; message World { string name = 1; @@ -182,6 +183,12 @@ message WorldStatistics { string default_value = 2; map<string, string> world_values = 3; } + + message DataPack { + string name = 1; + string description = 2; + string source = 3; + } } message WindowStatistics { @@ -227,6 +234,7 @@ message PluginOrModMetadata { string name = 1; string version = 2; string author = 3; + string description = 4; } message HealthData { diff --git a/spark-common/src/test/java/me/lucko/spark/common/sampler/node/NodeTest.java b/spark-common/src/test/java/me/lucko/spark/common/sampler/node/NodeTest.java index f1534a8..52477ce 100644 --- a/spark-common/src/test/java/me/lucko/spark/common/sampler/node/NodeTest.java +++ b/spark-common/src/test/java/me/lucko/spark/common/sampler/node/NodeTest.java @@ -94,7 +94,7 @@ public class NodeTest { } @Test - public void testToProto() { + public void testExport() { ThreadNode threadNode = new ThreadNode("Test Thread"); threadNode.log(STACK_TRACE_DESCRIBER, STACK_1, TimeUnit.SECONDS.toMicros(1), WINDOW); threadNode.log(STACK_TRACE_DESCRIBER, STACK_1, TimeUnit.SECONDS.toMicros(1), WINDOW + 1); diff --git a/spark-fabric/src/main/java/me/lucko/spark/fabric/FabricExtraMetadataProvider.java b/spark-fabric/src/main/java/me/lucko/spark/fabric/FabricExtraMetadataProvider.java deleted file mode 100644 index a6f70a6..0000000 --- a/spark-fabric/src/main/java/me/lucko/spark/fabric/FabricExtraMetadataProvider.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * This file is part of spark. - * - * Copyright (c) lucko (Luck) <luck@lucko.me> - * Copyright (c) contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -package me.lucko.spark.fabric; - -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import me.lucko.spark.common.platform.MetadataProvider; -import net.minecraft.resource.ResourcePackManager; -import net.minecraft.resource.ResourcePackProfile; -import net.minecraft.resource.ResourcePackSource; - -import java.util.LinkedHashMap; -import java.util.Map; - -public class FabricExtraMetadataProvider implements MetadataProvider { - - private final ResourcePackManager resourcePackManager; - - public FabricExtraMetadataProvider(ResourcePackManager resourcePackManager) { - this.resourcePackManager = resourcePackManager; - } - - @Override - public Map<String, JsonElement> get() { - Map<String, JsonElement> metadata = new LinkedHashMap<>(); - metadata.put("datapacks", datapackMetadata()); - return metadata; - } - - private JsonElement datapackMetadata() { - JsonObject datapacks = new JsonObject(); - for (ResourcePackProfile profile : this.resourcePackManager.getEnabledProfiles()) { - JsonObject obj = new JsonObject(); - obj.addProperty("name", profile.getDisplayName().getString()); - obj.addProperty("description", profile.getDescription().getString()); - obj.addProperty("source", resourcePackSource(profile.getSource())); - datapacks.add(profile.getId(), obj); - } - return datapacks; - } - - private static String resourcePackSource(ResourcePackSource source) { - if (source == ResourcePackSource.NONE) { - return "none"; - } else if (source == ResourcePackSource.BUILTIN) { - return "builtin"; - } else if (source == ResourcePackSource.WORLD) { - return "world"; - } else if (source == ResourcePackSource.SERVER) { - return "server"; - } else { - return "unknown"; - } - } -} diff --git a/spark-fabric/src/main/java/me/lucko/spark/fabric/FabricWorldInfoProvider.java b/spark-fabric/src/main/java/me/lucko/spark/fabric/FabricWorldInfoProvider.java index 5486cc2..514be5b 100644 --- a/spark-fabric/src/main/java/me/lucko/spark/fabric/FabricWorldInfoProvider.java +++ b/spark-fabric/src/main/java/me/lucko/spark/fabric/FabricWorldInfoProvider.java @@ -34,6 +34,8 @@ import net.minecraft.client.MinecraftClient; import net.minecraft.client.world.ClientWorld; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; +import net.minecraft.resource.ResourcePackManager; +import net.minecraft.resource.ResourcePackSource; import net.minecraft.server.MinecraftServer; import net.minecraft.server.world.ServerEntityManager; import net.minecraft.server.world.ServerWorld; @@ -44,11 +46,40 @@ import net.minecraft.world.entity.EntityIndex; import net.minecraft.world.entity.EntityLookup; import java.lang.reflect.Method; +import java.util.Collection; import java.util.HashMap; import java.util.List; +import java.util.stream.Collectors; public abstract class FabricWorldInfoProvider implements WorldInfoProvider { + protected abstract ResourcePackManager getResourcePackManager(); + + @Override + public Collection<DataPackInfo> pollDataPacks() { + return getResourcePackManager().getEnabledProfiles().stream() + .map(pack -> new DataPackInfo( + pack.getId(), + pack.getDescription().getString(), + resourcePackSource(pack.getSource()) + )) + .collect(Collectors.toList()); + } + + private static String resourcePackSource(ResourcePackSource source) { + if (source == ResourcePackSource.NONE) { + return "none"; + } else if (source == ResourcePackSource.BUILTIN) { + return "builtin"; + } else if (source == ResourcePackSource.WORLD) { + return "world"; + } else if (source == ResourcePackSource.SERVER) { + return "server"; + } else { + return "unknown"; + } + } + public static final class Server extends FabricWorldInfoProvider { private final MinecraftServer server; @@ -118,6 +149,11 @@ public abstract class FabricWorldInfoProvider implements WorldInfoProvider { }); return data; } + + @Override + protected ResourcePackManager getResourcePackManager() { + return this.server.getDataPackManager(); + } } public static final class Client extends FabricWorldInfoProvider { @@ -195,6 +231,11 @@ public abstract class FabricWorldInfoProvider implements WorldInfoProvider { return data; } + + @Override + protected ResourcePackManager getResourcePackManager() { + return this.client.getResourcePackManager(); + } } static final class FabricChunkInfo extends AbstractChunkInfo<EntityType<?>> { diff --git a/spark-fabric/src/main/java/me/lucko/spark/fabric/plugin/FabricClientSparkPlugin.java b/spark-fabric/src/main/java/me/lucko/spark/fabric/plugin/FabricClientSparkPlugin.java index 0a17bd7..d80e026 100644 --- a/spark-fabric/src/main/java/me/lucko/spark/fabric/plugin/FabricClientSparkPlugin.java +++ b/spark-fabric/src/main/java/me/lucko/spark/fabric/plugin/FabricClientSparkPlugin.java @@ -27,14 +27,12 @@ import com.mojang.brigadier.exceptions.CommandSyntaxException; import com.mojang.brigadier.suggestion.SuggestionProvider; import com.mojang.brigadier.suggestion.Suggestions; import com.mojang.brigadier.suggestion.SuggestionsBuilder; -import me.lucko.spark.common.platform.MetadataProvider; import me.lucko.spark.common.platform.PlatformInfo; import me.lucko.spark.common.platform.world.WorldInfoProvider; import me.lucko.spark.common.sampler.ThreadDumper; import me.lucko.spark.common.tick.TickHook; import me.lucko.spark.common.tick.TickReporter; import me.lucko.spark.fabric.FabricCommandSender; -import me.lucko.spark.fabric.FabricExtraMetadataProvider; import me.lucko.spark.fabric.FabricPlatformInfo; import me.lucko.spark.fabric.FabricSparkMod; import me.lucko.spark.fabric.FabricTickHook; @@ -138,11 +136,6 @@ public class FabricClientSparkPlugin extends FabricSparkPlugin implements Comman } @Override - public MetadataProvider createExtraMetadataProvider() { - return new FabricExtraMetadataProvider(this.minecraft.getResourcePackManager()); - } - - @Override public WorldInfoProvider createWorldInfoProvider() { return new FabricWorldInfoProvider.Client(this.minecraft); } diff --git a/spark-fabric/src/main/java/me/lucko/spark/fabric/plugin/FabricServerSparkPlugin.java b/spark-fabric/src/main/java/me/lucko/spark/fabric/plugin/FabricServerSparkPlugin.java index bd937af..04bbdf0 100644 --- a/spark-fabric/src/main/java/me/lucko/spark/fabric/plugin/FabricServerSparkPlugin.java +++ b/spark-fabric/src/main/java/me/lucko/spark/fabric/plugin/FabricServerSparkPlugin.java @@ -29,7 +29,6 @@ import com.mojang.brigadier.suggestion.Suggestions; import com.mojang.brigadier.suggestion.SuggestionsBuilder; import me.lucko.fabric.api.permissions.v0.Permissions; import me.lucko.spark.common.monitor.ping.PlayerPingProvider; -import me.lucko.spark.common.platform.MetadataProvider; import me.lucko.spark.common.platform.PlatformInfo; import me.lucko.spark.common.platform.serverconfig.ServerConfigProvider; import me.lucko.spark.common.platform.world.WorldInfoProvider; @@ -37,7 +36,6 @@ import me.lucko.spark.common.sampler.ThreadDumper; import me.lucko.spark.common.tick.TickHook; import me.lucko.spark.common.tick.TickReporter; import me.lucko.spark.fabric.FabricCommandSender; -import me.lucko.spark.fabric.FabricExtraMetadataProvider; import me.lucko.spark.fabric.FabricPlatformInfo; import me.lucko.spark.fabric.FabricPlayerPingProvider; import me.lucko.spark.fabric.FabricServerConfigProvider; @@ -170,11 +168,6 @@ public class FabricServerSparkPlugin extends FabricSparkPlugin implements Comman } @Override - public MetadataProvider createExtraMetadataProvider() { - return new FabricExtraMetadataProvider(this.server.getDataPackManager()); - } - - @Override public WorldInfoProvider createWorldInfoProvider() { return new FabricWorldInfoProvider.Server(this.server); } 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 1569bf8..8f0c14d 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 @@ -120,7 +120,8 @@ public abstract class FabricSparkPlugin implements SparkPlugin { mod -> mod.getMetadata().getVersion().getFriendlyString(), mod -> mod.getMetadata().getAuthors().stream() .map(Person::getName) - .collect(Collectors.joining(", ")) + .collect(Collectors.joining(", ")), + mod -> mod.getMetadata().getDescription() ); } diff --git a/spark-forge/src/main/java/me/lucko/spark/forge/ForgeExtraMetadataProvider.java b/spark-forge/src/main/java/me/lucko/spark/forge/ForgeExtraMetadataProvider.java deleted file mode 100644 index 2fe187a..0000000 --- a/spark-forge/src/main/java/me/lucko/spark/forge/ForgeExtraMetadataProvider.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * This file is part of spark. - * - * Copyright (c) lucko (Luck) <luck@lucko.me> - * Copyright (c) contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -package me.lucko.spark.forge; - -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import me.lucko.spark.common.platform.MetadataProvider; -import net.minecraft.server.packs.repository.Pack; -import net.minecraft.server.packs.repository.PackRepository; -import net.minecraft.server.packs.repository.PackSource; - -import java.util.LinkedHashMap; -import java.util.Map; - -public class ForgeExtraMetadataProvider implements MetadataProvider { - - private final PackRepository resourcePackManager; - - public ForgeExtraMetadataProvider(PackRepository resourcePackManager) { - this.resourcePackManager = resourcePackManager; - } - - @Override - public Map<String, JsonElement> get() { - Map<String, JsonElement> metadata = new LinkedHashMap<>(); - metadata.put("datapacks", datapackMetadata()); - return metadata; - } - - private JsonElement datapackMetadata() { - JsonObject datapacks = new JsonObject(); - for (Pack profile : this.resourcePackManager.getSelectedPacks()) { - JsonObject obj = new JsonObject(); - obj.addProperty("name", profile.getTitle().getString()); - obj.addProperty("description", profile.getDescription().getString()); - obj.addProperty("source", resourcePackSource(profile.getPackSource())); - datapacks.add(profile.getId(), obj); - } - return datapacks; - } - - private static String resourcePackSource(PackSource source) { - if (source == PackSource.DEFAULT) { - return "none"; - } else if (source == PackSource.BUILT_IN) { - return "builtin"; - } else if (source == PackSource.WORLD) { - return "world"; - } else if (source == PackSource.SERVER) { - return "server"; - } else { - return "unknown"; - } - } -} diff --git a/spark-forge/src/main/java/me/lucko/spark/forge/ForgeWorldInfoProvider.java b/spark-forge/src/main/java/me/lucko/spark/forge/ForgeWorldInfoProvider.java index 0d1724e..b31b825 100644 --- a/spark-forge/src/main/java/me/lucko/spark/forge/ForgeWorldInfoProvider.java +++ b/spark-forge/src/main/java/me/lucko/spark/forge/ForgeWorldInfoProvider.java @@ -28,6 +28,8 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.packs.repository.PackRepository; +import net.minecraft.server.packs.repository.PackSource; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.level.ChunkPos; @@ -36,11 +38,40 @@ import net.minecraft.world.level.entity.EntityLookup; import net.minecraft.world.level.entity.PersistentEntitySectionManager; import net.minecraft.world.level.entity.TransientEntitySectionManager; +import java.util.Collection; import java.util.HashMap; import java.util.List; +import java.util.stream.Collectors; public abstract class ForgeWorldInfoProvider implements WorldInfoProvider { + protected abstract PackRepository getPackRepository(); + + @Override + public Collection<DataPackInfo> pollDataPacks() { + return getPackRepository().getSelectedPacks().stream() + .map(pack -> new DataPackInfo( + pack.getId(), + pack.getDescription().getString(), + resourcePackSource(pack.getPackSource()) + )) + .collect(Collectors.toList()); + } + + private static String resourcePackSource(PackSource source) { + if (source == PackSource.DEFAULT) { + return "none"; + } else if (source == PackSource.BUILT_IN) { + return "builtin"; + } else if (source == PackSource.WORLD) { + return "world"; + } else if (source == PackSource.SERVER) { + return "server"; + } else { + return "unknown"; + } + } + public static final class Server extends ForgeWorldInfoProvider { private final MinecraftServer server; @@ -106,6 +137,11 @@ public abstract class ForgeWorldInfoProvider implements WorldInfoProvider { return data; } + + @Override + protected PackRepository getPackRepository() { + return this.server.getPackRepository(); + } } public static final class Client extends ForgeWorldInfoProvider { @@ -177,6 +213,11 @@ public abstract class ForgeWorldInfoProvider implements WorldInfoProvider { return data; } + + @Override + protected PackRepository getPackRepository() { + return this.client.getResourcePackRepository(); + } } public static final class ForgeChunkInfo extends AbstractChunkInfo<EntityType<?>> { diff --git a/spark-forge/src/main/java/me/lucko/spark/forge/plugin/ForgeClientSparkPlugin.java b/spark-forge/src/main/java/me/lucko/spark/forge/plugin/ForgeClientSparkPlugin.java index 9cfb621..86915a4 100644 --- a/spark-forge/src/main/java/me/lucko/spark/forge/plugin/ForgeClientSparkPlugin.java +++ b/spark-forge/src/main/java/me/lucko/spark/forge/plugin/ForgeClientSparkPlugin.java @@ -26,14 +26,12 @@ import com.mojang.brigadier.exceptions.CommandSyntaxException; import com.mojang.brigadier.suggestion.SuggestionProvider; import com.mojang.brigadier.suggestion.Suggestions; import com.mojang.brigadier.suggestion.SuggestionsBuilder; -import me.lucko.spark.common.platform.MetadataProvider; import me.lucko.spark.common.platform.PlatformInfo; import me.lucko.spark.common.platform.world.WorldInfoProvider; import me.lucko.spark.common.sampler.ThreadDumper; import me.lucko.spark.common.tick.TickHook; import me.lucko.spark.common.tick.TickReporter; import me.lucko.spark.forge.ForgeCommandSender; -import me.lucko.spark.forge.ForgeExtraMetadataProvider; import me.lucko.spark.forge.ForgePlatformInfo; import me.lucko.spark.forge.ForgeSparkMod; import me.lucko.spark.forge.ForgeTickHook; @@ -137,11 +135,6 @@ public class ForgeClientSparkPlugin extends ForgeSparkPlugin implements Command< } @Override - public MetadataProvider createExtraMetadataProvider() { - return new ForgeExtraMetadataProvider(this.minecraft.getResourcePackRepository()); - } - - @Override public PlatformInfo getPlatformInfo() { return new ForgePlatformInfo(PlatformInfo.Type.CLIENT); } diff --git a/spark-forge/src/main/java/me/lucko/spark/forge/plugin/ForgeServerSparkPlugin.java b/spark-forge/src/main/java/me/lucko/spark/forge/plugin/ForgeServerSparkPlugin.java index 11281f1..4af45d9 100644 --- a/spark-forge/src/main/java/me/lucko/spark/forge/plugin/ForgeServerSparkPlugin.java +++ b/spark-forge/src/main/java/me/lucko/spark/forge/plugin/ForgeServerSparkPlugin.java @@ -29,7 +29,6 @@ import com.mojang.brigadier.suggestion.SuggestionProvider; import com.mojang.brigadier.suggestion.Suggestions; import com.mojang.brigadier.suggestion.SuggestionsBuilder; import me.lucko.spark.common.monitor.ping.PlayerPingProvider; -import me.lucko.spark.common.platform.MetadataProvider; import me.lucko.spark.common.platform.PlatformInfo; import me.lucko.spark.common.platform.serverconfig.ServerConfigProvider; import me.lucko.spark.common.platform.world.WorldInfoProvider; @@ -37,7 +36,6 @@ import me.lucko.spark.common.sampler.ThreadDumper; import me.lucko.spark.common.tick.TickHook; import me.lucko.spark.common.tick.TickReporter; import me.lucko.spark.forge.ForgeCommandSender; -import me.lucko.spark.forge.ForgeExtraMetadataProvider; import me.lucko.spark.forge.ForgePlatformInfo; import me.lucko.spark.forge.ForgePlayerPingProvider; import me.lucko.spark.forge.ForgeServerConfigProvider; @@ -246,11 +244,6 @@ public class ForgeServerSparkPlugin extends ForgeSparkPlugin implements Command< } @Override - public MetadataProvider createExtraMetadataProvider() { - return new ForgeExtraMetadataProvider(this.server.getPackRepository()); - } - - @Override public WorldInfoProvider createWorldInfoProvider() { return new ForgeWorldInfoProvider.Server(this.server); } 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 258684d..5c0761d 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 @@ -117,7 +117,8 @@ public abstract class ForgeSparkPlugin implements SparkPlugin { ModList.get().getMods(), IModInfo::getModId, mod -> mod.getVersion().toString(), - mod -> null // ? + mod -> null, // ? + IModInfo::getDescription ); } diff --git a/spark-neoforge/src/main/java/me/lucko/spark/neoforge/NeoForgeExtraMetadataProvider.java b/spark-neoforge/src/main/java/me/lucko/spark/neoforge/NeoForgeExtraMetadataProvider.java deleted file mode 100644 index e18b3d3..0000000 --- a/spark-neoforge/src/main/java/me/lucko/spark/neoforge/NeoForgeExtraMetadataProvider.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * This file is part of spark. - * - * Copyright (c) lucko (Luck) <luck@lucko.me> - * Copyright (c) contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -package me.lucko.spark.neoforge; - -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import me.lucko.spark.common.platform.MetadataProvider; -import net.minecraft.server.packs.repository.Pack; -import net.minecraft.server.packs.repository.PackRepository; -import net.minecraft.server.packs.repository.PackSource; - -import java.util.LinkedHashMap; -import java.util.Map; - -public class NeoForgeExtraMetadataProvider implements MetadataProvider { - - private final PackRepository resourcePackManager; - - public NeoForgeExtraMetadataProvider(PackRepository resourcePackManager) { - this.resourcePackManager = resourcePackManager; - } - - @Override - public Map<String, JsonElement> get() { - Map<String, JsonElement> metadata = new LinkedHashMap<>(); - metadata.put("datapacks", datapackMetadata()); - return metadata; - } - - private JsonElement datapackMetadata() { - JsonObject datapacks = new JsonObject(); - for (Pack profile : this.resourcePackManager.getSelectedPacks()) { - JsonObject obj = new JsonObject(); - obj.addProperty("name", profile.getTitle().getString()); - obj.addProperty("description", profile.getDescription().getString()); - obj.addProperty("source", resourcePackSource(profile.getPackSource())); - datapacks.add(profile.getId(), obj); - } - return datapacks; - } - - private static String resourcePackSource(PackSource source) { - if (source == PackSource.DEFAULT) { - return "none"; - } else if (source == PackSource.BUILT_IN) { - return "builtin"; - } else if (source == PackSource.WORLD) { - return "world"; - } else if (source == PackSource.SERVER) { - return "server"; - } else { - return "unknown"; - } - } -} diff --git a/spark-neoforge/src/main/java/me/lucko/spark/neoforge/NeoForgeWorldInfoProvider.java b/spark-neoforge/src/main/java/me/lucko/spark/neoforge/NeoForgeWorldInfoProvider.java index 96a90c2..a234bc8 100644 --- a/spark-neoforge/src/main/java/me/lucko/spark/neoforge/NeoForgeWorldInfoProvider.java +++ b/spark-neoforge/src/main/java/me/lucko/spark/neoforge/NeoForgeWorldInfoProvider.java @@ -28,6 +28,8 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.packs.repository.PackRepository; +import net.minecraft.server.packs.repository.PackSource; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.level.ChunkPos; @@ -39,11 +41,40 @@ import net.minecraft.world.level.entity.TransientEntitySectionManager; import net.neoforged.fml.ModList; import java.lang.reflect.Method; +import java.util.Collection; import java.util.HashMap; import java.util.List; +import java.util.stream.Collectors; public abstract class NeoForgeWorldInfoProvider implements WorldInfoProvider { + protected abstract PackRepository getPackRepository(); + + @Override + public Collection<DataPackInfo> pollDataPacks() { + return getPackRepository().getSelectedPacks().stream() + .map(pack -> new DataPackInfo( + pack.getId(), + pack.getDescription().getString(), + resourcePackSource(pack.getPackSource()) + )) + .collect(Collectors.toList()); + } + + private static String resourcePackSource(PackSource source) { + if (source == PackSource.DEFAULT) { + return "none"; + } else if (source == PackSource.BUILT_IN) { + return "builtin"; + } else if (source == PackSource.WORLD) { + return "world"; + } else if (source == PackSource.SERVER) { + return "server"; + } else { + return "unknown"; + } + } + public static final class Server extends NeoForgeWorldInfoProvider { private final MinecraftServer server; @@ -114,6 +145,11 @@ public abstract class NeoForgeWorldInfoProvider implements WorldInfoProvider { return data; } + + @Override + protected PackRepository getPackRepository() { + return this.server.getPackRepository(); + } } public static final class Client extends NeoForgeWorldInfoProvider { @@ -190,6 +226,11 @@ public abstract class NeoForgeWorldInfoProvider implements WorldInfoProvider { return data; } + + @Override + protected PackRepository getPackRepository() { + return this.client.getResourcePackRepository(); + } } public static final class ForgeChunkInfo extends AbstractChunkInfo<EntityType<?>> { diff --git a/spark-neoforge/src/main/java/me/lucko/spark/neoforge/plugin/NeoForgeClientSparkPlugin.java b/spark-neoforge/src/main/java/me/lucko/spark/neoforge/plugin/NeoForgeClientSparkPlugin.java index afc718d..b779af8 100644 --- a/spark-neoforge/src/main/java/me/lucko/spark/neoforge/plugin/NeoForgeClientSparkPlugin.java +++ b/spark-neoforge/src/main/java/me/lucko/spark/neoforge/plugin/NeoForgeClientSparkPlugin.java @@ -26,14 +26,12 @@ import com.mojang.brigadier.exceptions.CommandSyntaxException; import com.mojang.brigadier.suggestion.SuggestionProvider; import com.mojang.brigadier.suggestion.Suggestions; import com.mojang.brigadier.suggestion.SuggestionsBuilder; -import me.lucko.spark.common.platform.MetadataProvider; import me.lucko.spark.common.platform.PlatformInfo; import me.lucko.spark.common.platform.world.WorldInfoProvider; import me.lucko.spark.common.sampler.ThreadDumper; import me.lucko.spark.common.tick.TickHook; import me.lucko.spark.common.tick.TickReporter; import me.lucko.spark.neoforge.NeoForgeCommandSender; -import me.lucko.spark.neoforge.NeoForgeExtraMetadataProvider; import me.lucko.spark.neoforge.NeoForgePlatformInfo; import me.lucko.spark.neoforge.NeoForgeSparkMod; import me.lucko.spark.neoforge.NeoForgeTickHook; @@ -136,11 +134,6 @@ public class NeoForgeClientSparkPlugin extends NeoForgeSparkPlugin implements Co } @Override - public MetadataProvider createExtraMetadataProvider() { - return new NeoForgeExtraMetadataProvider(this.minecraft.getResourcePackRepository()); - } - - @Override public PlatformInfo getPlatformInfo() { return new NeoForgePlatformInfo(PlatformInfo.Type.CLIENT); } diff --git a/spark-neoforge/src/main/java/me/lucko/spark/neoforge/plugin/NeoForgeServerSparkPlugin.java b/spark-neoforge/src/main/java/me/lucko/spark/neoforge/plugin/NeoForgeServerSparkPlugin.java index 28b6c26..5a573a0 100644 --- a/spark-neoforge/src/main/java/me/lucko/spark/neoforge/plugin/NeoForgeServerSparkPlugin.java +++ b/spark-neoforge/src/main/java/me/lucko/spark/neoforge/plugin/NeoForgeServerSparkPlugin.java @@ -29,7 +29,6 @@ import com.mojang.brigadier.suggestion.SuggestionProvider; import com.mojang.brigadier.suggestion.Suggestions; import com.mojang.brigadier.suggestion.SuggestionsBuilder; import me.lucko.spark.common.monitor.ping.PlayerPingProvider; -import me.lucko.spark.common.platform.MetadataProvider; import me.lucko.spark.common.platform.PlatformInfo; import me.lucko.spark.common.platform.serverconfig.ServerConfigProvider; import me.lucko.spark.common.platform.world.WorldInfoProvider; @@ -37,7 +36,6 @@ import me.lucko.spark.common.sampler.ThreadDumper; import me.lucko.spark.common.tick.TickHook; import me.lucko.spark.common.tick.TickReporter; import me.lucko.spark.neoforge.NeoForgeCommandSender; -import me.lucko.spark.neoforge.NeoForgeExtraMetadataProvider; import me.lucko.spark.neoforge.NeoForgePlatformInfo; import me.lucko.spark.neoforge.NeoForgePlayerPingProvider; import me.lucko.spark.neoforge.NeoForgeServerConfigProvider; @@ -244,11 +242,6 @@ public class NeoForgeServerSparkPlugin extends NeoForgeSparkPlugin implements Co } @Override - public MetadataProvider createExtraMetadataProvider() { - return new NeoForgeExtraMetadataProvider(this.server.getPackRepository()); - } - - @Override public WorldInfoProvider createWorldInfoProvider() { return new NeoForgeWorldInfoProvider.Server(this.server); } diff --git a/spark-neoforge/src/main/java/me/lucko/spark/neoforge/plugin/NeoForgeSparkPlugin.java b/spark-neoforge/src/main/java/me/lucko/spark/neoforge/plugin/NeoForgeSparkPlugin.java index 43d77a1..256f90a 100644 --- a/spark-neoforge/src/main/java/me/lucko/spark/neoforge/plugin/NeoForgeSparkPlugin.java +++ b/spark-neoforge/src/main/java/me/lucko/spark/neoforge/plugin/NeoForgeSparkPlugin.java @@ -117,7 +117,8 @@ public abstract class NeoForgeSparkPlugin implements SparkPlugin { ModList.get().getMods(), IModInfo::getModId, mod -> mod.getVersion().toString(), - mod -> null // ? + mod -> null, // ? + IModInfo::getDescription ); } 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 d70d5db..73694d2 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 @@ -185,7 +185,8 @@ public class PaperSparkPlugin implements PaperSparkModule, SparkPlugin { Arrays.asList(this.server.getPluginManager().getPlugins()), Plugin::getName, plugin -> plugin.getPluginMeta().getVersion(), - plugin -> String.join(", ", plugin.getPluginMeta().getAuthors()) + plugin -> String.join(", ", plugin.getPluginMeta().getAuthors()), + plugin -> plugin.getPluginMeta().getDescription() ); } @@ -209,7 +210,6 @@ public class PaperSparkPlugin implements PaperSparkModule, SparkPlugin { return PaperPlatformInfo.INSTANCE; } - // @SuppressWarnings("DataFlowIssue") // null plugin @Override public void registerApi(Spark api) { // this.server.getServicesManager().register(Spark.class, api, null, ServicePriority.Normal); 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 feda9a0..1729a95 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 @@ -31,8 +31,11 @@ import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; import java.util.ArrayList; +import java.util.Collection; import java.util.List; +import java.util.Locale; import java.util.Objects; +import java.util.stream.Collectors; public class PaperWorldInfoProvider implements WorldInfoProvider { private final Server server; @@ -104,6 +107,18 @@ public class PaperWorldInfoProvider implements WorldInfoProvider { return data; } + @SuppressWarnings("removal") + @Override + public Collection<DataPackInfo> pollDataPacks() { + return this.server.getDataPackManager().getDataPacks().stream() + .map(pack -> new DataPackInfo( + pack.getTitle(), + pack.getDescription(), + pack.getSource().name().toLowerCase(Locale.ROOT).replace("_", "") + )) + .collect(Collectors.toList()); + } + static final class PaperChunkInfo extends AbstractChunkInfo<EntityType> { private final CountMap<EntityType> entityCounts; diff --git a/spark-sponge7/src/main/java/me/lucko/spark/sponge/Sponge7WorldInfoProvider.java b/spark-sponge7/src/main/java/me/lucko/spark/sponge/Sponge7WorldInfoProvider.java index 1ded055..fd26bfa 100644 --- a/spark-sponge7/src/main/java/me/lucko/spark/sponge/Sponge7WorldInfoProvider.java +++ b/spark-sponge7/src/main/java/me/lucko/spark/sponge/Sponge7WorldInfoProvider.java @@ -32,6 +32,7 @@ import org.spongepowered.api.world.Chunk; import org.spongepowered.api.world.World; import java.util.ArrayList; +import java.util.Collection; import java.util.HashMap; import java.util.List; @@ -91,6 +92,11 @@ public class Sponge7WorldInfoProvider implements WorldInfoProvider { return null; } + @Override + public Collection<DataPackInfo> pollDataPacks() { + return null; + } + static final class Sponge7ChunkInfo extends AbstractChunkInfo<EntityType> { private final CountMap<EntityType> entityCounts; diff --git a/spark-sponge8/src/main/java/me/lucko/spark/sponge/Sponge8SparkPlugin.java b/spark-sponge8/src/main/java/me/lucko/spark/sponge/Sponge8SparkPlugin.java index 8e875ec..c675a8c 100644 --- a/spark-sponge8/src/main/java/me/lucko/spark/sponge/Sponge8SparkPlugin.java +++ b/spark-sponge8/src/main/java/me/lucko/spark/sponge/Sponge8SparkPlugin.java @@ -185,7 +185,8 @@ public class Sponge8SparkPlugin implements SparkPlugin { plugin -> plugin.metadata().version().toString(), plugin -> plugin.metadata().contributors().stream() .map(PluginContributor::name) - .collect(Collectors.joining(", ")) + .collect(Collectors.joining(", ")), + plugin -> plugin.metadata().description().orElse(null) ); } diff --git a/spark-sponge8/src/main/java/me/lucko/spark/sponge/Sponge8WorldInfoProvider.java b/spark-sponge8/src/main/java/me/lucko/spark/sponge/Sponge8WorldInfoProvider.java index 58f9c33..1bad9d7 100644 --- a/spark-sponge8/src/main/java/me/lucko/spark/sponge/Sponge8WorldInfoProvider.java +++ b/spark-sponge8/src/main/java/me/lucko/spark/sponge/Sponge8WorldInfoProvider.java @@ -25,6 +25,7 @@ import com.google.common.collect.Lists; 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 net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; import org.spongepowered.api.Server; import org.spongepowered.api.entity.Entity; import org.spongepowered.api.entity.EntityType; @@ -35,6 +36,7 @@ import org.spongepowered.api.world.gamerule.GameRules; import org.spongepowered.api.world.server.ServerWorld; import java.util.ArrayList; +import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.stream.Collectors; @@ -95,6 +97,17 @@ public class Sponge8WorldInfoProvider implements WorldInfoProvider { return data; } + @Override + public Collection<DataPackInfo> pollDataPacks() { + return this.server.packRepository().enabled().stream() + .map(pack -> new DataPackInfo( + pack.id(), + PlainTextComponentSerializer.plainText().serialize(pack.description()), + "unknown" + )) + .collect(Collectors.toList()); + } + static final class Sponge7ChunkInfo extends AbstractChunkInfo<EntityType<?>> { private final CountMap<EntityType<?>> entityCounts; diff --git a/spark-velocity/src/main/java/me/lucko/spark/velocity/VelocitySparkPlugin.java b/spark-velocity/src/main/java/me/lucko/spark/velocity/VelocitySparkPlugin.java index 02fbe0b..f31963d 100644 --- a/spark-velocity/src/main/java/me/lucko/spark/velocity/VelocitySparkPlugin.java +++ b/spark-velocity/src/main/java/me/lucko/spark/velocity/VelocitySparkPlugin.java @@ -144,7 +144,8 @@ public class VelocitySparkPlugin implements SparkPlugin, SimpleCommand { this.proxy.getPluginManager().getPlugins(), plugin -> plugin.getDescription().getId(), plugin -> plugin.getDescription().getVersion().orElse("unspecified"), - plugin -> String.join(", ", plugin.getDescription().getAuthors()) + plugin -> String.join(", ", plugin.getDescription().getAuthors()), + plugin -> plugin.getDescription().getDescription().orElse(null) ); } diff --git a/spark-velocity4/src/main/java/me/lucko/spark/velocity/Velocity4SparkPlugin.java b/spark-velocity4/src/main/java/me/lucko/spark/velocity/Velocity4SparkPlugin.java index abbade3..015deb4 100644 --- a/spark-velocity4/src/main/java/me/lucko/spark/velocity/Velocity4SparkPlugin.java +++ b/spark-velocity4/src/main/java/me/lucko/spark/velocity/Velocity4SparkPlugin.java @@ -144,7 +144,8 @@ public class Velocity4SparkPlugin implements SparkPlugin, SimpleCommand { this.proxy.pluginManager().plugins(), plugin -> plugin.description().id(), plugin -> plugin.description().version(), - plugin -> String.join(", ", plugin.description().authors()) + plugin -> String.join(", ", plugin.description().authors()), + plugin -> plugin.description().description() ); } diff --git a/spark-waterdog/src/main/java/me/lucko/spark/waterdog/WaterdogSparkPlugin.java b/spark-waterdog/src/main/java/me/lucko/spark/waterdog/WaterdogSparkPlugin.java index d7ef088..f616176 100644 --- a/spark-waterdog/src/main/java/me/lucko/spark/waterdog/WaterdogSparkPlugin.java +++ b/spark-waterdog/src/main/java/me/lucko/spark/waterdog/WaterdogSparkPlugin.java @@ -107,7 +107,8 @@ public class WaterdogSparkPlugin extends Plugin implements SparkPlugin { getProxy().getPluginManager().getPlugins(), Plugin::getName, plugin -> plugin.getDescription().getVersion(), - plugin -> plugin.getDescription().getAuthor() + plugin -> plugin.getDescription().getAuthor(), + plugin -> null ); } |