client: refactor for nameable api changes
This commit is contained in:
@@ -38,6 +38,7 @@ import javax.annotation.Nullable;
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
import net.runelite.api.ClanMember;
|
||||
import net.runelite.api.ClanMemberManager;
|
||||
import net.runelite.api.ClanMemberRank;
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.api.GameState;
|
||||
@@ -79,16 +80,16 @@ public class ClanManager
|
||||
@Override
|
||||
public ClanMemberRank load(@Nonnull String key)
|
||||
{
|
||||
final ClanMember[] clanMembersArr = client.getClanMembers();
|
||||
|
||||
if (clanMembersArr == null || clanMembersArr.length == 0)
|
||||
final ClanMemberManager clanMemberManager = client.getClanMemberManager();
|
||||
if (clanMemberManager == null)
|
||||
{
|
||||
return ClanMemberRank.UNRANKED;
|
||||
}
|
||||
|
||||
return Arrays.stream(clanMembersArr)
|
||||
final ClanMember[] clanMembers = clanMemberManager.getMembers();
|
||||
return Arrays.stream(clanMembers)
|
||||
.filter(Objects::nonNull)
|
||||
.filter(clanMember -> sanitize(clanMember.getUsername()).equals(sanitize(key)))
|
||||
.filter(clanMember -> sanitize(clanMember.getName()).equals(sanitize(key)))
|
||||
.map(ClanMember::getRank)
|
||||
.findAny()
|
||||
.orElse(ClanMemberRank.UNRANKED);
|
||||
@@ -104,6 +105,12 @@ public class ClanManager
|
||||
this.spriteManager = spriteManager;
|
||||
}
|
||||
|
||||
public boolean isClanMember(String name)
|
||||
{
|
||||
ClanMemberManager clanMemberManager = client.getClanMemberManager();
|
||||
return clanMemberManager != null && clanMemberManager.findByName(name) != null;
|
||||
}
|
||||
|
||||
public ClanMemberRank getRank(String playerName)
|
||||
{
|
||||
return clanRanksCache.getUnchecked(playerName);
|
||||
|
||||
@@ -44,6 +44,7 @@ import net.runelite.api.events.OverheadTextChanged;
|
||||
import net.runelite.api.events.ScriptCallbackEvent;
|
||||
import net.runelite.client.config.ConfigManager;
|
||||
import net.runelite.client.eventbus.Subscribe;
|
||||
import net.runelite.client.game.ClanManager;
|
||||
import net.runelite.client.plugins.Plugin;
|
||||
import net.runelite.client.plugins.PluginDescriptor;
|
||||
import net.runelite.client.util.Text;
|
||||
@@ -72,6 +73,9 @@ public class ChatFilterPlugin extends Plugin
|
||||
@Inject
|
||||
private ChatFilterConfig config;
|
||||
|
||||
@Inject
|
||||
private ClanManager clanManager;
|
||||
|
||||
@Provides
|
||||
ChatFilterConfig provideConfig(ConfigManager configManager)
|
||||
{
|
||||
@@ -176,7 +180,7 @@ public class ChatFilterPlugin extends Plugin
|
||||
boolean isMessageFromSelf = playerName.equals(client.getLocalPlayer().getName());
|
||||
return !isMessageFromSelf &&
|
||||
(config.filterFriends() || !client.isFriended(playerName, false)) &&
|
||||
(config.filterClan() || !client.isClanMember(playerName));
|
||||
(config.filterClan() || !clanManager.isClanMember(playerName));
|
||||
}
|
||||
|
||||
String censorMessage(final String message)
|
||||
|
||||
@@ -42,6 +42,7 @@ import javax.inject.Inject;
|
||||
import net.runelite.api.ChatLineBuffer;
|
||||
import net.runelite.api.ChatMessageType;
|
||||
import net.runelite.api.ClanMember;
|
||||
import net.runelite.api.ClanMemberManager;
|
||||
import net.runelite.api.ClanMemberRank;
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.api.GameState;
|
||||
@@ -55,7 +56,6 @@ import net.runelite.api.events.ChatMessage;
|
||||
import net.runelite.api.events.ClanChanged;
|
||||
import net.runelite.api.events.ClanMemberJoined;
|
||||
import net.runelite.api.events.ClanMemberLeft;
|
||||
import net.runelite.client.events.ConfigChanged;
|
||||
import net.runelite.api.events.GameStateChanged;
|
||||
import net.runelite.api.events.GameTick;
|
||||
import net.runelite.api.events.PlayerDespawned;
|
||||
@@ -69,6 +69,7 @@ import net.runelite.client.callback.ClientThread;
|
||||
import net.runelite.client.chat.ChatMessageBuilder;
|
||||
import net.runelite.client.config.ConfigManager;
|
||||
import net.runelite.client.eventbus.Subscribe;
|
||||
import net.runelite.client.events.ConfigChanged;
|
||||
import net.runelite.client.game.ClanManager;
|
||||
import net.runelite.client.game.SpriteManager;
|
||||
import net.runelite.client.plugins.Plugin;
|
||||
@@ -170,7 +171,7 @@ public class ClanChatPlugin extends Plugin
|
||||
if (member.getWorld() == client.getWorld())
|
||||
{
|
||||
final Player local = client.getLocalPlayer();
|
||||
final String memberName = Text.toJagexName(member.getUsername());
|
||||
final String memberName = Text.toJagexName(member.getName());
|
||||
|
||||
for (final Player player : client.getPlayers())
|
||||
{
|
||||
@@ -196,15 +197,15 @@ public class ClanChatPlugin extends Plugin
|
||||
}
|
||||
|
||||
// attempt to filter out world hopping joins
|
||||
if (!activityBuffer.containsKey(member.getUsername()))
|
||||
if (!activityBuffer.containsKey(member.getName()))
|
||||
{
|
||||
ClanMemberActivity joinActivity = new ClanMemberActivity(ClanActivityType.JOINED,
|
||||
member, client.getTickCount());
|
||||
activityBuffer.put(member.getUsername(), joinActivity);
|
||||
activityBuffer.put(member.getName(), joinActivity);
|
||||
}
|
||||
else
|
||||
{
|
||||
activityBuffer.remove(member.getUsername());
|
||||
activityBuffer.remove(member.getName());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -215,7 +216,7 @@ public class ClanChatPlugin extends Plugin
|
||||
|
||||
if (member.getWorld() == client.getWorld())
|
||||
{
|
||||
final String memberName = Text.toJagexName(member.getUsername());
|
||||
final String memberName = Text.toJagexName(member.getName());
|
||||
final Iterator<Player> each = clanMembers.iterator();
|
||||
|
||||
while (each.hasNext())
|
||||
@@ -240,15 +241,15 @@ public class ClanChatPlugin extends Plugin
|
||||
return;
|
||||
}
|
||||
|
||||
if (!activityBuffer.containsKey(member.getUsername()))
|
||||
if (!activityBuffer.containsKey(member.getName()))
|
||||
{
|
||||
ClanMemberActivity leaveActivity = new ClanMemberActivity(ClanActivityType.LEFT,
|
||||
member, client.getTickCount());
|
||||
activityBuffer.put(member.getUsername(), leaveActivity);
|
||||
activityBuffer.put(member.getName(), leaveActivity);
|
||||
}
|
||||
else
|
||||
{
|
||||
activityBuffer.remove(member.getUsername());
|
||||
activityBuffer.remove(member.getName());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -265,9 +266,10 @@ public class ClanChatPlugin extends Plugin
|
||||
{
|
||||
Widget clanChatList = client.getWidget(WidgetInfo.CLAN_CHAT_LIST);
|
||||
Widget owner = client.getWidget(WidgetInfo.CLAN_CHAT_OWNER);
|
||||
if (client.getClanChatCount() > 0)
|
||||
ClanMemberManager clanMemberManager = client.getClanMemberManager();
|
||||
if (clanMemberManager != null && clanMemberManager.getCount() > 0)
|
||||
{
|
||||
clanChatTitleWidget.setText(CLAN_CHAT_TITLE + " (" + client.getClanChatCount() + "/100)");
|
||||
clanChatTitleWidget.setText(CLAN_CHAT_TITLE + " (" + clanMemberManager.getCount() + "/100)");
|
||||
}
|
||||
else if (config.recentChats() && clanChatList.getChildren() == null && !Strings.isNullOrEmpty(owner.getText()))
|
||||
{
|
||||
@@ -332,6 +334,12 @@ public class ClanChatPlugin extends Plugin
|
||||
|
||||
private void addClanActivityMessages()
|
||||
{
|
||||
ClanMemberManager clanMemberManager = client.getClanMemberManager();
|
||||
if (clanMemberManager == null || activityBuffer.isEmpty())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Iterator<ClanMemberActivity> activityIt = activityBuffer.values().iterator();
|
||||
|
||||
while (activityIt.hasNext())
|
||||
@@ -341,12 +349,12 @@ public class ClanChatPlugin extends Plugin
|
||||
if (activity.getTick() < client.getTickCount() - MESSAGE_DELAY)
|
||||
{
|
||||
activityIt.remove();
|
||||
addActivityMessage(activity.getMember(), activity.getActivityType());
|
||||
addActivityMessage(clanMemberManager, activity.getMember(), activity.getActivityType());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void addActivityMessage(ClanMember member, ClanActivityType activityType)
|
||||
private void addActivityMessage(ClanMemberManager clanMemberManager, ClanMember member, ClanActivityType activityType)
|
||||
{
|
||||
final String activityMessage = activityType == ClanActivityType.JOINED ? " has joined." : " has left.";
|
||||
final ClanMemberRank rank = member.getRank();
|
||||
@@ -367,7 +375,7 @@ public class ClanChatPlugin extends Plugin
|
||||
|
||||
ChatMessageBuilder message = new ChatMessageBuilder()
|
||||
.append("[")
|
||||
.append(channelColor, client.getClanChatName());
|
||||
.append(channelColor, clanMemberManager.getClanChatName());
|
||||
if (rankIcon > -1)
|
||||
{
|
||||
message
|
||||
@@ -376,7 +384,7 @@ public class ClanChatPlugin extends Plugin
|
||||
}
|
||||
message
|
||||
.append("] ")
|
||||
.append(textColor, member.getUsername() + activityMessage);
|
||||
.append(textColor, member.getName() + activityMessage);
|
||||
|
||||
final String messageString = message.build();
|
||||
client.addChatMessage(ChatMessageType.FRIENDSCHATNOTIFICATION, "", messageString, "");
|
||||
@@ -406,7 +414,8 @@ public class ClanChatPlugin extends Plugin
|
||||
return;
|
||||
}
|
||||
|
||||
if (client.getClanChatCount() <= 0)
|
||||
ClanMemberManager clanMemberManager = client.getClanMemberManager();
|
||||
if (clanMemberManager == null || clanMemberManager.getCount() == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -542,7 +551,8 @@ public class ClanChatPlugin extends Plugin
|
||||
return;
|
||||
}
|
||||
|
||||
if (client.getClanChatCount() == 0)
|
||||
ClanMemberManager clanMemberManager = client.getClanMemberManager();
|
||||
if (clanMemberManager == null || clanMemberManager.getCount() == 0)
|
||||
{
|
||||
clanChatList.setChildren(null);
|
||||
}
|
||||
|
||||
@@ -27,6 +27,9 @@ package net.runelite.client.plugins.friendlist;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.api.Friend;
|
||||
import net.runelite.api.Ignore;
|
||||
import net.runelite.api.NameableContainer;
|
||||
import net.runelite.api.VarPlayer;
|
||||
import net.runelite.api.events.GameTick;
|
||||
import net.runelite.api.widgets.Widget;
|
||||
@@ -64,7 +67,8 @@ public class FriendListPlugin extends Plugin
|
||||
final int world = client.getWorld();
|
||||
final boolean isMember = client.getVar(VarPlayer.MEMBERSHIP_DAYS) > 0;
|
||||
|
||||
final int friendCount = client.getFriendsCount();
|
||||
final NameableContainer<Friend> friendContainer = client.getFriendContainer();
|
||||
final int friendCount = friendContainer.getCount();
|
||||
if (friendCount >= 0)
|
||||
{
|
||||
final int limit = isMember ? MAX_FRIENDS_P2P : MAX_FRIENDS_F2P;
|
||||
@@ -80,7 +84,8 @@ public class FriendListPlugin extends Plugin
|
||||
setFriendsListTitle(title);
|
||||
}
|
||||
|
||||
final int ignoreCount = client.getIgnoreCount();
|
||||
final NameableContainer<Ignore> ignoreContainer = client.getIgnoreContainer();
|
||||
final int ignoreCount = ignoreContainer.getCount();
|
||||
if (ignoreCount >= 0)
|
||||
{
|
||||
final int limit = isMember ? MAX_IGNORES_P2P : MAX_IGNORES_F2P;
|
||||
|
||||
@@ -37,9 +37,11 @@ import javax.swing.text.BadLocationException;
|
||||
import javax.swing.text.Document;
|
||||
import javax.swing.text.JTextComponent;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.runelite.api.ClanMember;
|
||||
import net.runelite.api.ClanMemberManager;
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.api.Friend;
|
||||
import net.runelite.api.Nameable;
|
||||
import net.runelite.api.NameableContainer;
|
||||
import net.runelite.api.Player;
|
||||
|
||||
@Slf4j
|
||||
@@ -191,12 +193,11 @@ class NameAutocompleter implements KeyListener
|
||||
|
||||
// TODO: Search lookup history
|
||||
|
||||
Friend[] friends = client.getFriends();
|
||||
if (friends != null)
|
||||
NameableContainer<Friend> friendContainer = client.getFriendContainer();
|
||||
if (friendContainer != null)
|
||||
{
|
||||
autocompleteName = Arrays.stream(friends)
|
||||
.filter(Objects::nonNull)
|
||||
.map(Friend::getName)
|
||||
autocompleteName = Arrays.stream(friendContainer.getMembers())
|
||||
.map(Nameable::getName)
|
||||
.filter(n -> pattern.matcher(n).matches())
|
||||
.findFirst();
|
||||
}
|
||||
@@ -204,12 +205,11 @@ class NameAutocompleter implements KeyListener
|
||||
// Search clan if a friend wasn't found
|
||||
if (!autocompleteName.isPresent())
|
||||
{
|
||||
final ClanMember[] clannies = client.getClanMembers();
|
||||
if (clannies != null)
|
||||
final ClanMemberManager clanMemberManager = client.getClanMemberManager();
|
||||
if (clanMemberManager != null)
|
||||
{
|
||||
autocompleteName = Arrays.stream(clannies)
|
||||
.filter(Objects::nonNull)
|
||||
.map(ClanMember::getUsername)
|
||||
autocompleteName = Arrays.stream(clanMemberManager.getMembers())
|
||||
.map(Nameable::getName)
|
||||
.filter(n -> pattern.matcher(n).matches())
|
||||
.findFirst();
|
||||
}
|
||||
|
||||
@@ -52,14 +52,15 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import net.runelite.api.ChatMessageType;
|
||||
import net.runelite.api.ChatPlayer;
|
||||
import net.runelite.api.ClanMember;
|
||||
import net.runelite.api.ClanMemberManager;
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.api.Friend;
|
||||
import net.runelite.api.GameState;
|
||||
import net.runelite.api.MenuAction;
|
||||
import net.runelite.api.MenuEntry;
|
||||
import net.runelite.api.NameableContainer;
|
||||
import net.runelite.api.Varbits;
|
||||
import net.runelite.api.events.ChatMessage;
|
||||
import net.runelite.client.events.ConfigChanged;
|
||||
import net.runelite.api.events.GameStateChanged;
|
||||
import net.runelite.api.events.GameTick;
|
||||
import net.runelite.api.events.MenuEntryAdded;
|
||||
@@ -74,6 +75,7 @@ import net.runelite.client.chat.ChatMessageManager;
|
||||
import net.runelite.client.chat.QueuedMessage;
|
||||
import net.runelite.client.config.ConfigManager;
|
||||
import net.runelite.client.eventbus.Subscribe;
|
||||
import net.runelite.client.events.ConfigChanged;
|
||||
import net.runelite.client.input.KeyManager;
|
||||
import net.runelite.client.plugins.Plugin;
|
||||
import net.runelite.client.plugins.PluginDescriptor;
|
||||
@@ -756,30 +758,20 @@ public class WorldHopperPlugin extends Plugin
|
||||
|
||||
// Search clan members first, because if a friend is in the clan chat but their private
|
||||
// chat is 'off', then the hop-to option will not get shown in the menu (issue #5679).
|
||||
ClanMember[] clanMembers = client.getClanMembers();
|
||||
|
||||
if (clanMembers != null)
|
||||
ClanMemberManager clanMemberManager = client.getClanMemberManager();
|
||||
if (clanMemberManager != null)
|
||||
{
|
||||
for (ClanMember clanMember : clanMembers)
|
||||
ClanMember clanMember = clanMemberManager.findByName(cleanName);
|
||||
if (clanMember != null)
|
||||
{
|
||||
if (clanMember != null && clanMember.getUsername().equals(cleanName))
|
||||
{
|
||||
return clanMember;
|
||||
}
|
||||
return clanMember;
|
||||
}
|
||||
}
|
||||
|
||||
Friend[] friends = client.getFriends();
|
||||
|
||||
if (friends != null)
|
||||
NameableContainer<Friend> friendContainer = client.getFriendContainer();
|
||||
if (friendContainer != null)
|
||||
{
|
||||
for (Friend friend : friends)
|
||||
{
|
||||
if (friend != null && friend.getName().equals(cleanName))
|
||||
{
|
||||
return friend;
|
||||
}
|
||||
}
|
||||
return friendContainer.findByName(cleanName);
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
@@ -31,6 +31,7 @@ import com.google.inject.testing.fieldbinder.BoundFieldModule;
|
||||
import javax.inject.Inject;
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.api.Player;
|
||||
import net.runelite.client.game.ClanManager;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNull;
|
||||
@@ -53,6 +54,10 @@ public class ChatFilterPluginTest
|
||||
@Bind
|
||||
private ChatFilterConfig chatFilterConfig;
|
||||
|
||||
@Mock
|
||||
@Bind
|
||||
private ClanManager clanManager;
|
||||
|
||||
@Mock
|
||||
private Player localPlayer;
|
||||
|
||||
@@ -132,7 +137,7 @@ public class ChatFilterPluginTest
|
||||
@Test
|
||||
public void testMessageFromFriendIsFiltered()
|
||||
{
|
||||
when(client.isClanMember("Iron Mammal")).thenReturn(false);
|
||||
when(clanManager.isClanMember("Iron Mammal")).thenReturn(false);
|
||||
when(chatFilterConfig.filterFriends()).thenReturn(true);
|
||||
assertTrue(chatFilterPlugin.shouldFilterPlayerMessage("Iron Mammal"));
|
||||
}
|
||||
@@ -156,7 +161,7 @@ public class ChatFilterPluginTest
|
||||
@Test
|
||||
public void testMessageFromClanIsNotFiltered()
|
||||
{
|
||||
when(client.isClanMember("B0aty")).thenReturn(true);
|
||||
when(clanManager.isClanMember("B0aty")).thenReturn(true);
|
||||
when(chatFilterConfig.filterClan()).thenReturn(false);
|
||||
assertFalse(chatFilterPlugin.shouldFilterPlayerMessage("B0aty"));
|
||||
}
|
||||
@@ -172,7 +177,7 @@ public class ChatFilterPluginTest
|
||||
public void testMessageFromNonFriendNonClanIsFiltered()
|
||||
{
|
||||
when(client.isFriended("Woox", false)).thenReturn(false);
|
||||
when(client.isClanMember("Woox")).thenReturn(false);
|
||||
when(clanManager.isClanMember("Woox")).thenReturn(false);
|
||||
assertTrue(chatFilterPlugin.shouldFilterPlayerMessage("Woox"));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user