diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/BlockEventListener.java b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/BlockEventListener.java index 8e4892aef..c3c8dae3e 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/BlockEventListener.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/BlockEventListener.java @@ -288,8 +288,8 @@ public class BlockEventListener implements Listener { pp.sendMessage( TranslatableCaption.of("height.height_limit"), TagResolver.builder() - .tag("minHeight", Tag.inserting(Component.text(area.getMinBuildHeight()))) - .tag("maxHeight", Tag.inserting(Component.text(area.getMaxBuildHeight()))) + .tag("minheight", Tag.inserting(Component.text(area.getMinBuildHeight()))) + .tag("maxheight", Tag.inserting(Component.text(area.getMaxBuildHeight()))) .build() ); } @@ -388,8 +388,8 @@ public class BlockEventListener implements Listener { plotPlayer.sendMessage( TranslatableCaption.of("height.height_limit"), TagResolver.builder() - .tag("minHeight", Tag.inserting(Component.text(area.getMinBuildHeight()))) - .tag("maxHeight", Tag.inserting(Component.text(area.getMaxBuildHeight()))) + .tag("minheight", Tag.inserting(Component.text(area.getMinBuildHeight()))) + .tag("maxheight", Tag.inserting(Component.text(area.getMaxBuildHeight()))) .build() ); } @@ -1284,8 +1284,8 @@ public class BlockEventListener implements Listener { pp.sendMessage( TranslatableCaption.of("height.height_limit"), TagResolver.builder() - .tag("minHeight", Tag.inserting(Component.text(area.getMinBuildHeight()))) - .tag("maxHeight", Tag.inserting(Component.text(area.getMaxBuildHeight()))) + .tag("minheight", Tag.inserting(Component.text(area.getMinBuildHeight()))) + .tag("maxheight", Tag.inserting(Component.text(area.getMaxBuildHeight()))) .build() ); event.setCancelled(true); diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/PlayerEventListener.java b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/PlayerEventListener.java index c2987dc47..086c5826d 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/PlayerEventListener.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/PlayerEventListener.java @@ -84,8 +84,10 @@ import com.sk89q.worldedit.bukkit.BukkitAdapter; import com.sk89q.worldedit.world.block.BlockType; import io.papermc.lib.PaperLib; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.minimessage.tag.Tag; import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; +import net.kyori.adventure.text.minimessage.tag.standard.StandardTags; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.FluidCollisionMode; @@ -741,18 +743,13 @@ public class PlayerEventListener extends PlotListener implements Listener { builder.tag("world", Tag.inserting(Component.text(worldName))); builder.tag("plot_id", Tag.inserting(Component.text(id.toString()))); builder.tag("sender", Tag.inserting(Component.text(sender))); - // If we do/don't want colour, we need to be careful about how to go about it, as players could attempt either or &6 etc. - // In both cases, we want to use a Component Template to ensure that the player cannot use any placeholders in their message on purpose - // or accidentally, as component templates are done at the end. We also need to deserialize from legacy color codes to a Component if - // allowing colour. if (plotPlayer.hasPermission("plots.chat.color")) { - builder.tag( - "msg", - Tag.inserting(BukkitUtil.LEGACY_COMPONENT_SERIALIZER.deserialize(ChatColor.translateAlternateColorCodes( - '&', - message - ))) - ); + builder.tag("msg", Tag.inserting(MiniMessage.miniMessage().deserialize( + message, + TagResolver.resolver(StandardTags.color(), StandardTags.gradient(), + StandardTags.rainbow(), StandardTags.decorations() + ) + ))); } else { builder.tag("msg", Tag.inserting(Component.text(message))); } diff --git a/Core/src/main/java/com/plotsquared/core/command/Biome.java b/Core/src/main/java/com/plotsquared/core/command/Biome.java index 467533fc0..26a796729 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Biome.java +++ b/Core/src/main/java/com/plotsquared/core/command/Biome.java @@ -25,9 +25,11 @@ */ package com.plotsquared.core.command; +import com.plotsquared.core.configuration.caption.StaticCaption; import com.plotsquared.core.configuration.caption.TranslatableCaption; import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.plot.Plot; +import com.plotsquared.core.util.StringMan; import com.sk89q.worldedit.command.util.SuggestionHelper; import com.sk89q.worldedit.world.biome.BiomeType; import com.sk89q.worldedit.world.biome.BiomeTypes; @@ -56,22 +58,13 @@ public class Biome extends SetCommand { } catch (final Exception ignore) { } if (biome == null) { - Component separator = MINI_MESSAGE.deserialize( - TranslatableCaption.of("blocklist.block_list_separator").getComponent(player) - ); - TextComponent.Builder biomes = Component.text(); - final Collection biomeTypes = BiomeType.REGISTRY.values(); - int counter = 0; - for (final BiomeType biomeType : biomeTypes) { - if (counter++ > 0) { - biomes.append(separator); - } - biomes.append(Component.text(biomeType.toString())); - } + String separator = TranslatableCaption.of("blocklist.block_list_separator").getComponent(player); player.sendMessage(TranslatableCaption.of("biome.need_biome")); player.sendMessage( - TranslatableCaption.of("commandconfig.subcommand_set_options_header"), - TagResolver.resolver("values", Tag.inserting(biomes)) + StaticCaption.of( + TranslatableCaption.of("commandconfig.subcommand_set_options_header_only").getComponent(player) + + StringMan.join(BiomeType.REGISTRY.values(), separator) + ) ); return false; } diff --git a/Core/src/main/java/com/plotsquared/core/command/Cluster.java b/Core/src/main/java/com/plotsquared/core/command/Cluster.java index 667ff0c53..254900c28 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Cluster.java +++ b/Core/src/main/java/com/plotsquared/core/command/Cluster.java @@ -39,7 +39,7 @@ import com.plotsquared.core.plot.Plot; import com.plotsquared.core.plot.PlotArea; import com.plotsquared.core.plot.PlotCluster; import com.plotsquared.core.plot.PlotId; -import com.plotsquared.core.util.ComponentMan; +import com.plotsquared.core.util.ComponentHelper; import com.plotsquared.core.util.Permissions; import com.plotsquared.core.util.TabCompletions; import com.plotsquared.core.util.query.PlotQuery; @@ -79,7 +79,7 @@ public class Cluster extends SubCommand { // return arguments player.sendMessage( TranslatableCaption.of("cluster.cluster_available_args"), - TagResolver.resolver("list", Tag.inserting(ComponentMan.join(AVAILABLE_ARGS, SEPARATOR))) + TagResolver.resolver("list", Tag.inserting(ComponentHelper.join(AVAILABLE_ARGS, SEPARATOR))) ); return false; } @@ -917,7 +917,7 @@ public class Cluster extends SubCommand { } player.sendMessage( TranslatableCaption.of("cluster.cluster_available_args"), - TagResolver.resolver("list", Tag.inserting(ComponentMan.join(AVAILABLE_ARGS, SEPARATOR))) + TagResolver.resolver("list", Tag.inserting(ComponentHelper.join(AVAILABLE_ARGS, SEPARATOR))) ); return false; } diff --git a/Core/src/main/java/com/plotsquared/core/command/CommandCategory.java b/Core/src/main/java/com/plotsquared/core/command/CommandCategory.java index a189c3f0e..d8181ac35 100644 --- a/Core/src/main/java/com/plotsquared/core/command/CommandCategory.java +++ b/Core/src/main/java/com/plotsquared/core/command/CommandCategory.java @@ -29,6 +29,7 @@ import com.plotsquared.core.configuration.caption.Caption; import com.plotsquared.core.configuration.caption.LocaleHolder; import com.plotsquared.core.configuration.caption.TranslatableCaption; import com.plotsquared.core.player.PlotPlayer; +import net.kyori.adventure.text.Component; import net.kyori.adventure.text.ComponentLike; import net.kyori.adventure.text.minimessage.MiniMessage; import org.checkerframework.checker.nullness.qual.NonNull; @@ -100,7 +101,7 @@ public enum CommandCategory implements Caption { } @Override - public @NonNull ComponentLike toComponent(@NonNull final LocaleHolder localeHolder) { + public @NonNull Component toComponent(@NonNull final LocaleHolder localeHolder) { return MiniMessage.miniMessage().deserialize(getComponent(localeHolder)); } diff --git a/Core/src/main/java/com/plotsquared/core/command/Debug.java b/Core/src/main/java/com/plotsquared/core/command/Debug.java index 643405a5d..adb86828a 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Debug.java +++ b/Core/src/main/java/com/plotsquared/core/command/Debug.java @@ -41,6 +41,8 @@ import com.plotsquared.core.uuid.UUIDMapping; import com.sk89q.worldedit.world.entity.EntityType; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.TextComponent; +import net.kyori.adventure.text.format.NamedTextColor; +import net.kyori.adventure.text.format.TextColor; import net.kyori.adventure.text.minimessage.tag.Tag; import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; import org.checkerframework.checker.nullness.qual.NonNull; @@ -125,10 +127,11 @@ public class Debug extends SubCommand { player.sendMessage(TranslatableCaption.of("debug.entity_categories")); EntityCategory.REGISTRY.forEach(category -> { final StringBuilder builder = - new StringBuilder("§7- §6").append(category.getId()).append("§7: §6"); + new StringBuilder("- ").append(category.getId()).append(": "); for (final EntityType entityType : category.getAll()) { builder.append(entityType.getId()).append(" "); } + builder.append(""); player.sendMessage(StaticCaption.of("" + builder)); }); EntityType.REGISTRY.values().stream().sorted(Comparator.comparing(EntityType::getId)) @@ -148,7 +151,8 @@ public class Debug extends SubCommand { .getCaptionMap(TranslatableCaption.DEFAULT_NAMESPACE) .getCaptions(); TextComponent.Builder information = Component.text(); - Component header = MINI_MESSAGE.deserialize(TranslatableCaption.of("debug.debug_header").getComponent(player) + "\n"); + Component header = TranslatableCaption.of("debug.debug_header").toComponent(player) + .append(Component.newline()); String line = TranslatableCaption.of("debug.debug_line").getComponent(player) + "\n"; String section = TranslatableCaption.of("debug.debug_section").getComponent(player) + "\n"; information.append(header); diff --git a/Core/src/main/java/com/plotsquared/core/command/FlagCommand.java b/Core/src/main/java/com/plotsquared/core/command/FlagCommand.java index d429a392f..553a215c0 100644 --- a/Core/src/main/java/com/plotsquared/core/command/FlagCommand.java +++ b/Core/src/main/java/com/plotsquared/core/command/FlagCommand.java @@ -54,6 +54,7 @@ import com.plotsquared.core.util.task.RunnableVal2; import com.plotsquared.core.util.task.RunnableVal3; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.TextComponent; +import net.kyori.adventure.text.format.Style; import net.kyori.adventure.text.minimessage.tag.Tag; import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; import org.checkerframework.checker.nullness.qual.NonNull; @@ -607,23 +608,22 @@ public final class FlagCommand extends Command { return; } - final Map> flags = new HashMap<>(); + final Map> flags = new HashMap<>(); for (PlotFlag plotFlag : GlobalFlagContainer.getInstance().getRecognizedPlotFlags()) { if (plotFlag instanceof InternalFlag) { continue; } - final String category = MINI_MESSAGE.escapeTags(plotFlag.getFlagCategory().getComponent(player)); - final Collection flagList = - flags.computeIfAbsent(category, k -> new ArrayList<>()); + final Component category = plotFlag.getFlagCategory().toComponent(player); + final Collection flagList = flags.computeIfAbsent(category, k -> new ArrayList<>()); flagList.add(plotFlag.getName()); } - for (final Map.Entry> entry : flags.entrySet()) { + for (final Map.Entry> entry : flags.entrySet()) { Collections.sort(entry.getValue()); Component category = MINI_MESSAGE.deserialize( TranslatableCaption.of("flag.flag_list_categories").getComponent(player), - TagResolver.resolver("category", Tag.inserting(Component.text(entry.getKey()))) + TagResolver.resolver("category", Tag.inserting(entry.getKey().style(Style.empty()))) ); TextComponent.Builder builder = Component.text().append(category); final Iterator flagIterator = entry.getValue().iterator(); diff --git a/Core/src/main/java/com/plotsquared/core/command/Inbox.java b/Core/src/main/java/com/plotsquared/core/command/Inbox.java index d5950f5b1..8760c67af 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Inbox.java +++ b/Core/src/main/java/com/plotsquared/core/command/Inbox.java @@ -271,7 +271,7 @@ public class Inbox extends SubCommand { if (!comments.isEmpty()) { player.sendMessage( TranslatableCaption.of("comment.comment_removed_success"), - TagResolver.resolver("value", Tag.inserting(Component.text(String.valueOf(comments)))) + TagResolver.resolver("value", Tag.inserting(Component.text("*"))) ); plot.getPlotCommentContainer().removeComments(comments); } diff --git a/Core/src/main/java/com/plotsquared/core/configuration/caption/Caption.java b/Core/src/main/java/com/plotsquared/core/configuration/caption/Caption.java index da3736a01..d6e20a2b9 100644 --- a/Core/src/main/java/com/plotsquared/core/configuration/caption/Caption.java +++ b/Core/src/main/java/com/plotsquared/core/configuration/caption/Caption.java @@ -25,6 +25,7 @@ */ package com.plotsquared.core.configuration.caption; +import net.kyori.adventure.text.Component; import net.kyori.adventure.text.ComponentLike; import org.checkerframework.checker.nullness.qual.NonNull; @@ -46,7 +47,8 @@ public interface Caption { * * @param localeHolder Locale holder * @return ComponentLike + * @since TODO */ - @NonNull ComponentLike toComponent(@NonNull LocaleHolder localeHolder); + @NonNull Component toComponent(@NonNull LocaleHolder localeHolder); } diff --git a/Core/src/main/java/com/plotsquared/core/configuration/caption/CaptionHolder.java b/Core/src/main/java/com/plotsquared/core/configuration/caption/CaptionHolder.java index 8140650eb..ae52b1622 100644 --- a/Core/src/main/java/com/plotsquared/core/configuration/caption/CaptionHolder.java +++ b/Core/src/main/java/com/plotsquared/core/configuration/caption/CaptionHolder.java @@ -27,23 +27,49 @@ package com.plotsquared.core.configuration.caption; import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; +/** + * A holder for a caption. + * Useful when constructing messages in multiple steps with {@link TagResolver}s. + */ public class CaptionHolder { private Caption caption = StaticCaption.of(""); private TagResolver[] tagResolvers = new TagResolver[0]; + /** + * Set the {@link Caption} to send. + * + * @param caption The new caption. + */ public void set(Caption caption) { this.caption = caption; } + /** + * Get the {@link Caption} to send. + * + * @return The caption to send. + */ public Caption get() { return this.caption; } + /** + * Get the {@link TagResolver}s to use when resolving tags in the {@link Caption}. + * + * @return The tag resolvers to use. + * @since TODO + */ public TagResolver[] getTagResolvers() { return this.tagResolvers; } + /** + * Set the {@link TagResolver}s to use when resolving tags in the {@link Caption}. + * + * @param tagResolvers The tag resolvers to use. + * @since TODO + */ public void setTagResolvers(TagResolver... tagResolvers) { this.tagResolvers = tagResolvers; } diff --git a/Core/src/main/java/com/plotsquared/core/configuration/caption/StaticCaption.java b/Core/src/main/java/com/plotsquared/core/configuration/caption/StaticCaption.java index 91eb08834..df93ec507 100644 --- a/Core/src/main/java/com/plotsquared/core/configuration/caption/StaticCaption.java +++ b/Core/src/main/java/com/plotsquared/core/configuration/caption/StaticCaption.java @@ -26,6 +26,7 @@ package com.plotsquared.core.configuration.caption; import com.google.common.base.Preconditions; +import net.kyori.adventure.text.Component; import net.kyori.adventure.text.ComponentLike; import net.kyori.adventure.text.minimessage.MiniMessage; import org.checkerframework.checker.nullness.qual.NonNull; @@ -54,7 +55,7 @@ public final class StaticCaption implements Caption { } @Override - public @NonNull ComponentLike toComponent(@NonNull final LocaleHolder localeHolder) { + public @NonNull Component toComponent(@NonNull final LocaleHolder localeHolder) { return MiniMessage.miniMessage().deserialize(this.value); } diff --git a/Core/src/main/java/com/plotsquared/core/configuration/caption/TranslatableCaption.java b/Core/src/main/java/com/plotsquared/core/configuration/caption/TranslatableCaption.java index 0d9c8e2e3..41256c8eb 100644 --- a/Core/src/main/java/com/plotsquared/core/configuration/caption/TranslatableCaption.java +++ b/Core/src/main/java/com/plotsquared/core/configuration/caption/TranslatableCaption.java @@ -27,8 +27,11 @@ package com.plotsquared.core.configuration.caption; import com.google.common.base.Objects; import com.plotsquared.core.PlotSquared; +import net.kyori.adventure.text.Component; import net.kyori.adventure.text.ComponentLike; import net.kyori.adventure.text.minimessage.MiniMessage; +import net.kyori.adventure.text.minimessage.tag.Tag; +import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; import org.checkerframework.checker.nullness.qual.NonNull; import java.util.Locale; @@ -99,8 +102,14 @@ public final class TranslatableCaption implements NamespacedCaption { } @Override - public @NonNull ComponentLike toComponent(@NonNull final LocaleHolder localeHolder) { - return MiniMessage.miniMessage().deserialize(getComponent(localeHolder)); + public @NonNull Component toComponent(@NonNull final LocaleHolder localeHolder) { + if (getKey().equals("core.prefix")) { + return MiniMessage.miniMessage().deserialize(getComponent(localeHolder)); + } + return MiniMessage.miniMessage().deserialize(getComponent(localeHolder), TagResolver.resolver( + "prefix", + Tag.inserting(TranslatableCaption.of("core.prefix").toComponent(localeHolder)) + )); } @Override diff --git a/Core/src/main/java/com/plotsquared/core/player/PlotPlayer.java b/Core/src/main/java/com/plotsquared/core/player/PlotPlayer.java index 2dd7bd7cb..9da715c8e 100644 --- a/Core/src/main/java/com/plotsquared/core/player/PlotPlayer.java +++ b/Core/src/main/java/com/plotsquared/core/player/PlotPlayer.java @@ -65,6 +65,7 @@ import com.sk89q.worldedit.world.gamemode.GameMode; import com.sk89q.worldedit.world.item.ItemType; import net.kyori.adventure.audience.Audience; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.ComponentLike; import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; import net.kyori.adventure.title.Title; diff --git a/Core/src/main/java/com/plotsquared/core/plot/flag/PlotFlag.java b/Core/src/main/java/com/plotsquared/core/plot/flag/PlotFlag.java index 30bf43a3c..a922fcafd 100644 --- a/Core/src/main/java/com/plotsquared/core/plot/flag/PlotFlag.java +++ b/Core/src/main/java/com/plotsquared/core/plot/flag/PlotFlag.java @@ -91,6 +91,12 @@ public abstract class PlotFlag> { return flagName.toString(); } + /** + * Gets the flag name as a Kyori {@link Component} + * + * @see #getFlagName(Class) + * @since TODO + */ public static > Component getFlagNameComponent(Class flagClass) { return Component.text(getFlagName(flagClass)); } diff --git a/Core/src/main/java/com/plotsquared/core/util/ComponentMan.java b/Core/src/main/java/com/plotsquared/core/util/ComponentHelper.java similarity index 76% rename from Core/src/main/java/com/plotsquared/core/util/ComponentMan.java rename to Core/src/main/java/com/plotsquared/core/util/ComponentHelper.java index 3f9f83e64..8168e9483 100644 --- a/Core/src/main/java/com/plotsquared/core/util/ComponentMan.java +++ b/Core/src/main/java/com/plotsquared/core/util/ComponentHelper.java @@ -31,16 +31,33 @@ import net.kyori.adventure.text.TextComponent; import java.util.Collection; -public class ComponentMan { +/** + * A utility class for modifying components. + * + * @since TODO + */ +public class ComponentHelper { + /** + * Joins multiple {@link Component}s into one final {@link ComponentLike} + * + * @param components The components to join + * @param delimiter The delimiter to use between the components + * @return The joined components + * @since TODO + */ public static ComponentLike join(Collection components, Component delimiter) { return join(components.toArray(ComponentLike[]::new), delimiter); } - public static Component join(Component[] components, Component delimiter) { - return join(components, delimiter); - } - + /** + * Joins multiple {@link ComponentLike}s into one final {@link ComponentLike} + * + * @param components The components to join + * @param delimiter The delimiter to use between the components + * @return The joined components + * @since TODO + */ public static Component join(ComponentLike[] components, Component delimiter) { TextComponent.Builder builder = Component.text(); for (int i = 0, j = components.length; i < j; i++) { diff --git a/Core/src/main/java/com/plotsquared/core/util/helpmenu/HelpPage.java b/Core/src/main/java/com/plotsquared/core/util/helpmenu/HelpPage.java index 67dd7025d..d32a69f74 100644 --- a/Core/src/main/java/com/plotsquared/core/util/helpmenu/HelpPage.java +++ b/Core/src/main/java/com/plotsquared/core/util/helpmenu/HelpPage.java @@ -29,7 +29,7 @@ import com.plotsquared.core.command.CommandCategory; import com.plotsquared.core.configuration.caption.StaticCaption; import com.plotsquared.core.configuration.caption.TranslatableCaption; import com.plotsquared.core.player.PlotPlayer; -import com.plotsquared.core.util.ComponentMan; +import com.plotsquared.core.util.ComponentHelper; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.minimessage.tag.Tag; @@ -63,7 +63,7 @@ public class HelpPage { TranslatableCaption.of("help.help_page_header").getComponent(player), pageHeaderResolver ))) - .tag("help_objects", Tag.inserting(ComponentMan.join(this.helpObjects, Component.text("\n")))) + .tag("help_objects", Tag.inserting(ComponentHelper.join(this.helpObjects, Component.text("\n")))) .tag("footer", Tag.inserting(TranslatableCaption.of("help.help_footer").toComponent(player))) .build(); player.sendMessage( diff --git a/Core/src/main/resources/lang/messages_en.json b/Core/src/main/resources/lang/messages_en.json index 44f0e385c..3ecb83028 100644 --- a/Core/src/main/resources/lang/messages_en.json +++ b/Core/src/main/resources/lang/messages_en.json @@ -59,7 +59,7 @@ "worldedit.worldedit_bypass": "To bypass your restrictions use ", "worldedit.worldedit_bypassed": "Currently bypassing WorldEdit restriction.", "gamemode.gamemode_was_bypassed": "You bypassed the gamemode () set for .", - "height.height_limit": "This plot area has building height limits: Min height: , Max height: ", + "height.height_limit": "This plot area has building height limits: Min height: , Max height: ", "notification.notify_enter": " entered your plot (;).", "notification.notify_leave": " left your plot (;).", "swap.swap_overlap": "The proposed areas are not allowed to overlap.", @@ -510,7 +510,7 @@ "flag.flag_info_name": "Name: ", "flag.flag_info_category": "Category: ", "flag.flag_info_description": "Description: ", - "flag.flag_info_example": "Example: > ", + "flag.flag_info_example": "Example: '> ", "flag.flag_info_default_value": "Default Value: ", "flags.flag_category_string": "String Flags", "flags.flag_category_integers": "Integer Flags", diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 4e230be18..173533a02 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -14,7 +14,7 @@ snakeyaml = "1.30" # Version set by Bukkit # Adventure & MiniMessage adventure-api = "4.10.1" adventure-text-minimessage = "4.10.1" -adventure-platform-bukkit = "4.0.1" +adventure-platform-bukkit = "4.1.0" # Plugins worldedit = "7.2.10"