Banlist fixes/improvements (#1962)
This commit is contained in:
@@ -46,6 +46,7 @@ public class WidgetID
|
|||||||
public static final int GRAND_EXCHANGE_GROUP_ID = 465;
|
public static final int GRAND_EXCHANGE_GROUP_ID = 465;
|
||||||
public static final int DEPOSIT_BOX_GROUP_ID = 192;
|
public static final int DEPOSIT_BOX_GROUP_ID = 192;
|
||||||
public static final int INVENTORY_GROUP_ID = 149;
|
public static final int INVENTORY_GROUP_ID = 149;
|
||||||
|
public static final int PLAYER_TRADE_CONFIRM_GROUP_ID = 334;
|
||||||
public static final int PLAYER_TRADE_SCREEN_GROUP_ID = 335;
|
public static final int PLAYER_TRADE_SCREEN_GROUP_ID = 335;
|
||||||
public static final int PLAYER_TRADE_INVENTORY_GROUP_ID = 336;
|
public static final int PLAYER_TRADE_INVENTORY_GROUP_ID = 336;
|
||||||
public static final int FRIENDS_LIST_GROUP_ID = 429;
|
public static final int FRIENDS_LIST_GROUP_ID = 429;
|
||||||
@@ -154,7 +155,6 @@ public class WidgetID
|
|||||||
public static final int BEGINNER_CLUE_MAP_WIZARDS_TOWER = 356;
|
public static final int BEGINNER_CLUE_MAP_WIZARDS_TOWER = 356;
|
||||||
public static final int SEED_BOX_GROUP_ID = 128;
|
public static final int SEED_BOX_GROUP_ID = 128;
|
||||||
public static final int ITEMS_KEPT_ON_DEATH_GROUP_ID = 4;
|
public static final int ITEMS_KEPT_ON_DEATH_GROUP_ID = 4;
|
||||||
public static final int TRADING_SCREEN = 335;
|
|
||||||
public static final int SEED_VAULT_GROUP_ID = 631;
|
public static final int SEED_VAULT_GROUP_ID = 631;
|
||||||
public static final int EXPLORERS_RING_ALCH_GROUP_ID = 483;
|
public static final int EXPLORERS_RING_ALCH_GROUP_ID = 483;
|
||||||
public static final int LMS_GROUP_ID = 333;
|
public static final int LMS_GROUP_ID = 333;
|
||||||
@@ -1089,7 +1089,7 @@ public class WidgetID
|
|||||||
|
|
||||||
public static class TradeScreen
|
public static class TradeScreen
|
||||||
{
|
{
|
||||||
public static final int SECOND_GROUP_ID = 334;
|
public static final int FIRST_TRADING_WITH = 31;
|
||||||
public static final int SECOND_TRADING_WITH = 30;
|
public static final int SECOND_TRADING_WITH = 30;
|
||||||
public static final int SECOND_MY_OFFER = 23;
|
public static final int SECOND_MY_OFFER = 23;
|
||||||
public static final int SECOND_THEIR_OFFER = 24;
|
public static final int SECOND_THEIR_OFFER = 24;
|
||||||
|
|||||||
@@ -782,7 +782,9 @@ public enum WidgetInfo
|
|||||||
|
|
||||||
ACHIEVEMENT_DIARY_CONTAINER(WidgetID.ACHIEVEMENT_DIARY_GROUP_ID, WidgetID.AchievementDiary.CONTAINER),
|
ACHIEVEMENT_DIARY_CONTAINER(WidgetID.ACHIEVEMENT_DIARY_GROUP_ID, WidgetID.AchievementDiary.CONTAINER),
|
||||||
|
|
||||||
SKILLS_CONTAINER(WidgetID.SKILLS_GROUP_ID, WidgetID.Skills.CONTAINER);
|
SKILLS_CONTAINER(WidgetID.SKILLS_GROUP_ID, WidgetID.Skills.CONTAINER),
|
||||||
|
|
||||||
|
TRADING_WITH(WidgetID.PLAYER_TRADE_SCREEN_GROUP_ID, WidgetID.TradeScreen.FIRST_TRADING_WITH);
|
||||||
|
|
||||||
private final int groupId;
|
private final int groupId;
|
||||||
private final int childId;
|
private final int childId;
|
||||||
|
|||||||
@@ -26,13 +26,9 @@
|
|||||||
*/
|
*/
|
||||||
package net.runelite.client.plugins.banlist;
|
package net.runelite.client.plugins.banlist;
|
||||||
|
|
||||||
import com.google.common.base.Splitter;
|
|
||||||
import com.google.inject.Provides;
|
import com.google.inject.Provides;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
@@ -41,14 +37,13 @@ import net.runelite.api.ChatMessageType;
|
|||||||
import net.runelite.api.ClanMember;
|
import net.runelite.api.ClanMember;
|
||||||
import net.runelite.api.Client;
|
import net.runelite.api.Client;
|
||||||
import net.runelite.api.GameState;
|
import net.runelite.api.GameState;
|
||||||
import net.runelite.api.Varbits;
|
|
||||||
import net.runelite.api.events.ClanMemberJoined;
|
import net.runelite.api.events.ClanMemberJoined;
|
||||||
import net.runelite.api.events.ConfigChanged;
|
import net.runelite.api.events.ConfigChanged;
|
||||||
import net.runelite.api.events.GameTick;
|
import net.runelite.api.events.GameTick;
|
||||||
import net.runelite.api.events.WidgetHiddenChanged;
|
import net.runelite.api.events.WidgetHiddenChanged;
|
||||||
import net.runelite.api.events.WidgetLoaded;
|
import net.runelite.api.events.WidgetLoaded;
|
||||||
import net.runelite.api.widgets.Widget;
|
import net.runelite.api.widgets.Widget;
|
||||||
import static net.runelite.api.widgets.WidgetID.TRADING_SCREEN;
|
import static net.runelite.api.widgets.WidgetID.PLAYER_TRADE_SCREEN_GROUP_ID;
|
||||||
import net.runelite.api.widgets.WidgetInfo;
|
import net.runelite.api.widgets.WidgetInfo;
|
||||||
import net.runelite.client.callback.ClientThread;
|
import net.runelite.client.callback.ClientThread;
|
||||||
import net.runelite.client.chat.ChatColorType;
|
import net.runelite.client.chat.ChatColorType;
|
||||||
@@ -66,6 +61,7 @@ import okhttp3.Call;
|
|||||||
import okhttp3.Callback;
|
import okhttp3.Callback;
|
||||||
import okhttp3.Request;
|
import okhttp3.Request;
|
||||||
import okhttp3.Response;
|
import okhttp3.Response;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
@PluginDescriptor(
|
@PluginDescriptor(
|
||||||
name = "Ban List",
|
name = "Ban List",
|
||||||
@@ -83,16 +79,22 @@ public class BanListPlugin extends Plugin
|
|||||||
private final Set<String> wdrToxicSet = new HashSet<>();
|
private final Set<String> wdrToxicSet = new HashSet<>();
|
||||||
private final Set<String> runeWatchSet = new HashSet<>();
|
private final Set<String> runeWatchSet = new HashSet<>();
|
||||||
private final Set<String> manualBans = new HashSet<>();
|
private final Set<String> manualBans = new HashSet<>();
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private Client client;
|
private Client client;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private ClientThread clientThread;
|
private ClientThread clientThread;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private BanListConfig config;
|
private BanListConfig config;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private ChatMessageManager chatMessageManager;
|
private ChatMessageManager chatMessageManager;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private EventBus eventBus;
|
private EventBus eventBus;
|
||||||
|
|
||||||
private String tobNames = "";
|
private String tobNames = "";
|
||||||
private boolean enableWDRScam;
|
private boolean enableWDRScam;
|
||||||
private boolean enableWDRToxic;
|
private boolean enableWDRToxic;
|
||||||
@@ -111,12 +113,9 @@ public class BanListPlugin extends Plugin
|
|||||||
{
|
{
|
||||||
updateConfig();
|
updateConfig();
|
||||||
addSubscriptions();
|
addSubscriptions();
|
||||||
List<String> bannedPlayers = Splitter
|
|
||||||
.on(",")
|
manualBans.addAll(Text.fromCSV(Text.standardize(config.getBannedPlayers())));
|
||||||
.trimResults()
|
|
||||||
.omitEmptyStrings()
|
|
||||||
.splitToList(config.getBannedPlayers());
|
|
||||||
manualBans.addAll(bannedPlayers);
|
|
||||||
fetchFromWebsites();
|
fetchFromWebsites();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -144,19 +143,11 @@ public class BanListPlugin extends Plugin
|
|||||||
{
|
{
|
||||||
if (event.getGroup().equals("banlist") && event.getKey().equals("bannedPlayers"))
|
if (event.getGroup().equals("banlist") && event.getKey().equals("bannedPlayers"))
|
||||||
{
|
{
|
||||||
List<String> bannedPlayers = Splitter
|
manualBans.clear();
|
||||||
.on(",")
|
|
||||||
.trimResults()
|
|
||||||
.omitEmptyStrings()
|
|
||||||
.splitToList(config.getBannedPlayers());
|
|
||||||
|
|
||||||
for (String bannedPlayer : bannedPlayers)
|
String newValue = event.getNewValue();
|
||||||
{
|
|
||||||
if (!manualBans.contains(bannedPlayer))
|
manualBans.addAll(Text.fromCSV(Text.standardize(newValue)));
|
||||||
{
|
|
||||||
manualBans.add(Text.standardize(bannedPlayer));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -224,11 +215,12 @@ public class BanListPlugin extends Plugin
|
|||||||
*/
|
*/
|
||||||
private void onWidgetLoaded(WidgetLoaded widgetLoaded)
|
private void onWidgetLoaded(WidgetLoaded widgetLoaded)
|
||||||
{
|
{
|
||||||
if (this.highlightInTrade && widgetLoaded.getGroupId() == TRADING_SCREEN)
|
if (this.highlightInTrade && widgetLoaded.getGroupId() == PLAYER_TRADE_SCREEN_GROUP_ID)
|
||||||
{ //if trading window was loaded
|
{ //if trading window was loaded
|
||||||
clientThread.invokeLater(() ->
|
clientThread.invokeLater(() ->
|
||||||
{
|
{
|
||||||
Widget tradingWith = client.getWidget(335, 31);
|
Widget tradingWith = client.getWidget(WidgetInfo.TRADING_WITH);
|
||||||
|
|
||||||
String name = tradingWith.getText().replaceAll("Trading With: ", "").toLowerCase();
|
String name = tradingWith.getText().replaceAll("Trading With: ", "").toLowerCase();
|
||||||
if (checkScamList(name) != null)
|
if (checkScamList(name) != null)
|
||||||
{
|
{
|
||||||
@@ -244,13 +236,12 @@ public class BanListPlugin extends Plugin
|
|||||||
|
|
||||||
private void onGameTick(GameTick event)
|
private void onGameTick(GameTick event)
|
||||||
{
|
{
|
||||||
|
final Widget raidingParty = client.getWidget(WidgetInfo.THEATRE_OF_BLOOD_RAIDING_PARTY);
|
||||||
if (client.getWidget(WidgetInfo.THEATRE_OF_BLOOD_RAIDING_PARTY) == null)
|
if (raidingParty == null)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget raidingParty = client.getWidget(WidgetInfo.THEATRE_OF_BLOOD_RAIDING_PARTY);
|
|
||||||
String allNames = raidingParty.getText();
|
String allNames = raidingParty.getText();
|
||||||
|
|
||||||
if (allNames.equalsIgnoreCase(tobNames))
|
if (allNames.equalsIgnoreCase(tobNames))
|
||||||
@@ -262,19 +253,20 @@ public class BanListPlugin extends Plugin
|
|||||||
|
|
||||||
String[] split = allNames.split("<br>");
|
String[] split = allNames.split("<br>");
|
||||||
|
|
||||||
for (int i = 0; i < 5; i++)
|
for (String name : split)
|
||||||
{
|
{
|
||||||
String name = split[i];
|
if (!name.equals("-"))
|
||||||
if (!name.equalsIgnoreCase("-"))
|
|
||||||
{
|
{
|
||||||
ListType scamList = checkScamList(Text.standardize(name));
|
String stdName = Text.standardize(name);
|
||||||
|
|
||||||
|
ListType scamList = checkScamList(stdName);
|
||||||
|
|
||||||
if (scamList != null)
|
if (scamList != null)
|
||||||
{
|
{
|
||||||
sendWarning(name, scamList);
|
sendWarning(name, scamList);
|
||||||
}
|
}
|
||||||
|
|
||||||
ListType toxicList = checkToxicList(Text.standardize(name));
|
ListType toxicList = checkToxicList(stdName);
|
||||||
|
|
||||||
if (toxicList != null)
|
if (toxicList != null)
|
||||||
{
|
{
|
||||||
@@ -284,29 +276,22 @@ public class BanListPlugin extends Plugin
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
boolean inTobParty()
|
|
||||||
{
|
|
||||||
return client.getVar(Varbits.THEATRE_OF_BLOOD) == 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Compares player name to everything in the ban lists
|
* Compares player name to everything in the ban lists
|
||||||
*/
|
*/
|
||||||
private ListType checkScamList(String nameToBeChecked)
|
private ListType checkScamList(String nameToBeChecked)
|
||||||
{
|
{
|
||||||
if (wdrScamSet.size() > 0 && this.enableWDRScam && wdrScamSet.contains(nameToBeChecked))
|
if (this.enableWDRScam && wdrScamSet.contains(nameToBeChecked))
|
||||||
{
|
{
|
||||||
return ListType.WEDORAIDSSCAM_LIST;
|
return ListType.WEDORAIDSSCAM_LIST;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (runeWatchSet.size() > 0 && this.enableRuneWatch && runeWatchSet.contains(nameToBeChecked))
|
if (this.enableRuneWatch && runeWatchSet.contains(nameToBeChecked))
|
||||||
{
|
{
|
||||||
return ListType.RUNEWATCH_LIST;
|
return ListType.RUNEWATCH_LIST;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (manualBans.size() > 0 && manualBans.contains(nameToBeChecked))
|
if (manualBans.contains(nameToBeChecked))
|
||||||
{
|
{
|
||||||
return ListType.MANUAL_LIST;
|
return ListType.MANUAL_LIST;
|
||||||
}
|
}
|
||||||
@@ -316,8 +301,7 @@ public class BanListPlugin extends Plugin
|
|||||||
|
|
||||||
private ListType checkToxicList(String nameToBeChecked)
|
private ListType checkToxicList(String nameToBeChecked)
|
||||||
{
|
{
|
||||||
|
if (this.enableWDRToxic && wdrToxicSet.contains(nameToBeChecked))
|
||||||
if (wdrToxicSet.size() > 0 && this.enableWDRToxic && wdrToxicSet.contains(nameToBeChecked))
|
|
||||||
{
|
{
|
||||||
return ListType.WEDORAIDSTOXIC_LIST;
|
return ListType.WEDORAIDSTOXIC_LIST;
|
||||||
}
|
}
|
||||||
@@ -393,29 +377,7 @@ public class BanListPlugin extends Plugin
|
|||||||
Request request = new Request.Builder()
|
Request request = new Request.Builder()
|
||||||
.url("https://wdrdev.github.io/index")
|
.url("https://wdrdev.github.io/index")
|
||||||
.build();
|
.build();
|
||||||
RuneLiteAPI.CLIENT.newCall(request).enqueue(new Callback()
|
fetchAndParseWdr(request, wdrScamSet);
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public void onFailure(Call call, IOException e)
|
|
||||||
{
|
|
||||||
log.debug("error retrieving names from wdr");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onResponse(Call call, Response response) throws IOException
|
|
||||||
{
|
|
||||||
String text = response.body().string();
|
|
||||||
text = text.substring(text.indexOf("<p>") + 3, text.indexOf("</p>"));
|
|
||||||
text = text.replace("/", ",");
|
|
||||||
text = text.replace(", $", "");
|
|
||||||
|
|
||||||
ArrayList<String> wdrList = new ArrayList<>(Arrays.asList(text.split(",")));
|
|
||||||
ArrayList<String> wdrList2 = new ArrayList<>();
|
|
||||||
wdrList.forEach((name) -> wdrList2.add(Text.standardize(name).toLowerCase()));
|
|
||||||
|
|
||||||
wdrScamSet.addAll(wdrList2);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
Request secondRequest = new Request.Builder()
|
Request secondRequest = new Request.Builder()
|
||||||
@@ -424,13 +386,13 @@ public class BanListPlugin extends Plugin
|
|||||||
RuneLiteAPI.CLIENT.newCall(secondRequest).enqueue(new Callback()
|
RuneLiteAPI.CLIENT.newCall(secondRequest).enqueue(new Callback()
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Call call, IOException e)
|
public void onFailure(@NotNull Call call, @NotNull IOException e)
|
||||||
{
|
{
|
||||||
log.debug("error retrieving names from runewatch");
|
log.debug("error retrieving names from runewatch");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(Call call, Response response) throws IOException
|
public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException
|
||||||
{
|
{
|
||||||
String text = response.body().string();
|
String text = response.body().string();
|
||||||
String mytext = text.substring(text.indexOf("lcp_instance_0"), text.indexOf("strong>Evidence Quality Suggestion"));
|
String mytext = text.substring(text.indexOf("lcp_instance_0"), text.indexOf("strong>Evidence Quality Suggestion"));
|
||||||
@@ -450,27 +412,28 @@ public class BanListPlugin extends Plugin
|
|||||||
Request thirdRequest = new Request.Builder()
|
Request thirdRequest = new Request.Builder()
|
||||||
.url("https://wdrdev.github.io/toxic")
|
.url("https://wdrdev.github.io/toxic")
|
||||||
.build();
|
.build();
|
||||||
RuneLiteAPI.CLIENT.newCall(thirdRequest).enqueue(new Callback()
|
fetchAndParseWdr(thirdRequest, wdrToxicSet);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void fetchAndParseWdr(Request req, Set<String> tgtSet)
|
||||||
|
{
|
||||||
|
RuneLiteAPI.CLIENT.newCall(req).enqueue(new Callback()
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Call call, IOException e)
|
public void onFailure(@NotNull Call call, @NotNull IOException e)
|
||||||
{
|
{
|
||||||
log.debug("error retrieving names from wdr");
|
log.debug("error retrieving names from wdr");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(Call call, Response response) throws IOException
|
public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException
|
||||||
{
|
{
|
||||||
String text = response.body().string();
|
String text = response.body().string();
|
||||||
text = text.substring(text.indexOf("<p>") + 3, text.indexOf("</p>"));
|
text = text.substring(text.indexOf("<p>") + 3, text.indexOf("</p>"));
|
||||||
text = text.replace("/", ",");
|
text = text.replace("/", ",");
|
||||||
text = text.replace(", $", "");
|
text = text.replace(", $", "");
|
||||||
|
|
||||||
ArrayList<String> wdrToxicList = new ArrayList<>(Arrays.asList(text.split(",")));
|
Text.fromCSV(text).forEach(str -> tgtSet.add(Text.standardize(str)));
|
||||||
ArrayList<String> wdrToxicList2 = new ArrayList<>();
|
|
||||||
wdrToxicList.forEach((name) -> wdrToxicList2.add(Text.standardize(name).toLowerCase()));
|
|
||||||
|
|
||||||
wdrToxicSet.addAll(wdrToxicList2);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -485,16 +448,15 @@ public class BanListPlugin extends Plugin
|
|||||||
Widget widget = client.getWidget(WidgetInfo.CLAN_CHAT_LIST);
|
Widget widget = client.getWidget(WidgetInfo.CLAN_CHAT_LIST);
|
||||||
for (Widget widgetChild : widget.getDynamicChildren())
|
for (Widget widgetChild : widget.getDynamicChildren())
|
||||||
{
|
{
|
||||||
ListType scamList = checkScamList(widgetChild.getText().toLowerCase());
|
String text = widgetChild.getText(), lc = text.toLowerCase();
|
||||||
ListType toxicList = checkToxicList(widgetChild.getText().toLowerCase());
|
|
||||||
|
|
||||||
if (scamList != null)
|
if (checkScamList(lc) != null)
|
||||||
{
|
{
|
||||||
widgetChild.setText("<col=ff0000>" + widgetChild.getText() + "</col>");
|
widgetChild.setText("<col=ff0000>" + text + "</col>");
|
||||||
}
|
}
|
||||||
else if (toxicList != null)
|
else if (checkToxicList(lc) != null)
|
||||||
{
|
{
|
||||||
widgetChild.setText("<col=ff6400>" + widgetChild.getText() + "</col>");
|
widgetChild.setText("<col=ff6400>" + text + "</col>");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user