Skip to content

Commit

Permalink
Merge pull request #49 from TheNextLvl-net/messages
Browse files Browse the repository at this point in the history
Added welcome message and chat placeholders to (dis)connect messages
  • Loading branch information
NonSwag authored Nov 17, 2024
2 parents 737fe79 + c1e7472 commit 429724c
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 40 deletions.
28 changes: 28 additions & 0 deletions src/main/java/net/thenextlvl/tweaks/TweaksPlugin.java
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@
import java.net.URI;
import java.util.Locale;
import java.util.Objects;
import java.util.Optional;

import static org.bukkit.ServerLinks.Type.*;

Expand Down Expand Up @@ -338,4 +339,31 @@ public ComponentBundle bundle() {
public PluginConfig config() {
return Objects.requireNonNull(config, "Config not initialized yet!").getRoot();
}

public TagResolver.Builder serviceResolvers(Player player) {
var resolver = TagResolver.builder().resolvers(
Placeholder.component("custom_name", Optional.ofNullable(player.customName())
.orElseGet(player::name)),
Placeholder.component("display_name", player.displayName()),
Placeholder.parsed("balance", ""),
Placeholder.parsed("balance_unformatted", ""),
Placeholder.parsed("bank_balance", ""),
Placeholder.parsed("bank_balance_unformatted", ""),
Placeholder.parsed("chat_display_name", player.getName()),
Placeholder.parsed("chat_prefix", ""),
Placeholder.parsed("chat_suffix", ""),
Placeholder.parsed("currency_name", ""),
Placeholder.parsed("currency_name_plural", ""),
Placeholder.parsed("currency_symbol", ""),
Placeholder.parsed("group", ""),
Placeholder.parsed("group_prefix", ""),
Placeholder.parsed("group_suffix", ""),
Placeholder.parsed("language_tag", player.locale().toLanguageTag()),
Placeholder.parsed("locale", player.locale().getDisplayName(player.locale())),
Placeholder.parsed("player", player.getName()),
Placeholder.parsed("world", player.getWorld().getName())
);
if (serviceController == null) return resolver;
return resolver.resolvers(serviceController.serviceResolvers(player));
}
}
33 changes: 1 addition & 32 deletions src/main/java/net/thenextlvl/tweaks/listener/ChatListener.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,45 +32,14 @@ public void onChat(AsyncChatEvent event) {
if (!plugin.config().general().overrideChat()) return;
var messageContent = event.message() instanceof TextComponent text ? text.content() : "";
event.renderer((source, displayName, message, viewer) -> plugin.bundle().component(viewer, "chat.format",
serviceResolvers(source).resolvers(
Placeholder.component("custom_name", Optional.ofNullable(source.customName())
.orElseGet(source::name)),
plugin.serviceResolvers(source).resolvers(
Placeholder.component("display_name", displayName),
Placeholder.component("message", message),
Placeholder.parsed("message_content", messageContent),
Placeholder.parsed("player", source.getName()),
Placeholder.parsed("world", source.getWorld().getName()),
Placeholder.parsed("language_tag", String.valueOf(source.locale().toLanguageTag())),
Placeholder.parsed("locale", String.valueOf(source.locale().getDisplayName(source.locale()))),
createDeleteTag(source, viewer, event.signedMessage())
).build()));
}

private TagResolver.Builder serviceResolvers(Player player) {
var resolver = TagResolver.builder().resolvers(
Placeholder.parsed("balance", ""),
Placeholder.parsed("balance", ""),
Placeholder.parsed("balance_unformatted", ""),
Placeholder.parsed("balance_unformatted", ""),
Placeholder.parsed("bank_balance", ""),
Placeholder.parsed("bank_balance", ""),
Placeholder.parsed("bank_balance_unformatted", ""),
Placeholder.parsed("bank_balance_unformatted", ""),
Placeholder.parsed("chat_display_name", player.getName()),
Placeholder.parsed("chat_prefix", ""),
Placeholder.parsed("chat_suffix", ""),
Placeholder.parsed("currency_name", ""),
Placeholder.parsed("currency_name_plural", ""),
Placeholder.parsed("currency_symbol", ""),
Placeholder.parsed("group", ""),
Placeholder.parsed("group_prefix", ""),
Placeholder.parsed("group_suffix", "")
);
return services().map(services -> services.serviceResolvers(player))
.map(resolver::resolvers)
.orElse(resolver);
}

private TagResolver.Single createDeleteTag(Player sender, Audience audience, SignedMessage message) {
if (!(audience instanceof Player viewer)) return Placeholder.parsed("delete", "");
if (!canDelete(viewer, sender)) return Placeholder.parsed("delete", "");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,16 +20,26 @@ public void onJoin(PlayerJoinEvent event) {
var permissionLevel = plugin.config().general().defaultPermissionLevel();
if (permissionLevel != -1) event.getPlayer().sendOpLevel(permissionLevel);
if (!plugin.config().general().overrideJoinMessage()) return;
plugin.getServer().getOnlinePlayers().forEach(player -> plugin.bundle().sendMessage(player, "player.connected",
Placeholder.parsed("player", event.getPlayer().getName())));
var id = event.getPlayer().hasPlayedBefore()
? plugin.getServer().getOnlinePlayers().size()
: plugin.getServer().getOfflinePlayers().length;
var message = event.getPlayer().hasPlayedBefore() ? "player.connected" : "player.welcome";
var resolvers = plugin.serviceResolvers(event.getPlayer())
.resolver(Placeholder.parsed("id", String.valueOf(id)))
.build();
plugin.getServer().forEachAudience(audience -> plugin.bundle().sendMessage(
audience, message, resolvers
));
event.joinMessage(null);
}

@EventHandler(priority = EventPriority.HIGH)
public void onPlayerQuit(PlayerQuitEvent event) {
if (!plugin.config().general().overrideQuitMessage()) return;
plugin.getServer().getOnlinePlayers().forEach(player -> plugin.bundle().sendMessage(player, "player.disconnected",
Placeholder.parsed("player", event.getPlayer().getName())));
var resolvers = plugin.serviceResolvers(event.getPlayer()).build();
plugin.getServer().forEachAudience(audience -> plugin.bundle().sendMessage(
audience, "player.disconnected", resolvers
));
event.quitMessage(null);
}

Expand Down
5 changes: 3 additions & 2 deletions src/main/resources/tweaks.properties
Original file line number Diff line number Diff line change
Expand Up @@ -139,9 +139,10 @@ gui.placeholder.leggings=<dark_gray>»</dark_gray> <green>Leggings</green>
gui.placeholder.off-hand=<dark_gray>»</dark_gray> <aqua>Off Hand</aqua>
gui.title.homes=Your Homes
gui.title.warps=Warps
player.connected=<gray><prefix> <click:suggest_command:'/tell <player> '><green><player></green></click> joined the game</gray>
player.disconnected=<gray><prefix> <click:suggest_command:'/tell <player> '><green><player></green></click> left the game</gray>
player.connected=<gray><prefix> <click:suggest_command:'/tell <player> '><green><chat_display_name></green></click> joined the game</gray>
player.disconnected=<gray><prefix> <click:suggest_command:'/tell <player> '><green><chat_display_name></green></click> left the game</gray>
player.not.found=<red><prefix> The player <dark_red><player></dark_red> has never played before</red>
player.welcome=<gray><prefix> Welcome <click:suggest_command:'/tell <player> '><green><chat_display_name></green></click> to the server! <dark_gray>(<yellow>#<id></yellow>)</dark_gray></gray>
prefix=<blue>Tweaks</blue> <dark_gray>»</dark_gray>
social.discord=<gray><prefix> Chat with us on <u><hover:show_text:'Click to open'><click:open_url:'<discord>'><#535fee>Discord</click></hover></u></gray>
social.reddit=<gray><prefix> Check out our <u><hover:show_text:'Click to open'><click:open_url:'<reddit>'><#ff4500>Subreddit></click></hover></u></gray>
Expand Down
5 changes: 3 additions & 2 deletions src/main/resources/tweaks_german.properties
Original file line number Diff line number Diff line change
Expand Up @@ -134,9 +134,10 @@ gui.placeholder.leggings=<dark_gray>»</dark_gray> <green>Hose</green>
gui.placeholder.off-hand=<dark_gray>»</dark_gray> <aqua>Zweithand</aqua>
gui.title.homes=Deine Zuhausepunkte
gui.title.warps=Schnellreisepunkte
player.connected=<gray><prefix> <click:suggest_command:'/tell <player> '><green><player></green> ist dem Spiel beigetreten</gray>
player.disconnected=<gray><prefix> <click:suggest_command:'/tell <player> '><green><player></green> hat das Spiel verlassen</gray>
player.connected=<gray><prefix> <click:suggest_command:'/tell <player> '><green><chat_display_name></green> ist dem Spiel beigetreten</gray>
player.disconnected=<gray><prefix> <click:suggest_command:'/tell <player> '><green><chat_display_name></green> hat das Spiel verlassen</gray>
player.not.found=<red><prefix> Der Spieler <dark_red><player></dark_red> war noch nie online</red>
player.welcome=<gray><prefix> Willkommen <click:suggest_command:'/tell <player> '><green><chat_display_name></green></click> auf dem Server! <dark_gray>(<yellow>#<id></yellow>)</dark_gray></gray>
social.discord=<gray><prefix> Schreibe mit uns auf <u><hover:show_text:'Klicke zum öffnen'><click:open_url:'<discord>'><#535fee>Discord</click></hover></u></gray>
social.reddit=<gray><prefix> Besuche unseren <u><hover:show_text:'Klicke zum öffnen'><click:open_url:'<reddit>'><#ff4500>Subreddit</click></hover></u></gray>
social.teamspeak=<gray><prefix> Rede mit uns auf <u><hover:show_text:'Klicke zum kopieren: <teamspeak>'><click:copy_to_clipboard:'<teamspeak>'><#1c2837>TeamSpeak</click></hover></u></gray>
Expand Down

0 comments on commit 429724c

Please sign in to comment.