API changes

This commit is contained in:
Norbi Peti 2019-01-12 01:24:31 +01:00
parent 8ccf3ee9d7
commit 25ce2a4c9f
No known key found for this signature in database
GPG key ID: DBA4C4549A927E56
7 changed files with 362 additions and 358 deletions

View file

@ -7,10 +7,10 @@ import buttondevteam.chat.formatting.TellrawEvent;
import buttondevteam.chat.formatting.TellrawPart; import buttondevteam.chat.formatting.TellrawPart;
import buttondevteam.chat.formatting.TellrawSerializer; import buttondevteam.chat.formatting.TellrawSerializer;
import buttondevteam.chat.listener.PlayerListener; import buttondevteam.chat.listener.PlayerListener;
import buttondevteam.component.channel.Channel;
import buttondevteam.lib.TBMCChatEvent; import buttondevteam.lib.TBMCChatEvent;
import buttondevteam.lib.TBMCChatEventBase; import buttondevteam.lib.TBMCChatEventBase;
import buttondevteam.lib.TBMCCoreAPI; import buttondevteam.lib.TBMCCoreAPI;
import buttondevteam.lib.chat.Channel;
import buttondevteam.lib.chat.Color; import buttondevteam.lib.chat.Color;
import buttondevteam.lib.chat.Priority; import buttondevteam.lib.chat.Priority;
import buttondevteam.lib.chat.TellrawSerializableEnum; import buttondevteam.lib.chat.TellrawSerializableEnum;
@ -114,7 +114,7 @@ public class ChatProcessing {
else //Due to the online player map, getPlayer() can be more efficient than getAs() else //Due to the online player map, getPlayer() can be more efficient than getAs()
mp = e.getUser().getAs(ChatPlayer.class); //May be null mp = e.getUser().getAs(ChatPlayer.class); //May be null
Color colormode = channel.color; Color colormode = channel.Color().get();
if (mp != null && mp.OtherColorMode != null) if (mp != null && mp.OtherColorMode != null)
colormode = mp.OtherColorMode; colormode = mp.OtherColorMode;
if (message.startsWith(">")) if (message.startsWith(">"))
@ -122,7 +122,7 @@ public class ChatProcessing {
// If greentext, ignore channel or player colors // If greentext, ignore channel or player colors
ArrayList<ChatFormatter> formatters = addFormatters(colormode); ArrayList<ChatFormatter> formatters = addFormatters(colormode);
if (colormode == channel.color && mp != null && mp.RainbowPresserColorMode) { // Only overwrite channel color if (colormode == channel.Color().get() && mp != null && mp.RainbowPresserColorMode) { // Only overwrite channel color
final AtomicInteger rpc = new AtomicInteger(0); final AtomicInteger rpc = new AtomicInteger(0);
formatters.add(ChatFormatter.builder().color(colormode).onmatch((match, cf) -> { formatters.add(ChatFormatter.builder().color(colormode).onmatch((match, cf) -> {
cf.setColor(RainbowPresserColors[rpc.getAndUpdate(i -> ++i < RainbowPresserColors.length ? i : 0)]); cf.setColor(RainbowPresserColors[rpc.getAndUpdate(i -> ++i < RainbowPresserColors.length ? i : 0)]);
@ -233,7 +233,7 @@ public class ChatProcessing {
} }
static String getChannelID(Channel channel, CommandSender sender, String origin) { static String getChannelID(Channel channel, CommandSender sender, String origin) {
return ("[" + (MCORIGIN.equals(origin) ? "" : "§8" + origin.substring(0, 1) + "§r|") + channel.DisplayName) return ("[" + (MCORIGIN.equals(origin) ? "" : "§8" + origin.substring(0, 1) + "§r|") + channel.DisplayName().get())
+ "]"; + "]";
} }

View file

@ -7,10 +7,10 @@ import buttondevteam.chat.components.TownyComponent;
import buttondevteam.chat.listener.PlayerJoinLeaveListener; import buttondevteam.chat.listener.PlayerJoinLeaveListener;
import buttondevteam.chat.listener.PlayerListener; import buttondevteam.chat.listener.PlayerListener;
import buttondevteam.chat.listener.TownyListener; import buttondevteam.chat.listener.TownyListener;
import buttondevteam.component.channel.Channel;
import buttondevteam.component.channel.Channel.RecipientTestResult;
import buttondevteam.lib.TBMCCoreAPI; import buttondevteam.lib.TBMCCoreAPI;
import buttondevteam.lib.architecture.Component; import buttondevteam.lib.architecture.Component;
import buttondevteam.lib.chat.Channel;
import buttondevteam.lib.chat.Channel.RecipientTestResult;
import buttondevteam.lib.chat.Color; import buttondevteam.lib.chat.Color;
import buttondevteam.lib.chat.TBMCChatAPI; import buttondevteam.lib.chat.TBMCChatAPI;
import buttondevteam.lib.player.TBMCPlayerBase; import buttondevteam.lib.player.TBMCPlayerBase;

View file

@ -1,55 +1,55 @@
package buttondevteam.chat.commands; package buttondevteam.chat.commands;
import buttondevteam.lib.TBMCChatEventBase; import buttondevteam.component.channel.Channel;
import buttondevteam.lib.chat.Channel; import buttondevteam.lib.TBMCChatEventBase;
import buttondevteam.lib.chat.CommandClass; import buttondevteam.lib.chat.CommandClass;
import buttondevteam.lib.chat.TBMCCommandBase; import buttondevteam.lib.chat.TBMCCommandBase;
import lombok.Data; import lombok.Data;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType; import org.bukkit.potion.PotionEffectType;
import java.util.Comparator; import java.util.Comparator;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@CommandClass(modOnly = false) @CommandClass(modOnly = false)
public final class UnlolCommand extends TBMCCommandBase { public final class UnlolCommand extends TBMCCommandBase {
public static Map<Channel, LastlolData> Lastlol = new HashMap<>(); public static Map<Channel, LastlolData> Lastlol = new HashMap<>();
@Override @Override
public String[] GetHelpText(String alias) { public String[] GetHelpText(String alias) {
return new String[] { "§6---- Unlol/unlaugh ----", return new String[] { "§6---- Unlol/unlaugh ----",
"This command is based on a joke between NorbiPeti and Ghostise", "This command is based on a joke between NorbiPeti and Ghostise",
"It will make the last person saying one of the recognized laugh strings blind for a few seconds", "It will make the last person saying one of the recognized laugh strings blind for a few seconds",
"Note that you can only unlaugh laughs that weren't unlaughed before" }; "Note that you can only unlaugh laughs that weren't unlaughed before" };
} }
@Override @Override
public boolean OnCommand(CommandSender sender, String alias, String[] args) { public boolean OnCommand(CommandSender sender, String alias, String[] args) {
LastlolData lol = Lastlol.values().stream().filter(lld -> lld.Chatevent.shouldSendTo(sender)) LastlolData lol = Lastlol.values().stream().filter(lld -> lld.Chatevent.shouldSendTo(sender))
.max(Comparator.comparingLong(lld -> lld.Loltime)).orElse(null); .max(Comparator.comparingLong(lld -> lld.Loltime)).orElse(null);
if (lol == null) if (lol == null)
return true; return true;
if (lol.Lolowner instanceof Player) if (lol.Lolowner instanceof Player)
((Player) lol.Lolowner) ((Player) lol.Lolowner)
.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 2 * 20, 5, false, false)); .addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 2 * 20, 5, false, false));
String msg = (sender instanceof Player ? ((Player) sender).getDisplayName() : sender.getName()) String msg = (sender instanceof Player ? ((Player) sender).getDisplayName() : sender.getName())
+ (lol.Lolornot ? " unlolled " : " unlaughed ") + (lol.Lolornot ? " unlolled " : " unlaughed ")
+ (lol.Lolowner instanceof Player ? ((Player) lol.Lolowner).getDisplayName() : lol.Lolowner.getName()); + (lol.Lolowner instanceof Player ? ((Player) lol.Lolowner).getDisplayName() : lol.Lolowner.getName());
Bukkit.broadcastMessage(msg); Bukkit.broadcastMessage(msg);
Lastlol.remove(lol.Chatevent.getChannel()); Lastlol.remove(lol.Chatevent.getChannel());
return true; return true;
} }
@Data @Data
public static class LastlolData { public static class LastlolData {
private boolean Lolornot; private boolean Lolornot;
private final CommandSender Lolowner; private final CommandSender Lolowner;
private final TBMCChatEventBase Chatevent; private final TBMCChatEventBase Chatevent;
private final long Loltime; private final long Loltime;
} }
} }

View file

@ -1,6 +1,6 @@
package buttondevteam.chat.commands.ucmds; package buttondevteam.chat.commands.ucmds;
import buttondevteam.lib.chat.Channel; import buttondevteam.component.channel.Channel;
import buttondevteam.lib.chat.ChatMessage; import buttondevteam.lib.chat.ChatMessage;
import buttondevteam.lib.chat.CommandClass; import buttondevteam.lib.chat.CommandClass;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -54,7 +54,7 @@ public class HistoryCommand extends UCommandBase {
for (int i = Math.max(0, arr.length - 10); i < arr.length; i++) { for (int i = Math.max(0, arr.length - 10); i < arr.length; i++) {
HistoryEntry e = arr[i]; HistoryEntry e = arr[i];
val cm = e.chatMessage; val cm = e.chatMessage;
sender.sendMessage("[" + e.channel.DisplayName + "] " + cm.getSender().getName() + ": " + cm.getMessage()); sender.sendMessage("[" + e.channel.DisplayName().get() + "] " + cm.getSender().getName() + ": " + cm.getMessage());
sent.set(true); sent.set(true);
} }
if (!sent.get()) if (!sent.get())

View file

@ -2,7 +2,7 @@ package buttondevteam.chat.components;
import buttondevteam.chat.ChatProcessing; import buttondevteam.chat.ChatProcessing;
import buttondevteam.chat.PluginMain; import buttondevteam.chat.PluginMain;
import buttondevteam.lib.chat.Channel; import buttondevteam.component.channel.Channel;
import buttondevteam.lib.chat.TBMCChatAPI; import buttondevteam.lib.chat.TBMCChatAPI;
import com.palmergames.bukkit.towny.TownyLogger; import com.palmergames.bukkit.towny.TownyLogger;
import lombok.val; import lombok.val;

View file

@ -1,293 +1,297 @@
package buttondevteam.chat.listener; package buttondevteam.chat.listener;
import buttondevteam.chat.ChatPlayer; import buttondevteam.chat.ChatPlayer;
import buttondevteam.chat.ChatProcessing; import buttondevteam.chat.ChatProcessing;
import buttondevteam.chat.PluginMain; import buttondevteam.chat.PluginMain;
import buttondevteam.chat.commands.ucmds.HistoryCommand; import buttondevteam.chat.commands.ucmds.HistoryCommand;
import buttondevteam.lib.TBMCChatEvent; import buttondevteam.component.channel.Channel;
import buttondevteam.lib.TBMCCoreAPI; import buttondevteam.component.channel.ChatChannelRegisterEvent;
import buttondevteam.lib.chat.*; import buttondevteam.component.channel.ChatRoom;
import buttondevteam.lib.player.ChromaGamerBase; import buttondevteam.lib.TBMCChatEvent;
import buttondevteam.lib.player.ChromaGamerBase.InfoTarget; import buttondevteam.lib.TBMCCoreAPI;
import buttondevteam.lib.player.TBMCPlayer; import buttondevteam.lib.chat.ChatMessage;
import buttondevteam.lib.player.TBMCPlayerGetInfoEvent; import buttondevteam.lib.chat.TBMCChatAPI;
import com.google.common.collect.BiMap; import buttondevteam.lib.player.ChromaGamerBase;
import com.google.common.collect.HashBiMap; import buttondevteam.lib.player.ChromaGamerBase.InfoTarget;
import com.vexsoftware.votifier.model.Vote; import buttondevteam.lib.player.TBMCPlayer;
import com.vexsoftware.votifier.model.VotifierEvent; import buttondevteam.lib.player.TBMCPlayerGetInfoEvent;
import lombok.val; import com.google.common.collect.BiMap;
import net.ess3.api.events.NickChangeEvent; import com.google.common.collect.HashBiMap;
import org.bukkit.Bukkit; import com.vexsoftware.votifier.model.Vote;
import org.bukkit.ChatColor; import com.vexsoftware.votifier.model.VotifierEvent;
import org.bukkit.command.CommandSender; import lombok.val;
import org.bukkit.command.ConsoleCommandSender; import net.ess3.api.events.NickChangeEvent;
import org.bukkit.entity.Player; import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler; import org.bukkit.ChatColor;
import org.bukkit.event.EventPriority; import org.bukkit.command.CommandSender;
import org.bukkit.event.Listener; import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.entity.Player;
import org.bukkit.event.player.*; import org.bukkit.event.EventHandler;
import org.bukkit.event.server.ServerCommandEvent; import org.bukkit.event.EventPriority;
import org.bukkit.help.HelpTopic; import org.bukkit.event.Listener;
import org.bukkit.potion.PotionEffect; import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.potion.PotionEffectType; import org.bukkit.event.player.*;
import org.bukkit.scheduler.BukkitTask; import org.bukkit.event.server.ServerCommandEvent;
import org.bukkit.help.HelpTopic;
import java.util.ArrayList; import org.bukkit.potion.PotionEffect;
import java.util.Arrays; import org.bukkit.potion.PotionEffectType;
import java.util.Map.Entry; import org.bukkit.scheduler.BukkitTask;
import java.util.Random;
import java.util.UUID; import java.util.ArrayList;
import java.util.function.BiPredicate; import java.util.Arrays;
import java.util.Map.Entry;
public class PlayerListener implements Listener { import java.util.Random;
/** import java.util.UUID;
* Does not contain format codes, lowercased import java.util.function.BiPredicate;
*/
public static BiMap<String, UUID> nicknames = HashBiMap.create(); public class PlayerListener implements Listener {
/**
public static boolean Enable = false; * Does not contain format codes, lowercased
*/
public static int LoginWarningCountTotal = 5; public static BiMap<String, UUID> nicknames = HashBiMap.create();
public static String NotificationSound; public static boolean Enable = false;
public static double NotificationPitch;
public static int LoginWarningCountTotal = 5;
public static boolean ShowRPTag = false;
public static String NotificationSound;
public final static String[] LaughStrings = new String[]{"xd", "lel", "lawl", "kek", "lmao", "hue", "hah", "rofl"}; public static double NotificationPitch;
@EventHandler(priority = EventPriority.HIGHEST) public static boolean ShowRPTag = false;
public void onPlayerChat(AsyncPlayerChatEvent event) {
if (event.isCancelled()) public final static String[] LaughStrings = new String[]{"xd", "lel", "lawl", "kek", "lmao", "hue", "hah", "rofl"};
return;
ChatPlayer cp = TBMCPlayer.getPlayer(event.getPlayer().getUniqueId(), ChatPlayer.class); @EventHandler(priority = EventPriority.HIGHEST)
TBMCChatAPI.SendChatMessage(ChatMessage.builder(event.getPlayer(), cp, event.getMessage()).build()); public void onPlayerChat(AsyncPlayerChatEvent event) {
event.setCancelled(true); // The custom event should only be cancelled when muted or similar if (event.isCancelled())
} return;
ChatPlayer cp = TBMCPlayer.getPlayer(event.getPlayer().getUniqueId(), ChatPlayer.class);
@EventHandler(priority = EventPriority.HIGHEST) TBMCChatAPI.SendChatMessage(ChatMessage.builder(event.getPlayer(), cp, event.getMessage()).build());
public void PlayerCommandPreprocess(PlayerCommandPreprocessEvent event) { event.setCancelled(true); // The custom event should only be cancelled when muted or similar
if (!event.isCancelled()) }
event.setCancelled(onCommandPreprocess(event.getPlayer(), event.getMessage()));
} @EventHandler(priority = EventPriority.HIGHEST)
public void PlayerCommandPreprocess(PlayerCommandPreprocessEvent event) {
private boolean onCommandPreprocess(CommandSender sender, String message) { if (!event.isCancelled())
if (message.length() < 2) event.setCancelled(onCommandPreprocess(event.getPlayer(), event.getMessage()));
return false; }
int index = message.indexOf(" ");
val mp = ChromaGamerBase.getFromSender(sender); private boolean onCommandPreprocess(CommandSender sender, String message) {
String cmd; if (message.length() < 2)
final BiPredicate<Channel, String> checkchid = (chan, cmd1) -> cmd1.equalsIgnoreCase(chan.ID) || (chan.IDs != null && Arrays.stream(chan.IDs).anyMatch(cmd1::equalsIgnoreCase)); return false;
if (index == -1) { // Only the command is run int index = message.indexOf(" ");
if (!(sender instanceof Player || sender instanceof ConsoleCommandSender)) val mp = ChromaGamerBase.getFromSender(sender);
return false; String cmd;
// ^^ We can only store player or console channels - Directly sending to channels would still work if they had an event final BiPredicate<Channel, String> checkchid = (chan, cmd1) -> cmd1.equalsIgnoreCase(chan.ID) || (Arrays.stream(chan.IDs().get()).anyMatch(cmd1::equalsIgnoreCase));
cmd = sender instanceof ConsoleCommandSender ? message : message.substring(1); if (index == -1) { // Only the command is run
for (Channel channel : Channel.getChannels()) { if (!(sender instanceof Player || sender instanceof ConsoleCommandSender))
if (checkchid.test(channel, cmd)) { return false;
Channel oldch = mp.channel().get(); // ^^ We can only store player or console channels - Directly sending to channels would still work if they had an event
if (oldch instanceof ChatRoom) cmd = sender instanceof ConsoleCommandSender ? message : message.substring(1);
((ChatRoom) oldch).leaveRoom(sender); for (Channel channel : Channel.getChannels()) {
if (oldch.equals(channel)) if (checkchid.test(channel, cmd)) {
mp.channel().set(Channel.GlobalChat); Channel oldch = mp.channel().get();
else { if (oldch instanceof ChatRoom)
mp.channel().set(channel); ((ChatRoom) oldch).leaveRoom(sender);
if (channel instanceof ChatRoom) if (oldch.equals(channel))
((ChatRoom) channel).joinRoom(sender); mp.channel().set(Channel.GlobalChat);
} else {
sender.sendMessage("§6You are now talking in: §b" + mp.channel().get().DisplayName); mp.channel().set(channel);
return true; if (channel instanceof ChatRoom)
} ((ChatRoom) channel).joinRoom(sender);
} }
} else { // We have arguments sender.sendMessage("§6You are now talking in: §b" + mp.channel().get().DisplayName().get());
cmd = sender instanceof ConsoleCommandSender ? message.substring(0, index) : message.substring(1, index); return true;
if (cmd.equalsIgnoreCase("tpahere")) { }
Player player = Bukkit.getPlayer(message.substring(index + 1)); }
if (player != null && sender instanceof Player) } else { // We have arguments
player.sendMessage("§b" + ((Player) sender).getDisplayName() + " §bis in this world: " cmd = sender instanceof ConsoleCommandSender ? message.substring(0, index) : message.substring(1, index);
+ ((Player) sender).getWorld().getName()); if (cmd.equalsIgnoreCase("tpahere")) {
} else if (cmd.equalsIgnoreCase("minecraft:me")) { Player player = Bukkit.getPlayer(message.substring(index + 1));
if (!(sender instanceof Player) || !PluginMain.essentials.getUser((Player) sender).isMuted()) { if (player != null && sender instanceof Player)
String msg = message.substring(index + 1); player.sendMessage("§b" + ((Player) sender).getDisplayName() + " §bis in this world: "
Bukkit.broadcastMessage(String.format("* %s %s", sender instanceof Player ? ((Player) sender).getDisplayName() : sender.getName(), msg)); + ((Player) sender).getWorld().getName());
return true; } else if (cmd.equalsIgnoreCase("minecraft:me")) {
} else { if (!(sender instanceof Player) || !PluginMain.essentials.getUser((Player) sender).isMuted()) {
sender.sendMessage("§cCan't use /minecraft:me while muted."); String msg = message.substring(index + 1);
return true; Bukkit.broadcastMessage(String.format("* %s %s", sender instanceof Player ? ((Player) sender).getDisplayName() : sender.getName(), msg));
} return true;
} else if (cmd.equalsIgnoreCase("me")) { //Take over for Discord broadcast } else {
if (!(sender instanceof Player) || !PluginMain.essentials.getUser((Player) sender).isMuted()) { sender.sendMessage("§cCan't use /minecraft:me while muted.");
String msg = message.substring(index + 1); return true;
Bukkit.broadcastMessage(String.format("§5* %s %s", sender instanceof Player ? ((Player) sender).getDisplayName() : sender.getName(), msg)); }
return true; } else if (cmd.equalsIgnoreCase("me")) { //Take over for Discord broadcast
} else { if (!(sender instanceof Player) || !PluginMain.essentials.getUser((Player) sender).isMuted()) {
sender.sendMessage("§cCan't use /me while muted."); String msg = message.substring(index + 1);
return true; Bukkit.broadcastMessage(String.format("§5* %s %s", sender instanceof Player ? ((Player) sender).getDisplayName() : sender.getName(), msg));
} return true;
} else } else {
for (Channel channel : Channel.getChannels()) { sender.sendMessage("§cCan't use /me while muted.");
if (checkchid.test(channel, cmd)) { //Apparently method references don't require final variables return true;
TBMCChatAPI.SendChatMessage(ChatMessage.builder(sender, mp, message.substring(index + 1)).build(), channel); }
return true; } else
} for (Channel channel : Channel.getChannels()) {
} if (checkchid.test(channel, cmd)) { //Apparently method references don't require final variables
// TODO: Target selectors TBMCChatAPI.SendChatMessage(ChatMessage.builder(sender, mp, message.substring(index + 1)).build(), channel);
} return true;
// We don't care if we have arguments }
if (cmd.toLowerCase().startsWith("un")) { }
for (HelpTopic ht : PluginMain.Instance.getServer().getHelpMap().getHelpTopics()) { // TODO: Target selectors
if (ht.getName().equalsIgnoreCase("/" + cmd)) }
return false; // We don't care if we have arguments
} if (cmd.toLowerCase().startsWith("un")) {
if (PluginMain.permission.has(sender, "tbmc.admin")) { for (HelpTopic ht : PluginMain.Instance.getServer().getHelpMap().getHelpTopics()) {
String s = cmd.substring(2); if (ht.getName().equalsIgnoreCase("/" + cmd))
Player target = Bukkit.getPlayer(message.substring(index + 1)); return false;
if (target == null) { }
sender.sendMessage("§cError: Player not found. (/un" + s + " <player>)"); if (PluginMain.permission.has(sender, "tbmc.admin")) {
return true; String s = cmd.substring(2);
} Player target = Bukkit.getPlayer(message.substring(index + 1));
target.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 10 * 20, 5, false, false)); if (target == null) {
Bukkit.broadcastMessage( sender.sendMessage("§cError: Player not found. (/un" + s + " <player>)");
(sender instanceof Player ? ((Player) sender).getDisplayName() : sender.getName()) + " un" + s return true;
+ "'d " + target.getDisplayName()); }
return true; target.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 10 * 20, 5, false, false));
} Bukkit.broadcastMessage(
} (sender instanceof Player ? ((Player) sender).getDisplayName() : sender.getName()) + " un" + s
return false; + "'d " + target.getDisplayName());
} return true;
}
@EventHandler }
public void onTabComplete(PlayerChatTabCompleteEvent e) { return false;
String name = e.getLastToken(); }
for (Entry<String, UUID> nicknamekv : nicknames.entrySet()) {
if (nicknamekv.getKey().startsWith(name.toLowerCase())) @EventHandler
e.getTabCompletions().add(PluginMain.essentials.getUser(Bukkit.getPlayer(nicknamekv.getValue())).getNick(true)); //Tabcomplete with the correct case public void onTabComplete(PlayerChatTabCompleteEvent e) {
} String name = e.getLastToken();
} for (Entry<String, UUID> nicknamekv : nicknames.entrySet()) {
if (nicknamekv.getKey().startsWith(name.toLowerCase()))
public static boolean ActiveF = false; e.getTabCompletions().add(PluginMain.essentials.getUser(Bukkit.getPlayer(nicknamekv.getValue())).getNick(true)); //Tabcomplete with the correct case
public static ChatPlayer FPlayer = null; }
public static BukkitTask Ftask = null; }
public static int AlphaDeaths;
public static ArrayList<CommandSender> Fs = new ArrayList<>(); public static boolean ActiveF = false;
public static ChatPlayer FPlayer = null;
@EventHandler public static BukkitTask Ftask = null;
public void onPlayerDeath(PlayerDeathEvent e) { public static int AlphaDeaths;
if (e.getEntity().getName().equals("Alpha_Bacca44")) public static ArrayList<CommandSender> Fs = new ArrayList<>();
AlphaDeaths++;
// MinigamePlayer mgp = Minigames.plugin.pdata.getMinigamePlayer(e.getEntity()); @EventHandler
if (/* (mgp != null && !mgp.isInMinigame()) && */ new Random().nextBoolean()) { // Don't store Fs for NPCs public void onPlayerDeath(PlayerDeathEvent e) {
Runnable tt = () -> { if (e.getEntity().getName().equals("Alpha_Bacca44"))
if (ActiveF) { AlphaDeaths++;
ActiveF = false; // MinigamePlayer mgp = Minigames.plugin.pdata.getMinigamePlayer(e.getEntity());
if (FPlayer != null && FPlayer.FCount().get() < Integer.MAX_VALUE - 1) if (/* (mgp != null && !mgp.isInMinigame()) && */ new Random().nextBoolean()) { // Don't store Fs for NPCs
FPlayer.FCount().set(FPlayer.FCount().get() + Fs.size()); Runnable tt = () -> {
Bukkit.broadcastMessage("§b" + Fs.size() + " " + (Fs.size() == 1 ? "person" : "people") if (ActiveF) {
+ " paid their respects.§r"); ActiveF = false;
Fs.clear(); if (FPlayer != null && FPlayer.FCount().get() < Integer.MAX_VALUE - 1)
} FPlayer.FCount().set(FPlayer.FCount().get() + Fs.size());
}; Bukkit.broadcastMessage("§b" + Fs.size() + " " + (Fs.size() == 1 ? "person" : "people")
if (Ftask != null) { + " paid their respects.§r");
Ftask.cancel(); Fs.clear();
tt.run(); //Finish previous one }
} };
ActiveF = true; if (Ftask != null) {
Fs.clear(); Ftask.cancel();
FPlayer = TBMCPlayer.getPlayer(e.getEntity().getUniqueId(), ChatPlayer.class); tt.run(); //Finish previous one
FPlayer.FDeaths().set(FPlayer.FDeaths().get() + 1); }
Bukkit.broadcastMessage("§bPress F to pay respects.§r"); ActiveF = true;
Bukkit.getScheduler().runTaskLaterAsynchronously(PluginMain.Instance, tt, 15 * 20); Fs.clear();
} FPlayer = TBMCPlayer.getPlayer(e.getEntity().getUniqueId(), ChatPlayer.class);
} FPlayer.FDeaths().set(FPlayer.FDeaths().get() + 1);
Bukkit.broadcastMessage("§bPress F to pay respects.§r");
@EventHandler Bukkit.getScheduler().runTaskLaterAsynchronously(PluginMain.Instance, tt, 15 * 20);
@SuppressWarnings("deprecation") }
public void onVotifierEvent(VotifierEvent event) { //TODO: Move to teh Core eh }
Vote vote = event.getVote();
PluginMain.Instance.getLogger().info("Vote: " + vote); @EventHandler
org.bukkit.OfflinePlayer op = Bukkit.getOfflinePlayer(vote.getUsername()); @SuppressWarnings("deprecation")
Player p = Bukkit.getPlayer(vote.getUsername()); public void onVotifierEvent(VotifierEvent event) { //TODO: Move to teh Core eh
if (op != null) { Vote vote = event.getVote();
PluginMain.economy.depositPlayer(op, 50.0); PluginMain.Instance.getLogger().info("Vote: " + vote);
} org.bukkit.OfflinePlayer op = Bukkit.getOfflinePlayer(vote.getUsername());
if (p != null) { Player p = Bukkit.getPlayer(vote.getUsername());
p.sendMessage("§bThanks for voting! $50 was added to your account."); if (op != null) {
} PluginMain.economy.depositPlayer(op, 50.0);
} }
if (p != null) {
@EventHandler p.sendMessage("§bThanks for voting! $50 was added to your account.");
public void onPlayerMove(PlayerMoveEvent e) { }
ChatPlayer mp = TBMCPlayer.getPlayer(e.getPlayer().getUniqueId(), ChatPlayer.class); }
if (mp.ChatOnly)
e.setCancelled(true); @EventHandler
} public void onPlayerMove(PlayerMoveEvent e) {
ChatPlayer mp = TBMCPlayer.getPlayer(e.getPlayer().getUniqueId(), ChatPlayer.class);
@EventHandler(priority = EventPriority.LOWEST) if (mp.ChatOnly)
public void onPlayerTeleport(PlayerTeleportEvent e) { e.setCancelled(true);
if (TBMCPlayer.getPlayer(e.getPlayer().getUniqueId(), ChatPlayer.class).ChatOnly) { }
e.setCancelled(true);
e.getPlayer().sendMessage("§cYou are not allowed to teleport while in chat-only mode."); @EventHandler(priority = EventPriority.LOWEST)
} public void onPlayerTeleport(PlayerTeleportEvent e) {
} if (TBMCPlayer.getPlayer(e.getPlayer().getUniqueId(), ChatPlayer.class).ChatOnly) {
e.setCancelled(true);
@EventHandler(priority = EventPriority.HIGHEST) e.getPlayer().sendMessage("§cYou are not allowed to teleport while in chat-only mode.");
public void onConsoleCommand(ServerCommandEvent event) { }
if (onCommandPreprocess(event.getSender(), event.getCommand())) }
event.setCommand("dontrunthiscmd");
} @EventHandler(priority = EventPriority.HIGHEST)
public void onConsoleCommand(ServerCommandEvent event) {
@EventHandler if (onCommandPreprocess(event.getSender(), event.getCommand()))
public void onGetInfo(TBMCPlayerGetInfoEvent e) { event.setCommand("dontrunthiscmd");
try (ChatPlayer cp = e.getPlayer().getAs(ChatPlayer.class)) { }
if (cp == null)
return; @EventHandler
e.addInfo("Minecraft name: " + cp.PlayerName().get()); public void onGetInfo(TBMCPlayerGetInfoEvent e) {
if (cp.UserName().get() != null && cp.UserName().get().length() > 0) try (ChatPlayer cp = e.getPlayer().getAs(ChatPlayer.class)) {
e.addInfo("Reddit name: " + cp.UserName().get()); if (cp == null)
final String flair = cp.GetFormattedFlair(e.getTarget() != InfoTarget.MCCommand); return;
if (flair.length() > 0) e.addInfo("Minecraft name: " + cp.PlayerName().get());
e.addInfo("/r/TheButton flair: " + flair); if (cp.UserName().get() != null && cp.UserName().get().length() > 0)
e.addInfo(String.format("Respect: %.2f", cp.getF())); e.addInfo("Reddit name: " + cp.UserName().get());
} catch (Exception ex) { final String flair = cp.GetFormattedFlair(e.getTarget() != InfoTarget.MCCommand);
TBMCCoreAPI.SendException("Error while providing chat info for player " + e.getPlayer().getFileName(), ex); if (flair.length() > 0)
} e.addInfo("/r/TheButton flair: " + flair);
} e.addInfo(String.format("Respect: %.2f", cp.getF()));
} catch (Exception ex) {
@EventHandler TBMCCoreAPI.SendException("Error while providing chat info for player " + e.getPlayer().getFileName(), ex);
public void onPlayerTBMCChat(TBMCChatEvent e) { }
try { }
if (e.isCancelled())
return; @EventHandler
HistoryCommand.addChatMessage(e.getCm(), e.getChannel()); public void onPlayerTBMCChat(TBMCChatEvent e) {
e.setCancelled(ChatProcessing.ProcessChat(e)); try {
} catch (NoClassDefFoundError | Exception ex) { // Weird things can happen if (e.isCancelled())
for (Player p : Bukkit.getOnlinePlayers()) return;
if (e.shouldSendTo(p)) HistoryCommand.addChatMessage(e.getCm(), e.getChannel());
p.sendMessage("§c!§r[" e.setCancelled(ChatProcessing.ProcessChat(e));
+ e.getChannel().DisplayName + "] <" + (e.getSender() instanceof Player } catch (NoClassDefFoundError | Exception ex) { // Weird things can happen
? ((Player) e.getSender()).getDisplayName() : e.getSender().getName()) for (Player p : Bukkit.getOnlinePlayers())
+ "> " + e.getMessage()); if (e.shouldSendTo(p))
TBMCCoreAPI.SendException("An error occured while processing a chat message!", ex); p.sendMessage("§c!§r["
} + e.getChannel().DisplayName().get() + "] <" + (e.getSender() instanceof Player
} ? ((Player) e.getSender()).getDisplayName() : e.getSender().getName())
+ "> " + e.getMessage());
@EventHandler TBMCCoreAPI.SendException("An error occured while processing a chat message!", ex);
public void onChannelRegistered(ChatChannelRegisterEvent e) { }
if (!e.getChannel().isGlobal() && PluginMain.SB.getObjective(e.getChannel().ID) == null) // Not global chat and doesn't exist yet }
PluginMain.SB.registerNewObjective(e.getChannel().ID, "dummy");
} @EventHandler
public void onChannelRegistered(ChatChannelRegisterEvent e) {
@EventHandler if (!e.getChannel().isGlobal() && PluginMain.SB.getObjective(e.getChannel().ID) == null) // Not global chat and doesn't exist yet
public void onNickChange(NickChangeEvent e) { PluginMain.SB.registerNewObjective(e.getChannel().ID, "dummy");
String nick = e.getValue(); }
if (nick == null)
nicknames.inverse().remove(e.getAffected().getBase().getUniqueId()); @EventHandler
else public void onNickChange(NickChangeEvent e) {
nicknames.inverse().forcePut(e.getAffected().getBase().getUniqueId(), ChatColor.stripColor(nick).toLowerCase()); String nick = e.getValue();
if (nick == null)
Bukkit.getScheduler().runTaskLater(PluginMain.Instance, () -> { nicknames.inverse().remove(e.getAffected().getBase().getUniqueId());
PlayerJoinLeaveListener.updatePlayerColors(e.getAffected().getBase()); //Won't fire this event again else
}, 1); nicknames.inverse().forcePut(e.getAffected().getBase().getUniqueId(), ChatColor.stripColor(nick).toLowerCase());
}
} Bukkit.getScheduler().runTaskLater(PluginMain.Instance, () -> {
PlayerJoinLeaveListener.updatePlayerColors(e.getAffected().getBase()); //Won't fire this event again
}, 1);
}
}

View file

@ -7,8 +7,8 @@ import buttondevteam.chat.formatting.TellrawEvent;
import buttondevteam.chat.formatting.TellrawEvent.ClickAction; import buttondevteam.chat.formatting.TellrawEvent.ClickAction;
import buttondevteam.chat.formatting.TellrawEvent.HoverAction; import buttondevteam.chat.formatting.TellrawEvent.HoverAction;
import buttondevteam.chat.formatting.TellrawPart; import buttondevteam.chat.formatting.TellrawPart;
import buttondevteam.component.channel.Channel;
import buttondevteam.core.TestPrepare; import buttondevteam.core.TestPrepare;
import buttondevteam.lib.chat.Channel;
import buttondevteam.lib.chat.Color; import buttondevteam.lib.chat.Color;
import net.milkbowl.vault.permission.Permission; import net.milkbowl.vault.permission.Permission;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;