mirror of
https://github.com/EssentialsX/Essentials.git
synced 2025-02-01 21:11:44 +01:00
Add first join message type for Discord (#5160)
Co-authored-by: Josh Roy <10731363+JRoy@users.noreply.github.com> Add a new message type for when a player has joined for the first time.
This commit is contained in:
parent
582a357752
commit
db10678095
@ -54,6 +54,7 @@ public final class MessageType {
|
||||
*/
|
||||
public static final class DefaultTypes {
|
||||
public final static MessageType JOIN = new MessageType("join", true);
|
||||
public final static MessageType FIRST_JOIN = new MessageType("first-join", true);
|
||||
public final static MessageType LEAVE = new MessageType("leave", true);
|
||||
public final static MessageType CHAT = new MessageType("chat", true);
|
||||
public final static MessageType DEATH = new MessageType("death", true);
|
||||
@ -64,7 +65,7 @@ public final class MessageType {
|
||||
public final static MessageType SERVER_STOP = new MessageType("server-stop", false);
|
||||
public final static MessageType KICK = new MessageType("kick", false);
|
||||
public final static MessageType MUTE = new MessageType("mute", false);
|
||||
private final static MessageType[] VALUES = new MessageType[]{JOIN, LEAVE, CHAT, DEATH, AFK, ADVANCEMENT, ACTION, SERVER_START, SERVER_STOP, KICK, MUTE};
|
||||
private final static MessageType[] VALUES = new MessageType[]{JOIN, FIRST_JOIN, LEAVE, CHAT, DEATH, AFK, ADVANCEMENT, ACTION, SERVER_START, SERVER_STOP, KICK, MUTE};
|
||||
|
||||
/**
|
||||
* Gets an array of all the default {@link MessageType MessageTypes}.
|
||||
|
@ -255,6 +255,18 @@ public class DiscordSettings implements IConf {
|
||||
"username", "displayname", "joinmessage", "online", "unique");
|
||||
}
|
||||
|
||||
public MessageFormat getFirstJoinFormat(Player player) {
|
||||
final String format = getFormatString("first-join");
|
||||
final String filled;
|
||||
if (plugin.isPAPI() && format != null) {
|
||||
filled = me.clip.placeholderapi.PlaceholderAPI.setPlaceholders(player, format);
|
||||
} else {
|
||||
filled = format;
|
||||
}
|
||||
return generateMessageFormat(filled, ":arrow_right: :first_place: {displayname} has joined the server for the first time!", false,
|
||||
"username", "displayname", "joinmessage", "online", "unique");
|
||||
}
|
||||
|
||||
public MessageFormat getQuitFormat(Player player) {
|
||||
final String format = getFormatString("quit");
|
||||
final String filled;
|
||||
|
@ -99,14 +99,19 @@ public class BukkitListener implements Listener {
|
||||
public void onJoin(AsyncUserDataLoadEvent event) {
|
||||
// Delay join to let nickname load
|
||||
if (!isSilentJoinQuit(event.getUser(), "join") && !isVanishHide(event.getUser())) {
|
||||
sendJoinQuitMessage(event.getUser().getBase(), event.getJoinMessage(), true);
|
||||
// Check if this is the first time the player has joined
|
||||
if (!event.getUser().getBase().hasPlayedBefore()) {
|
||||
sendJoinQuitMessage(event.getUser().getBase(), event.getJoinMessage(), MessageType.DefaultTypes.FIRST_JOIN);
|
||||
} else {
|
||||
sendJoinQuitMessage(event.getUser().getBase(), event.getJoinMessage(), MessageType.DefaultTypes.JOIN);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||
public void onQuit(PlayerQuitEvent event) {
|
||||
if (!isSilentJoinQuit(event.getPlayer(), "quit") && !isVanishHide(event.getPlayer())) {
|
||||
sendJoinQuitMessage(event.getPlayer(), event.getQuitMessage(), false);
|
||||
sendJoinQuitMessage(event.getPlayer(), event.getQuitMessage(), MessageType.DefaultTypes.LEAVE);
|
||||
}
|
||||
}
|
||||
|
||||
@ -124,20 +129,35 @@ public class BukkitListener implements Listener {
|
||||
return;
|
||||
}
|
||||
if (event.getValue()) {
|
||||
sendJoinQuitMessage(event.getAffected().getBase(), ChatColor.YELLOW + event.getAffected().getName() + " left the game", false);
|
||||
sendJoinQuitMessage(event.getAffected().getBase(), ChatColor.YELLOW + event.getAffected().getName() + " left the game", MessageType.DefaultTypes.LEAVE);
|
||||
return;
|
||||
}
|
||||
sendJoinQuitMessage(event.getAffected().getBase(), ChatColor.YELLOW + event.getAffected().getName() + " joined the game", true);
|
||||
sendJoinQuitMessage(event.getAffected().getBase(), ChatColor.YELLOW + event.getAffected().getName() + " joined the game", MessageType.DefaultTypes.JOIN);
|
||||
}
|
||||
|
||||
public void sendJoinQuitMessage(final Player player, final String message, boolean join) {
|
||||
sendDiscordMessage(join ? MessageType.DefaultTypes.JOIN : MessageType.DefaultTypes.LEAVE,
|
||||
MessageUtil.formatMessage(join ? jda.getSettings().getJoinFormat(player) : jda.getSettings().getQuitFormat(player),
|
||||
public void sendJoinQuitMessage(final Player player, final String message, MessageType type) {
|
||||
int userCount = jda.getPlugin().getEss().getUsers().getUserCount();
|
||||
final MessageFormat format;
|
||||
switch (type.getKey()) {
|
||||
case "join":
|
||||
format = jda.getSettings().getJoinFormat(player);
|
||||
break;
|
||||
case "first-join":
|
||||
format = jda.getSettings().getFirstJoinFormat(player);
|
||||
break;
|
||||
default: // So that it will always be initialised. Other options shouldn't be possible.
|
||||
format = jda.getSettings().getQuitFormat(player);
|
||||
userCount = userCount - 1;
|
||||
break;
|
||||
|
||||
}
|
||||
sendDiscordMessage(type,
|
||||
MessageUtil.formatMessage(format,
|
||||
MessageUtil.sanitizeDiscordMarkdown(player.getName()),
|
||||
MessageUtil.sanitizeDiscordMarkdown(player.getDisplayName()),
|
||||
MessageUtil.sanitizeDiscordMarkdown(message),
|
||||
jda.getPlugin().getEss().getOnlinePlayers().size() - (join ? 0 : 1),
|
||||
jda.getPlugin().getEss().getUsers().getUserCount()),
|
||||
jda.getPlugin().getEss().getOnlinePlayers().size(),
|
||||
userCount),
|
||||
player);
|
||||
}
|
||||
|
||||
|
@ -116,6 +116,8 @@ console:
|
||||
message-types:
|
||||
# Join messages sent when a player joins the Minecraft server.
|
||||
join: primary
|
||||
# Join messages sent when a player joins the Minecraft server for the first time. This type is sent instead of the join type.
|
||||
first-join: primary
|
||||
# Leave messages sent when a player leaves the Minecraft server.
|
||||
leave: primary
|
||||
# Chat messages sent when a player chats on the Minecraft server.
|
||||
@ -307,6 +309,15 @@ messages:
|
||||
# - {unique}: The amount of unique players to ever join the server
|
||||
# ... PlaceholderAPI placeholders are also supported here too!
|
||||
join: ":arrow_right: {displayname} has joined!"
|
||||
# This is the message sent to Discord when a player joins the minecraft server for the first time.
|
||||
# The following placeholders can be used here:
|
||||
# - {username}: The name of the user joining
|
||||
# - {displayname}: The display name of the user joining
|
||||
# - {joinmessage}: The full default join message used in game
|
||||
# - {online}: The amount of players online
|
||||
# - {unique}: The amount of unique players to ever join the server
|
||||
# ... PlaceholderAPI placeholders are also supported here too!
|
||||
first-join: ":arrow_right: :first_place: {displayname} has joined the server for the first time!"
|
||||
# This is the message sent to Discord when a player leaves the minecraft server.
|
||||
# The following placeholders can be used here:
|
||||
# - {username}: The name of the user leaving
|
||||
|
Loading…
Reference in New Issue
Block a user