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 extends ComponentLike> 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"