Skip to content

Commit 58054d9

Browse files
committed
minimessage improvements
1 parent db20e0d commit 58054d9

21 files changed

Lines changed: 68 additions & 58 deletions

‎src/main/java/dev/plex/Guilds.java‎

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@
1818
import dev.plex.world.GuildWorldService;
1919
import lombok.Getter;
2020
import net.kyori.adventure.text.Component;
21+
import net.kyori.adventure.text.TextReplacementConfig;
22+
import net.kyori.adventure.text.event.ClickEvent;
23+
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
2124
import org.bukkit.entity.Player;
2225

2326
import java.sql.SQLException;
@@ -33,6 +36,10 @@ public class Guilds extends PlexModule
3336
private static final String ASP_API_CLASS = "com.infernalsuite.asp.api.AdvancedSlimePaperAPI";
3437
private static final String ASP_LOADER_CLASS = "com.infernalsuite.asp.api.loaders.SlimeLoader";
3538
private static final String ASP_WORLD_SERVICE_CLASS = "dev.plex.world.AspGuildWorldService";
39+
private static final TextReplacementConfig CHAT_LINKS = TextReplacementConfig.builder()
40+
.match("https?://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]")
41+
.replacement((match, builder) -> builder.clickEvent(ClickEvent.openUrl(match.group())))
42+
.build();
3643

3744
private final GuildHolder guildHolder = new GuildHolder();
3845
private final GuildMutationService guildMutationService = new GuildMutationService(this);
@@ -142,6 +149,20 @@ private void enableGuildWorlds()
142149
}
143150
}
144151

152+
public void sendChat(Guild guild, String senderName, Component message)
153+
{
154+
Component content = message.replaceText(CHAT_LINKS);
155+
broadcastToGuild(guild, messageComponent("guildChatMessage",
156+
Placeholder.unparsed("player", senderName), Placeholder.component("content", content)));
157+
if (config.getBoolean("guilds.log-chat-message"))
158+
{
159+
Bukkit.getConsoleSender().sendMessage(messageComponent("guildChatConsoleLog",
160+
Placeholder.unparsed("guild", guild.getName()),
161+
Placeholder.unparsed("guild_id", guild.getGuildUuid().toString()),
162+
Placeholder.unparsed("player", senderName), Placeholder.component("content", content)));
163+
}
164+
}
165+
145166
public java.util.concurrent.CompletableFuture<Void> broadcastToGuild(Guild guild, Component message)
146167
{
147168
java.util.concurrent.CompletableFuture<Void> completion = new java.util.concurrent.CompletableFuture<>();

‎src/main/java/dev/plex/command/GuildCommand.java‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ private Component dispatch(CommandSender sender, Player player, String label, St
9999
GuildSubCommand subCommand = getSubCommand(label);
100100
if (subCommand == null)
101101
{
102-
return messageComponent("guildCommandNotFound", Placeholder.parsed("command", label));
102+
return messageComponent("guildCommandNotFound", Placeholder.unparsed("command", label));
103103
}
104104
if (subCommand.getRequiredSource() == RequiredCommandSource.CONSOLE && sender instanceof Player)
105105
{
@@ -122,7 +122,7 @@ private Component help(String first, String remaining)
122122
GuildSubCommand subCommand = getSubCommand(first);
123123
if (subCommand == null)
124124
{
125-
return messageComponent("guildCommandNotFound", Placeholder.parsed("command", first));
125+
return messageComponent("guildCommandNotFound", Placeholder.unparsed("command", first));
126126
}
127127
return mmString("<gradient:gold:yellow>========<newline>").append(mmString("<gold>Command Name: <yellow>" + subCommand.getName())).append(Component.newline())
128128
.append(mmString("<gold>Command Aliases: <yellow>" + StringUtils.join(subCommand.getAliases(), ", "))).append(Component.newline())
@@ -174,7 +174,7 @@ public Component getSubs()
174174
Component commands = Component.empty();
175175
for (int i = 0; i < this.subCommands.size(); i++)
176176
{
177-
commands = commands.append(messageComponent("guildsCommandDisplay", Placeholder.parsed("command", "/guild " + this.subCommands.get(i).getName()), Placeholder.parsed("description", this.subCommands.get(i).getDescription())).clickEvent(ClickEvent.suggestCommand("/guild help " + this.subCommands.get(i).getName())));
177+
commands = commands.append(messageComponent("guildsCommandDisplay", Placeholder.unparsed("command", "/guild " + this.subCommands.get(i).getName()), Placeholder.unparsed("description", this.subCommands.get(i).getDescription())).clickEvent(ClickEvent.suggestCommand("/guild help " + this.subCommands.get(i).getName())));
178178
if (i < this.subCommands.size() - 1)
179179
{
180180
commands = commands.append(Component.newline());

‎src/main/java/dev/plex/command/sub/AcceptSubCommand.java‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ private void leaveCurrentIfNeeded(Player player, UUID playerUuid, String playerN
113113
player.sendMessage(messageComponent("guildStorageFailed"));
114114
return;
115115
}
116-
module.broadcastToGuild(current, messageComponent("guildMemberLeft", Placeholder.parsed("player", playerName)))
116+
module.broadcastToGuild(current, messageComponent("guildMemberLeft", Placeholder.unparsed("player", playerName)))
117117
.thenRun(() -> joinTarget(player, playerUuid, playerName, target));
118118
});
119119
}, () -> joinTarget(player, playerUuid, playerName, target));
@@ -130,7 +130,7 @@ private void joinTarget(Player player, UUID playerUuid, String playerName, Guild
130130
player.sendMessage(messageComponent("guildStorageFailed"));
131131
return;
132132
}
133-
module.broadcastToGuild(guild, messageComponent("guildMemberJoined", Placeholder.parsed("player", playerName)));
133+
module.broadcastToGuild(guild, messageComponent("guildMemberJoined", Placeholder.unparsed("player", playerName)));
134134
});
135135
}
136136

‎src/main/java/dev/plex/command/sub/ChatSubCommand.java‎

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
1010
import org.apache.commons.lang3.BooleanUtils;
1111
import org.apache.commons.lang3.StringUtils;
12-
import org.bukkit.Bukkit;
1312
import org.bukkit.command.CommandSender;
1413
import org.bukkit.entity.Player;
1514
import org.jetbrains.annotations.NotNull;
@@ -37,14 +36,11 @@ public Component executeSubCommand(@NotNull CommandSender commandSender, @Nullab
3736
{
3837
Member member = guild.getMember(player.getUniqueId());
3938
member.setChat(!member.isChat());
40-
player.sendMessage(messageComponent("guildChatToggled", Placeholder.parsed("status", BooleanUtils.toStringOnOff(member.isChat()))));
39+
player.sendMessage(messageComponent("guildChatToggled", Placeholder.unparsed("status", BooleanUtils.toStringOnOff(member.isChat()))));
4140
return;
4241
}
43-
module.broadcastToGuild(guild, messageComponent("guildChatMessage", Placeholder.parsed("player", player.getName()), Placeholder.parsed("content", arguments(first, remaining))));
44-
if (module.getConfig().getBoolean("guilds.log-chat-message"))
45-
{
46-
Bukkit.getConsoleSender().sendMessage(messageComponent("guildChatConsoleLog", Placeholder.parsed("guild", guild.getName()), Placeholder.parsed("guild_id", guild.getGuildUuid().toString()), Placeholder.parsed("player", player.getName()), Placeholder.parsed("content", arguments(first, remaining))));
47-
}
42+
Component message = module.api().messages().playerText(arguments(first, remaining));
43+
module.sendChat(guild, player.getName(), message);
4844
}, () -> player.sendMessage(messageComponent("guildNotFound")));
4945
return null;
5046
}

‎src/main/java/dev/plex/command/sub/CreateSubCommand.java‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import java.util.concurrent.CompletableFuture;
99
import net.kyori.adventure.text.Component;
1010
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
11+
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
1112
import org.apache.commons.lang3.StringUtils;
1213
import org.bukkit.command.CommandSender;
1314
import org.bukkit.entity.Player;
@@ -39,7 +40,8 @@ public Component executeSubCommand(@NotNull CommandSender commandSender, @Nullab
3940
{
4041
return messageComponent("alreadyInGuild");
4142
}
42-
Guild guildToCreate = Guild.create(player.getUniqueId(), arguments(first, remaining), module.getZoneId());
43+
String name = PlainTextComponentSerializer.plainText().serialize(module.api().messages().playerText(arguments(first, remaining)));
44+
Guild guildToCreate = Guild.create(player.getUniqueId(), name, module.getZoneId());
4345
module.getGuildRepository().createGuild(guildToCreate)
4446
.thenCompose(guild -> module.isGuildWorldsEnabled()
4547
? module.getGuildWorldService().ensureWorld(guild).thenApply(world -> guild)
@@ -52,7 +54,7 @@ public Component executeSubCommand(@NotNull CommandSender commandSender, @Nullab
5254
return;
5355
}
5456
module.getGuildHolder().addGuild(guild);
55-
player.sendMessage(messageComponent("guildCreated", Placeholder.parsed("guild", guild.getName())));
57+
player.sendMessage(messageComponent("guildCreated", Placeholder.unparsed("guild", guild.getName())));
5658
});
5759
return null;
5860
}

‎src/main/java/dev/plex/command/sub/InfoSubCommand.java‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import java.util.List;
1010
import java.util.concurrent.CompletableFuture;
1111
import net.kyori.adventure.text.Component;
12+
import net.kyori.adventure.text.format.NamedTextColor;
1213
import org.apache.commons.lang3.StringUtils;
1314
import org.bukkit.command.CommandSender;
1415
import org.bukkit.entity.Player;
@@ -61,11 +62,11 @@ public Component executeSubCommand(@NotNull CommandSender commandSender, @Nullab
6162
return;
6263
}
6364
List<String> names = memberNames.stream().map(CompletableFuture::join).toList();
64-
player.sendMessage(mmString("<gradient:yellow:gold>====<aqua>" + guild.getName() + "<gradient:yellow:gold>===="));
65+
player.sendMessage(mmString("<gradient:yellow:gold>====").append(Component.text(guild.getName(), NamedTextColor.AQUA)).append(mmString("<gradient:yellow:gold>====")));
6566
player.sendMessage(mmString(""));
6667
player.sendMessage(mmString("<gold>Owner: <yellow>" + ownerName.join()));
6768
player.sendMessage(mmString("<gold>Members (" + names.size() + "): " + StringUtils.join(names, ", ")));
68-
player.sendMessage(mmString("<gold>Prefix: " + (guild.getPrefix() == null ? "N/A" : guild.getPrefix())));
69+
player.sendMessage(Component.text("Prefix: ", NamedTextColor.GOLD).append(guild.getPrefix() == null ? Component.text("N/A") : module.api().messages().playerText(guild.getPrefix())));
6970
player.sendMessage(mmString("<gold>Created At: " + formatter.format(guild.getCreatedAt())));
7071
});
7172
});

‎src/main/java/dev/plex/command/sub/InviteSubCommand.java‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,8 @@ public Component executeSubCommand(@NotNull CommandSender commandSender, @Nullab
7878
player.sendMessage(messageComponent("guildStorageFailed"));
7979
return;
8080
}
81-
player.sendMessage(messageComponent("guildInviteSent", Placeholder.parsed("player", targetName)));
82-
target.sendMessage(messageComponent("guildInviteReceived", Placeholder.parsed("player", inviterName), Placeholder.parsed("guild", guild.getName()),
81+
player.sendMessage(messageComponent("guildInviteSent", Placeholder.unparsed("player", targetName)));
82+
target.sendMessage(messageComponent("guildInviteReceived", Placeholder.unparsed("player", inviterName), Placeholder.unparsed("guild", guild.getName()),
8383
Placeholder.styling("accept_invite", ClickEvent.runCommand("/guild accept " + guild.getName()))));
8484
});
8585
}, () -> player.sendMessage(messageComponent("guildNotFound")));

‎src/main/java/dev/plex/command/sub/LeaveSubCommand.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public Component executeSubCommand(@NotNull CommandSender commandSender, @Nullab
5555
player.sendMessage(messageComponent("guildStorageFailed"));
5656
return;
5757
}
58-
module.broadcastToGuild(guild, messageComponent("guildMemberLeft", Placeholder.parsed("player", playerName)))
58+
module.broadcastToGuild(guild, messageComponent("guildMemberLeft", Placeholder.unparsed("player", playerName)))
5959
.thenRun(() -> player.sendMessage(messageComponent("guildLeft")));
6060
});
6161
}, () -> player.sendMessage(messageComponent("guildNotFound")));

‎src/main/java/dev/plex/command/sub/OwnerSubCommand.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ public Component executeSubCommand(@NotNull CommandSender commandSender, @Nullab
7171
player.sendMessage(messageComponent("guildStorageFailed"));
7272
return;
7373
}
74-
player.sendMessage(messageComponent("guildOwnerSet", Placeholder.parsed("player", plexPlayer.name())));
74+
player.sendMessage(messageComponent("guildOwnerSet", Placeholder.unparsed("player", plexPlayer.name())));
7575
});
7676
});
7777
}, () -> player.sendMessage(messageComponent("guildNotFound")));

‎src/main/java/dev/plex/command/sub/PrefixSubCommand.java‎

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@
22

33
import dev.plex.Guilds;
44
import dev.plex.command.source.RequiredCommandSource;
5-
import dev.plex.util.GuildUtil;
65
import java.util.Collections;
76
import java.util.List;
87
import net.kyori.adventure.text.Component;
8+
import net.kyori.adventure.text.ObjectComponent;
9+
import net.kyori.adventure.text.flattener.ComponentFlattener;
910
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
11+
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
1012
import org.apache.commons.lang3.StringUtils;
1113
import org.bukkit.command.CommandSender;
1214
import org.bukkit.entity.Player;
@@ -15,6 +17,11 @@
1517

1618
public class PrefixSubCommand extends GuildSubCommand
1719
{
20+
private static final PlainTextComponentSerializer DISPLAY_TEXT = PlainTextComponentSerializer.builder()
21+
.flattener(ComponentFlattener.basic().toBuilder()
22+
.mapper(ObjectComponent.class, component -> "\uFFFC").build())
23+
.build();
24+
1825
public PrefixSubCommand(Guilds module)
1926
{
2027
super(module, command("prefix")
@@ -55,14 +62,21 @@ public Component executeSubCommand(@NotNull CommandSender commandSender, @Nullab
5562
return;
5663
}
5764
String prefix = arguments(first, remaining);
65+
Component renderedPrefix = module.api().messages().playerText(prefix);
66+
String displayedText = DISPLAY_TEXT.serialize(renderedPrefix);
67+
if (displayedText.codePointCount(0, displayedText.length()) > 64)
68+
{
69+
player.sendMessage(messageComponent("guildPrefixTooLong"));
70+
return;
71+
}
5872
module.getGuildMutationService().updatePrefix(guild, prefix).whenComplete((unused, throwable) ->
5973
{
6074
if (throwable != null)
6175
{
6276
player.sendMessage(messageComponent("guildStorageFailed"));
6377
return;
6478
}
65-
player.sendMessage(messageComponent("guildPrefixSet", Placeholder.component("prefix", GuildUtil.miniMessageWithoutEvents(guild.getPrefix()))));
79+
player.sendMessage(messageComponent("guildPrefixSet", Placeholder.component("prefix", renderedPrefix)));
6680
});
6781
}, () -> player.sendMessage(messageComponent("guildNotFound")));
6882
return null;

0 commit comments

Comments
 (0)