Merge branch 'dev'

# Conflicts:
#	src/main/java/buttondevteam/chat/listener/PlayerListener.java
This commit is contained in:
Norbi Peti 2018-05-16 23:03:42 +02:00
commit 71242cc0ac
No known key found for this signature in database
GPG key ID: DBA4C4549A927E56
2 changed files with 10 additions and 15 deletions

View file

@ -41,7 +41,7 @@ public class TownColorCommand extends UCommandBase {
return true; return true;
} }
if (args.length > ColorCount) { if (args.length > ColorCount) {
player.sendMessage("You can only use " + ColorCount + " color" + (ColorCount > 1 ? "(s)" : "") + "."); player.sendMessage("You can only use " + ColorCount + " color" + (ColorCount > 1 ? "s" : "") + ".");
return true; return true;
} }
String[] a = new String[args.length + 1]; String[] a = new String[args.length + 1];

View file

@ -12,12 +12,11 @@ import buttondevteam.lib.chat.TBMCChatAPI;
import buttondevteam.lib.player.ChromaGamerBase.InfoTarget; import buttondevteam.lib.player.ChromaGamerBase.InfoTarget;
import buttondevteam.lib.player.TBMCPlayer; import buttondevteam.lib.player.TBMCPlayer;
import buttondevteam.lib.player.TBMCPlayerGetInfoEvent; import buttondevteam.lib.player.TBMCPlayerGetInfoEvent;
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
import com.vexsoftware.votifier.model.Vote; import com.vexsoftware.votifier.model.Vote;
import com.vexsoftware.votifier.model.VotifierEvent; import com.vexsoftware.votifier.model.VotifierEvent;
import net.ess3.api.events.NickChangeEvent; import net.ess3.api.events.NickChangeEvent;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender; import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -32,16 +31,11 @@ import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType; import org.bukkit.potion.PotionEffectType;
import java.util.*; import java.util.*;
import java.util.Map.Entry; import java.util.function.BiPredicate;
import java.util.function.Consumer; import java.util.function.Consumer;
import java.util.function.Supplier; import java.util.function.Supplier;
public class PlayerListener implements Listener { public class PlayerListener implements Listener {
/**
* Does not contain format codes
*/
public static BiMap<String, UUID> nicknames = HashBiMap.create();
public static boolean Enable = false; public static boolean Enable = false;
public static int LoginWarningCountTotal = 5; public static int LoginWarningCountTotal = 5;
@ -79,13 +73,14 @@ public class PlayerListener implements Listener {
else else
mp = null; mp = null;
String cmd; String cmd;
final BiPredicate<Channel, String> checkchid = (chan, cmd1) -> cmd1.equalsIgnoreCase(chan.ID) || (chan.IDs != null && Arrays.stream(chan.IDs).anyMatch(cmd1::equalsIgnoreCase));
if (index == -1) { // Only the command is run if (index == -1) { // Only the command is run
if (!(sender instanceof Player || sender instanceof ConsoleCommandSender)) if (!(sender instanceof Player || sender instanceof ConsoleCommandSender))
return false; return false;
// ^^ We can only store player or console channels - Directly sending to channels would still work if they had an event // ^^ We can only store player or console channels - Directly sending to channels would still work if they had an event
cmd = sender instanceof ConsoleCommandSender ? message : message.substring(1); cmd = sender instanceof ConsoleCommandSender ? message : message.substring(1);
for (Channel channel : Channel.getChannels()) { for (Channel channel : Channel.getChannels()) {
if (cmd.equalsIgnoreCase(channel.ID)) { if (checkchid.test(channel, cmd)) {
Supplier<Channel> getch = () -> sender instanceof Player ? mp.CurrentChannel : ConsoleChannel; Supplier<Channel> getch = () -> sender instanceof Player ? mp.CurrentChannel : ConsoleChannel;
Consumer<Channel> setch = ch -> { Consumer<Channel> setch = ch -> {
if (sender instanceof Player) if (sender instanceof Player)
@ -134,7 +129,7 @@ public class PlayerListener implements Listener {
} }
} else } else
for (Channel channel : Channel.getChannels()) { for (Channel channel : Channel.getChannels()) {
if (cmd.equalsIgnoreCase(channel.ID)) { if (checkchid.test(channel, cmd)) { //Apparently method references don't require final variables
TBMCChatAPI.SendChatMessage(channel, sender, message.substring(index + 1)); TBMCChatAPI.SendChatMessage(channel, sender, message.substring(index + 1));
return true; return true;
} }
@ -167,9 +162,10 @@ public class PlayerListener implements Listener {
@EventHandler @EventHandler
public void onTabComplete(PlayerChatTabCompleteEvent e) { public void onTabComplete(PlayerChatTabCompleteEvent e) {
String name = e.getLastToken(); String name = e.getLastToken();
for (Entry<String, UUID> nicknamekv : nicknames.entrySet()) { for (Player p : Bukkit.getOnlinePlayers()) {
if (nicknamekv.getKey().startsWith(name)) String displayName = ChatColor.stripColor(p.getDisplayName());
e.getTabCompletions().add(nicknamekv.getKey()); if (displayName.startsWith(name))
e.getTabCompletions().add(displayName);
} }
} }
@ -290,7 +286,6 @@ public class PlayerListener implements Listener {
@EventHandler @EventHandler
public void onNickChange(NickChangeEvent e) { public void onNickChange(NickChangeEvent e) {
nicknames.inverse().put(e.getAffected().getBase().getUniqueId(), e.getValue());
//PlayerJoinLeaveListener.updatePlayerColors(e.getAffected().getBase()); //Won't fire this event again //PlayerJoinLeaveListener.updatePlayerColors(e.getAffected().getBase()); //Won't fire this event again
Bukkit.getScheduler().runTaskLater(PluginMain.Instance, () -> { Bukkit.getScheduler().runTaskLater(PluginMain.Instance, () -> {