git somehow ignored these files
This commit is contained in:
parent
b5b9f92cfb
commit
3a60dada35
38
galaxy/src/main/java/com/alttd/chat/commands/GlobalChat.java
Executable file
38
galaxy/src/main/java/com/alttd/chat/commands/GlobalChat.java
Executable file
|
|
@ -0,0 +1,38 @@
|
|||
package com.alttd.chat.commands;
|
||||
|
||||
import com.alttd.chat.ChatPlugin;
|
||||
import com.alttd.chat.managers.ChatUserManager;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class GlobalChat implements CommandExecutor {
|
||||
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||
if(!(sender instanceof Player)) { // must be a player
|
||||
return true;
|
||||
}
|
||||
Player player = (Player) sender;
|
||||
if(args.length == 0) return false;
|
||||
if(args[0].equalsIgnoreCase("togglegc")) {
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
Objects.requireNonNull(ChatUserManager.getChatUser(((Player) sender).getUniqueId())).toggleGc();
|
||||
}
|
||||
}.runTask(ChatPlugin.getInstance());
|
||||
return false;
|
||||
}
|
||||
|
||||
String message = StringUtils.join(args, " ", 0, args.length);
|
||||
ChatPlugin.getInstance().getChatHandler().globalChat(player, message);
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
27
galaxy/src/main/java/com/alttd/chat/commands/Message.java
Normal file
27
galaxy/src/main/java/com/alttd/chat/commands/Message.java
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
package com.alttd.chat.commands;
|
||||
|
||||
import com.alttd.chat.ChatPlugin;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.TabCompleter;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class Message implements CommandExecutor {
|
||||
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||
if(!(sender instanceof Player)) { // must be a player, @teri should console be able to /msg?
|
||||
return true;
|
||||
}
|
||||
Player player = (Player) sender;
|
||||
if(args.length > 2) return false; // todo error message or command info
|
||||
|
||||
String message = StringUtils.join(args, " ", 1, args.length);
|
||||
ChatPlugin.getInstance().getChatHandler().privateMessage(player, args[0], message);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Teri, is Tabcompleter needed here? we already have spigot setup to complete playernames on tab, doesn't work for crossserver stuff and offline players
|
||||
}
|
||||
28
galaxy/src/main/java/com/alttd/chat/commands/Reply.java
Normal file
28
galaxy/src/main/java/com/alttd/chat/commands/Reply.java
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
package com.alttd.chat.commands;
|
||||
|
||||
import com.alttd.chat.ChatPlugin;
|
||||
import com.alttd.chat.managers.ChatUserManager;
|
||||
import com.alttd.chat.objects.ChatUser;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class Reply implements CommandExecutor {
|
||||
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||
if(!(sender instanceof Player)) { // must be a player, @teri should console be able to /msg?
|
||||
return true;
|
||||
}
|
||||
Player player = (Player) sender;
|
||||
ChatUser user = ChatUserManager.getChatUser(player.getUniqueId());
|
||||
if (user.getReplyTarget() == null) return false;
|
||||
if(args.length == 0) return false; // todo error message or command info
|
||||
|
||||
String message = StringUtils.join(args, " ", 0, args.length);
|
||||
ChatPlugin.getInstance().getChatHandler().privateMessage(player, user.getReplyTarget(), message);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
89
galaxy/src/main/java/com/alttd/chat/listeners/ChatListener.java
Executable file
89
galaxy/src/main/java/com/alttd/chat/listeners/ChatListener.java
Executable file
|
|
@ -0,0 +1,89 @@
|
|||
package com.alttd.chat.listeners;
|
||||
|
||||
import com.alttd.chat.config.Config;
|
||||
import com.alttd.chat.handler.ChatHandler;
|
||||
import com.alttd.chat.managers.ChatUserManager;
|
||||
import com.alttd.chat.managers.RegexManager;
|
||||
import com.alttd.chat.objects.ChatUser;
|
||||
import com.alttd.chat.util.Utility;
|
||||
import io.papermc.paper.chat.ChatRenderer;
|
||||
import io.papermc.paper.event.player.AsyncChatEvent;
|
||||
import net.kyori.adventure.audience.Audience;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||
import net.kyori.adventure.text.minimessage.Template;
|
||||
import net.kyori.adventure.text.serializer.plain.PlainComponentSerializer;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public class ChatListener implements Listener, ChatRenderer {
|
||||
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
public void onPlayerChat(AsyncChatEvent event) { // this should also include a way to prevent a player from seeing chat
|
||||
// @teri what about mutes?
|
||||
Player player = event.getPlayer();
|
||||
ChatUser user = ChatUserManager.getChatUser(player.getUniqueId());
|
||||
|
||||
// tweak this to make this slightly better:/
|
||||
event.viewers().removeIf(audience -> audience instanceof Player
|
||||
&& user.getIgnoredPlayers().contains(((Player) audience).getUniqueId()));
|
||||
/* Set<Audience> viewers = event.viewers();
|
||||
Set<Audience> ignores = new HashSet<>();
|
||||
for(Audience audience : viewers) { // I don't like this setup, might alter this API to expose players...
|
||||
if(audience instanceof Player) { // the player option is removed in 1.17=/ bad paper devs
|
||||
UUID uuid = ((Player) audience).getUniqueId();
|
||||
if(user.getIgnoredPlayers().contains(uuid)) {
|
||||
ignores.add(audience);
|
||||
}
|
||||
}
|
||||
}
|
||||
event.viewers().removeAll(ignores);*/
|
||||
|
||||
Component input = event.message();
|
||||
String message = PlainComponentSerializer.plain().serialize(input);
|
||||
|
||||
message = RegexManager.replaceText(message); // todo a better way for this
|
||||
if(message == null) return; // the message was blocked
|
||||
|
||||
MiniMessage miniMessage = MiniMessage.get();
|
||||
if(!player.hasPermission("chat.format")) {
|
||||
message = miniMessage.stripTokens(message);
|
||||
} else {
|
||||
message = Utility.parseColors(message);
|
||||
}
|
||||
|
||||
if(message.contains("[i]"))
|
||||
message = message.replace("[i]", "<[i]>"); // end of todo
|
||||
|
||||
List<Template> templates = new ArrayList<>(List.of(
|
||||
Template.of("message", message),
|
||||
Template.of("[i]", ChatHandler.itemComponent(player.getInventory().getItemInMainHand()))
|
||||
));
|
||||
|
||||
Component component = miniMessage.parse("<message>", templates);
|
||||
|
||||
event.message(component);
|
||||
event.renderer(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull Component render(@NotNull Player player, @NotNull Component sourceDisplayName, @NotNull Component message, @NotNull Audience viewer) {
|
||||
ChatUser user = ChatUserManager.getChatUser(player.getUniqueId());
|
||||
|
||||
List<Template> templates = new ArrayList<>(List.of(
|
||||
Template.of("sender", user.getDisplayName()),
|
||||
Template.of("prefix", user.getPrefix()),
|
||||
Template.of("prefixall", user.getPrefixAll()),
|
||||
Template.of("staffprefix", user.getStaffPrefix()),
|
||||
Template.of("message", message)
|
||||
));
|
||||
|
||||
return MiniMessage.get().parse(Config.CHATFORMAT, templates);
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user