admin
@Listener
public void onPlayerJoin(ClientConnectionEvent.Join event, @Root Player player) {
if (!player.hasPlayedBefore()) {
if (plugin.getChatSpongeConfig().firstJoinMessageEnabled) {
message = plugin.getChatSpongeConfig().firstJoinMessage;
event.setMessage(message.apply(ImmutableMap.of(
"prefix", Text.of(player.getOption("prefix").orElse(""))
, "name", Text.of(player.getName())
, "suffix", Text.of(player.getOption("suffix").orElse(""))
)));
} else {
event.setMessageCancelled(true);
}
} else if (player.hasPermission("chatsponge.joinbroadcast")) {
if (plugin.getChatSpongeConfig().joinMessageEnabled) {
message = plugin.getChatSpongeConfig().joinMessage;
event.setMessage(message.apply(ImmutableMap.of(
"prefix", Text.of(player.getOption("prefix").orElse(""))
, "name", Text.of(player.getName())
, "suffix", Text.of(player.getOption("suffix").orElse(""))
)));
} else {
event.setMessageCancelled(true);
}
} else {
event.setMessageCancelled(true);
}
}
@Listener
public void onPlayerQuit(ClientConnectionEvent.Disconnect event, @Root Player player) {
if (player.hasPermission("chatsponge.quitbroadcast")) {
if (plugin.getChatSpongeConfig().firstJoinMessageEnabled) {
message = plugin.getChatSpongeConfig().quitMessage;
event.setMessage(message.apply(ImmutableMap.of(
"prefix", Text.of(player.getSubjectData().getOptions(player.getActiveContexts()).get("prefix"))
, "name", Text.of(player.getName())
, "suffix", Text.of(player.getSubjectData().getOptions(player.getActiveContexts()).get("suffix"))
)));
} else {
event.setMessageCancelled(true);
}
} else {
event.setMessageCancelled(true);
}
}
@Listener
public void onChatMessage(MessageChannelEvent.Chat event, @Root Player player) {
if (player.hasPermission("chatsponge.allowchat")) {
Text rawMessage = event.getRawMessage();
String stringMessage = TextSerializers.PLAIN.serialize(rawMessage);
if (plugin.getChatSpongeConfig().rangedMode) {
if (stringMessage.startsWith("!")) { // Global chat
message = plugin.getChatSpongeConfig().globalMessage;
stringMessage.replaceFirst("!", "");
event.setMessage(message.apply(ImmutableMap.of(
"prefix", Text.of(player.getOption("prefix").orElse(""))
, "name", Text.of(player.getName())
, "suffix", Text.of(player.getOption("suffix").orElse(""))
, "message", Text.of(stringMessage))));
} else { // Local chat
message = plugin.getChatSpongeConfig().message;
event.setChannel(MessageChannel.fixed(player.getNearbyEntities(plugin.getChatSpongeConfig().chatRange)
.stream()
.filter(Player.class::isInstance)
.map(Player.class::cast)
.collect(Collectors.toList())));
event.setMessage(message.apply(ImmutableMap.of(
"prefix", Text.of(player.getOption("prefix").orElse(""))
, "name", Text.of(player.getName())
, "suffix", Text.of(player.getOption("suffix").orElse(""))
, "message", rawMessage)));
}
} else {
message = plugin.getChatSpongeConfig().message;
event.setMessage(message.apply(ImmutableMap.of(
"prefix", Text.of(player.getOption("prefix").orElse(""))
, "name", Text.of(player.getName())
, "suffix", Text.of(player.getOption("suffix").orElse(""))
, "message", Text.of(stringMessage))));
}
} else {
player.sendMessage(TextSerializers.FORMATTING_CODE.deserialize(plugin.getChatSpongeConfig().noAllowChat));
event.setMessageCancelled(true);
}
}