client: refactor for nameable api changes

This commit is contained in:
Adam
2019-11-21 20:01:17 -05:00
parent 6a209b860c
commit 0b90fcde22
7 changed files with 81 additions and 58 deletions

View File

@@ -38,6 +38,7 @@ import javax.annotation.Nullable;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Singleton; import javax.inject.Singleton;
import net.runelite.api.ClanMember; import net.runelite.api.ClanMember;
import net.runelite.api.ClanMemberManager;
import net.runelite.api.ClanMemberRank; import net.runelite.api.ClanMemberRank;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.GameState; import net.runelite.api.GameState;
@@ -79,16 +80,16 @@ public class ClanManager
@Override @Override
public ClanMemberRank load(@Nonnull String key) public ClanMemberRank load(@Nonnull String key)
{ {
final ClanMember[] clanMembersArr = client.getClanMembers(); final ClanMemberManager clanMemberManager = client.getClanMemberManager();
if (clanMemberManager == null)
if (clanMembersArr == null || clanMembersArr.length == 0)
{ {
return ClanMemberRank.UNRANKED; return ClanMemberRank.UNRANKED;
} }
return Arrays.stream(clanMembersArr) final ClanMember[] clanMembers = clanMemberManager.getMembers();
return Arrays.stream(clanMembers)
.filter(Objects::nonNull) .filter(Objects::nonNull)
.filter(clanMember -> sanitize(clanMember.getUsername()).equals(sanitize(key))) .filter(clanMember -> sanitize(clanMember.getName()).equals(sanitize(key)))
.map(ClanMember::getRank) .map(ClanMember::getRank)
.findAny() .findAny()
.orElse(ClanMemberRank.UNRANKED); .orElse(ClanMemberRank.UNRANKED);
@@ -104,6 +105,12 @@ public class ClanManager
this.spriteManager = spriteManager; this.spriteManager = spriteManager;
} }
public boolean isClanMember(String name)
{
ClanMemberManager clanMemberManager = client.getClanMemberManager();
return clanMemberManager != null && clanMemberManager.findByName(name) != null;
}
public ClanMemberRank getRank(String playerName) public ClanMemberRank getRank(String playerName)
{ {
return clanRanksCache.getUnchecked(playerName); return clanRanksCache.getUnchecked(playerName);

View File

@@ -44,6 +44,7 @@ import net.runelite.api.events.OverheadTextChanged;
import net.runelite.api.events.ScriptCallbackEvent; import net.runelite.api.events.ScriptCallbackEvent;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.Subscribe; import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.game.ClanManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.util.Text; import net.runelite.client.util.Text;
@@ -72,6 +73,9 @@ public class ChatFilterPlugin extends Plugin
@Inject @Inject
private ChatFilterConfig config; private ChatFilterConfig config;
@Inject
private ClanManager clanManager;
@Provides @Provides
ChatFilterConfig provideConfig(ConfigManager configManager) ChatFilterConfig provideConfig(ConfigManager configManager)
{ {
@@ -176,7 +180,7 @@ public class ChatFilterPlugin extends Plugin
boolean isMessageFromSelf = playerName.equals(client.getLocalPlayer().getName()); boolean isMessageFromSelf = playerName.equals(client.getLocalPlayer().getName());
return !isMessageFromSelf && return !isMessageFromSelf &&
(config.filterFriends() || !client.isFriended(playerName, false)) && (config.filterFriends() || !client.isFriended(playerName, false)) &&
(config.filterClan() || !client.isClanMember(playerName)); (config.filterClan() || !clanManager.isClanMember(playerName));
} }
String censorMessage(final String message) String censorMessage(final String message)

View File

@@ -42,6 +42,7 @@ import javax.inject.Inject;
import net.runelite.api.ChatLineBuffer; import net.runelite.api.ChatLineBuffer;
import net.runelite.api.ChatMessageType; import net.runelite.api.ChatMessageType;
import net.runelite.api.ClanMember; import net.runelite.api.ClanMember;
import net.runelite.api.ClanMemberManager;
import net.runelite.api.ClanMemberRank; import net.runelite.api.ClanMemberRank;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.GameState; 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.ClanChanged;
import net.runelite.api.events.ClanMemberJoined; import net.runelite.api.events.ClanMemberJoined;
import net.runelite.api.events.ClanMemberLeft; import net.runelite.api.events.ClanMemberLeft;
import net.runelite.client.events.ConfigChanged;
import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.GameTick; import net.runelite.api.events.GameTick;
import net.runelite.api.events.PlayerDespawned; 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.chat.ChatMessageBuilder;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.Subscribe; import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.game.ClanManager; import net.runelite.client.game.ClanManager;
import net.runelite.client.game.SpriteManager; import net.runelite.client.game.SpriteManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
@@ -170,7 +171,7 @@ public class ClanChatPlugin extends Plugin
if (member.getWorld() == client.getWorld()) if (member.getWorld() == client.getWorld())
{ {
final Player local = client.getLocalPlayer(); 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()) for (final Player player : client.getPlayers())
{ {
@@ -196,15 +197,15 @@ public class ClanChatPlugin extends Plugin
} }
// attempt to filter out world hopping joins // attempt to filter out world hopping joins
if (!activityBuffer.containsKey(member.getUsername())) if (!activityBuffer.containsKey(member.getName()))
{ {
ClanMemberActivity joinActivity = new ClanMemberActivity(ClanActivityType.JOINED, ClanMemberActivity joinActivity = new ClanMemberActivity(ClanActivityType.JOINED,
member, client.getTickCount()); member, client.getTickCount());
activityBuffer.put(member.getUsername(), joinActivity); activityBuffer.put(member.getName(), joinActivity);
} }
else else
{ {
activityBuffer.remove(member.getUsername()); activityBuffer.remove(member.getName());
} }
} }
@@ -215,7 +216,7 @@ public class ClanChatPlugin extends Plugin
if (member.getWorld() == client.getWorld()) 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(); final Iterator<Player> each = clanMembers.iterator();
while (each.hasNext()) while (each.hasNext())
@@ -240,15 +241,15 @@ public class ClanChatPlugin extends Plugin
return; return;
} }
if (!activityBuffer.containsKey(member.getUsername())) if (!activityBuffer.containsKey(member.getName()))
{ {
ClanMemberActivity leaveActivity = new ClanMemberActivity(ClanActivityType.LEFT, ClanMemberActivity leaveActivity = new ClanMemberActivity(ClanActivityType.LEFT,
member, client.getTickCount()); member, client.getTickCount());
activityBuffer.put(member.getUsername(), leaveActivity); activityBuffer.put(member.getName(), leaveActivity);
} }
else 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 clanChatList = client.getWidget(WidgetInfo.CLAN_CHAT_LIST);
Widget owner = client.getWidget(WidgetInfo.CLAN_CHAT_OWNER); 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())) else if (config.recentChats() && clanChatList.getChildren() == null && !Strings.isNullOrEmpty(owner.getText()))
{ {
@@ -332,6 +334,12 @@ public class ClanChatPlugin extends Plugin
private void addClanActivityMessages() private void addClanActivityMessages()
{ {
ClanMemberManager clanMemberManager = client.getClanMemberManager();
if (clanMemberManager == null || activityBuffer.isEmpty())
{
return;
}
Iterator<ClanMemberActivity> activityIt = activityBuffer.values().iterator(); Iterator<ClanMemberActivity> activityIt = activityBuffer.values().iterator();
while (activityIt.hasNext()) while (activityIt.hasNext())
@@ -341,12 +349,12 @@ public class ClanChatPlugin extends Plugin
if (activity.getTick() < client.getTickCount() - MESSAGE_DELAY) if (activity.getTick() < client.getTickCount() - MESSAGE_DELAY)
{ {
activityIt.remove(); 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 String activityMessage = activityType == ClanActivityType.JOINED ? " has joined." : " has left.";
final ClanMemberRank rank = member.getRank(); final ClanMemberRank rank = member.getRank();
@@ -367,7 +375,7 @@ public class ClanChatPlugin extends Plugin
ChatMessageBuilder message = new ChatMessageBuilder() ChatMessageBuilder message = new ChatMessageBuilder()
.append("[") .append("[")
.append(channelColor, client.getClanChatName()); .append(channelColor, clanMemberManager.getClanChatName());
if (rankIcon > -1) if (rankIcon > -1)
{ {
message message
@@ -376,7 +384,7 @@ public class ClanChatPlugin extends Plugin
} }
message message
.append("] ") .append("] ")
.append(textColor, member.getUsername() + activityMessage); .append(textColor, member.getName() + activityMessage);
final String messageString = message.build(); final String messageString = message.build();
client.addChatMessage(ChatMessageType.FRIENDSCHATNOTIFICATION, "", messageString, ""); client.addChatMessage(ChatMessageType.FRIENDSCHATNOTIFICATION, "", messageString, "");
@@ -406,7 +414,8 @@ public class ClanChatPlugin extends Plugin
return; return;
} }
if (client.getClanChatCount() <= 0) ClanMemberManager clanMemberManager = client.getClanMemberManager();
if (clanMemberManager == null || clanMemberManager.getCount() == 0)
{ {
return; return;
} }
@@ -542,7 +551,8 @@ public class ClanChatPlugin extends Plugin
return; return;
} }
if (client.getClanChatCount() == 0) ClanMemberManager clanMemberManager = client.getClanMemberManager();
if (clanMemberManager == null || clanMemberManager.getCount() == 0)
{ {
clanChatList.setChildren(null); clanChatList.setChildren(null);
} }

View File

@@ -27,6 +27,9 @@ package net.runelite.client.plugins.friendlist;
import javax.inject.Inject; import javax.inject.Inject;
import net.runelite.api.Client; 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.VarPlayer;
import net.runelite.api.events.GameTick; import net.runelite.api.events.GameTick;
import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.Widget;
@@ -64,7 +67,8 @@ public class FriendListPlugin extends Plugin
final int world = client.getWorld(); final int world = client.getWorld();
final boolean isMember = client.getVar(VarPlayer.MEMBERSHIP_DAYS) > 0; 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) if (friendCount >= 0)
{ {
final int limit = isMember ? MAX_FRIENDS_P2P : MAX_FRIENDS_F2P; final int limit = isMember ? MAX_FRIENDS_P2P : MAX_FRIENDS_F2P;
@@ -80,7 +84,8 @@ public class FriendListPlugin extends Plugin
setFriendsListTitle(title); setFriendsListTitle(title);
} }
final int ignoreCount = client.getIgnoreCount(); final NameableContainer<Ignore> ignoreContainer = client.getIgnoreContainer();
final int ignoreCount = ignoreContainer.getCount();
if (ignoreCount >= 0) if (ignoreCount >= 0)
{ {
final int limit = isMember ? MAX_IGNORES_P2P : MAX_IGNORES_F2P; final int limit = isMember ? MAX_IGNORES_P2P : MAX_IGNORES_F2P;

View File

@@ -37,9 +37,11 @@ import javax.swing.text.BadLocationException;
import javax.swing.text.Document; import javax.swing.text.Document;
import javax.swing.text.JTextComponent; import javax.swing.text.JTextComponent;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.runelite.api.ClanMember; import net.runelite.api.ClanMemberManager;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.Friend; import net.runelite.api.Friend;
import net.runelite.api.Nameable;
import net.runelite.api.NameableContainer;
import net.runelite.api.Player; import net.runelite.api.Player;
@Slf4j @Slf4j
@@ -191,12 +193,11 @@ class NameAutocompleter implements KeyListener
// TODO: Search lookup history // TODO: Search lookup history
Friend[] friends = client.getFriends(); NameableContainer<Friend> friendContainer = client.getFriendContainer();
if (friends != null) if (friendContainer != null)
{ {
autocompleteName = Arrays.stream(friends) autocompleteName = Arrays.stream(friendContainer.getMembers())
.filter(Objects::nonNull) .map(Nameable::getName)
.map(Friend::getName)
.filter(n -> pattern.matcher(n).matches()) .filter(n -> pattern.matcher(n).matches())
.findFirst(); .findFirst();
} }
@@ -204,12 +205,11 @@ class NameAutocompleter implements KeyListener
// Search clan if a friend wasn't found // Search clan if a friend wasn't found
if (!autocompleteName.isPresent()) if (!autocompleteName.isPresent())
{ {
final ClanMember[] clannies = client.getClanMembers(); final ClanMemberManager clanMemberManager = client.getClanMemberManager();
if (clannies != null) if (clanMemberManager != null)
{ {
autocompleteName = Arrays.stream(clannies) autocompleteName = Arrays.stream(clanMemberManager.getMembers())
.filter(Objects::nonNull) .map(Nameable::getName)
.map(ClanMember::getUsername)
.filter(n -> pattern.matcher(n).matches()) .filter(n -> pattern.matcher(n).matches())
.findFirst(); .findFirst();
} }

View File

@@ -52,14 +52,15 @@ import lombok.extern.slf4j.Slf4j;
import net.runelite.api.ChatMessageType; import net.runelite.api.ChatMessageType;
import net.runelite.api.ChatPlayer; import net.runelite.api.ChatPlayer;
import net.runelite.api.ClanMember; import net.runelite.api.ClanMember;
import net.runelite.api.ClanMemberManager;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.Friend; import net.runelite.api.Friend;
import net.runelite.api.GameState; import net.runelite.api.GameState;
import net.runelite.api.MenuAction; import net.runelite.api.MenuAction;
import net.runelite.api.MenuEntry; import net.runelite.api.MenuEntry;
import net.runelite.api.NameableContainer;
import net.runelite.api.Varbits; import net.runelite.api.Varbits;
import net.runelite.api.events.ChatMessage; import net.runelite.api.events.ChatMessage;
import net.runelite.client.events.ConfigChanged;
import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.GameTick; import net.runelite.api.events.GameTick;
import net.runelite.api.events.MenuEntryAdded; 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.chat.QueuedMessage;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.Subscribe; import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.input.KeyManager; import net.runelite.client.input.KeyManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; 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 // 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). // chat is 'off', then the hop-to option will not get shown in the menu (issue #5679).
ClanMember[] clanMembers = client.getClanMembers(); ClanMemberManager clanMemberManager = client.getClanMemberManager();
if (clanMemberManager != null)
if (clanMembers != 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(); NameableContainer<Friend> friendContainer = client.getFriendContainer();
if (friendContainer != null)
if (friends != null)
{ {
for (Friend friend : friends) return friendContainer.findByName(cleanName);
{
if (friend != null && friend.getName().equals(cleanName))
{
return friend;
}
}
} }
return null; return null;

View File

@@ -31,6 +31,7 @@ import com.google.inject.testing.fieldbinder.BoundFieldModule;
import javax.inject.Inject; import javax.inject.Inject;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.Player; import net.runelite.api.Player;
import net.runelite.client.game.ClanManager;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull; import static org.junit.Assert.assertNull;
@@ -53,6 +54,10 @@ public class ChatFilterPluginTest
@Bind @Bind
private ChatFilterConfig chatFilterConfig; private ChatFilterConfig chatFilterConfig;
@Mock
@Bind
private ClanManager clanManager;
@Mock @Mock
private Player localPlayer; private Player localPlayer;
@@ -132,7 +137,7 @@ public class ChatFilterPluginTest
@Test @Test
public void testMessageFromFriendIsFiltered() public void testMessageFromFriendIsFiltered()
{ {
when(client.isClanMember("Iron Mammal")).thenReturn(false); when(clanManager.isClanMember("Iron Mammal")).thenReturn(false);
when(chatFilterConfig.filterFriends()).thenReturn(true); when(chatFilterConfig.filterFriends()).thenReturn(true);
assertTrue(chatFilterPlugin.shouldFilterPlayerMessage("Iron Mammal")); assertTrue(chatFilterPlugin.shouldFilterPlayerMessage("Iron Mammal"));
} }
@@ -156,7 +161,7 @@ public class ChatFilterPluginTest
@Test @Test
public void testMessageFromClanIsNotFiltered() public void testMessageFromClanIsNotFiltered()
{ {
when(client.isClanMember("B0aty")).thenReturn(true); when(clanManager.isClanMember("B0aty")).thenReturn(true);
when(chatFilterConfig.filterClan()).thenReturn(false); when(chatFilterConfig.filterClan()).thenReturn(false);
assertFalse(chatFilterPlugin.shouldFilterPlayerMessage("B0aty")); assertFalse(chatFilterPlugin.shouldFilterPlayerMessage("B0aty"));
} }
@@ -172,7 +177,7 @@ public class ChatFilterPluginTest
public void testMessageFromNonFriendNonClanIsFiltered() public void testMessageFromNonFriendNonClanIsFiltered()
{ {
when(client.isFriended("Woox", false)).thenReturn(false); when(client.isFriended("Woox", false)).thenReturn(false);
when(client.isClanMember("Woox")).thenReturn(false); when(clanManager.isClanMember("Woox")).thenReturn(false);
assertTrue(chatFilterPlugin.shouldFilterPlayerMessage("Woox")); assertTrue(chatFilterPlugin.shouldFilterPlayerMessage("Woox"));
} }
} }