Skip to content
This repository has been archived by the owner on Apr 8, 2023. It is now read-only.

project: bug fixes #1986

Merged
merged 9 commits into from
Nov 10, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 18 additions & 9 deletions runelite-api/src/main/java/net/runelite/api/coords/WorldPoint.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,14 @@
*/
package net.runelite.api.coords;

import static net.runelite.api.Constants.CHUNK_SIZE;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import javax.annotation.Nullable;
import lombok.Value;
import net.runelite.api.Client;
import static net.runelite.api.Constants.CHUNK_SIZE;
import net.runelite.api.Perspective;

/**
Expand Down Expand Up @@ -97,8 +98,8 @@ public WorldPoint dz(int dz)
* Checks whether a tile is located in the current scene.
*
* @param client the client
* @param x the tiles x coordinate
* @param y the tiles y coordinate
* @param x the tiles x coordinate
* @param y the tiles y coordinate
* @return true if the tile is in the scene, false otherwise
*/
public static boolean isInScene(Client client, int x, int y)
Expand Down Expand Up @@ -127,7 +128,7 @@ public boolean isInScene(Client client)
* Gets the coordinate of the tile that contains the passed local point.
*
* @param client the client
* @param local the local coordinate
* @param local the local coordinate
* @return the tile coordinate containing the local point
*/
public static WorldPoint fromLocal(Client client, LocalPoint local)
Expand All @@ -139,9 +140,9 @@ public static WorldPoint fromLocal(Client client, LocalPoint local)
* Gets the coordinate of the tile that contains the passed local point.
*
* @param client the client
* @param x the local x-axis coordinate
* @param y the local x-axis coordinate
* @param plane the plane
* @param x the local x-axis coordinate
* @param y the local x-axis coordinate
* @param plane the plane
* @return the tile coordinate containing the local point
*/
public static WorldPoint fromLocal(Client client, int x, int y, int plane)
Expand All @@ -157,10 +158,11 @@ public static WorldPoint fromLocal(Client client, int x, int y, int plane)
* Gets the coordinate of the tile that contains the passed local point,
* accounting for instances.
*
* @param client the client
* @param client the client
* @param localPoint the local coordinate
* @return the tile coordinate containing the local point
*/
@Nullable
public static WorldPoint fromLocalInstance(Client client, LocalPoint localPoint)
{
if (client.isInInstancedRegion())
Expand All @@ -173,6 +175,11 @@ public static WorldPoint fromLocalInstance(Client client, LocalPoint localPoint)
int chunkX = sceneX / CHUNK_SIZE;
int chunkY = sceneY / CHUNK_SIZE;

if (chunkX >= 13 || chunkY >= 13)
{
return null;
}

// get the template chunk for the chunk
int[][][] instanceTemplateChunks = client.getInstanceTemplateChunks();
int templateChunk = instanceTemplateChunks[client.getPlane()][chunkX][chunkY];
Expand All @@ -198,6 +205,7 @@ public static WorldPoint fromLocalInstance(Client client, LocalPoint localPoint)
/**
* Get occurrences of a tile on the scene, accounting for instances. There may be
* more than one if the same template chunk occurs more than once on the scene.
*
* @param client
* @param worldPoint
* @return
Expand Down Expand Up @@ -238,7 +246,7 @@ public static Collection<WorldPoint> toLocalInstance(Client client, WorldPoint w
/**
* Rotate the coordinates in the chunk according to chunk rotation
*
* @param point point
* @param point point
* @param rotation rotation
* @return world point
*/
Expand Down Expand Up @@ -363,6 +371,7 @@ public int getRegionID()

/**
* Checks if user in within certain zone specified by upper and lower bound
*
* @param lowerBound
* @param upperBound
* @param userLocation
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@
import com.google.common.base.CharMatcher;
import com.google.common.base.Splitter;
import com.google.inject.Provides;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
Expand All @@ -45,11 +45,11 @@
import net.runelite.api.events.ConfigChanged;
import net.runelite.api.events.OverheadTextChanged;
import net.runelite.api.events.ScriptCallbackEvent;
import net.runelite.api.util.Text;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.api.util.Text;
import org.apache.commons.lang3.StringUtils;

@PluginDescriptor(
Expand All @@ -68,7 +68,7 @@ public class ChatFilterPlugin extends Plugin
private static final String CENSOR_MESSAGE = "Hey, everyone, I just tried to say something very silly!";

private final CharMatcher jagexPrintableCharMatcher = Text.JAGEX_PRINTABLE_CHAR_MATCHER;
private final List<Pattern> filteredPatterns = new ArrayList<>();
private final List<Pattern> filteredPatterns = new CopyOnWriteArrayList<>();

@Inject
private Client client;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@
import net.runelite.api.events.PlayerSpawned;
import net.runelite.api.events.ScriptCallbackEvent;
import net.runelite.api.events.VarClientStrChanged;
import net.runelite.api.util.Text;
import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetInfo;
import net.runelite.api.widgets.WidgetType;
Expand All @@ -80,7 +81,6 @@
import static net.runelite.client.ui.JagexColors.CHAT_CLAN_TEXT_OPAQUE_BACKGROUND;
import static net.runelite.client.ui.JagexColors.CHAT_CLAN_TEXT_TRANSPARENT_BACKGROUND;
import net.runelite.client.ui.overlay.infobox.InfoBoxManager;
import net.runelite.api.util.Text;

@PluginDescriptor(
name = "Clan Chat",
Expand Down Expand Up @@ -411,7 +411,8 @@ private void addActivityMessage(ClanMember member, ClanActivityType activityType

ChatMessageBuilder message = new ChatMessageBuilder()
.append("[")
.append(channelColor, client.getClanChatName());
.append(channelColor, client.getClanChatName() == null ? "" : client.getClanChatName());

if (rankIcon > -1)
{
message
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ void save(ConfigManager configManager, int region)

public boolean add(Bone bone)
{
if (this.map == null)
if (this.map == null || bone == null)
{
return false;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -399,7 +399,8 @@ private void checkForAreaUpdate()
return;
}

final int playerRegionID = WorldPoint.fromLocalInstance(client, client.getLocalPlayer().getLocalLocation()).getRegionID();
final WorldPoint worldPoint = WorldPoint.fromLocalInstance(client, client.getLocalPlayer().getLocalLocation());
final int playerRegionID = worldPoint == null ? 0 : worldPoint.getRegionID();

if (playerRegionID == 0)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@
package net.runelite.client.plugins.entityhider;

import com.google.inject.Provides;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import javax.inject.Inject;
import javax.inject.Singleton;
import net.runelite.api.Client;
Expand All @@ -41,10 +44,6 @@
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

@PluginDescriptor(
name = "Entity Hider",
description = "Hide players, NPCs, and/or projectiles",
Expand Down Expand Up @@ -91,13 +90,18 @@ public void onConfigChanged(ConfigChanged event)
{
updateConfig();

if (event.getOldValue() == null || event.getNewValue() == null)
{
return;
}

if (event.getKey().equals("hideNPCsNames"))
{
List<String> oldList = Text.fromCSV(event.getOldValue());
List<String> newList = Text.fromCSV(event.getNewValue());

ArrayList<String> removed = oldList.stream().filter(s -> !newList.contains(s)).collect(Collectors.toCollection(ArrayList::new));
ArrayList<String> added = newList.stream().filter(s -> !oldList.contains(s)).collect(Collectors.toCollection(ArrayList::new));
List<String> removed = oldList.stream().filter(s -> !newList.contains(s)).collect(Collectors.toCollection(ArrayList::new));
List<String> added = newList.stream().filter(s -> !oldList.contains(s)).collect(Collectors.toCollection(ArrayList::new));

removed.forEach(client::removeHiddenNpcName);
added.forEach(client::addHiddenNpcName);
Expand Down Expand Up @@ -189,7 +193,8 @@ private boolean isPlayerRegionAllowed()
return true;
}

final int playerRegionID = WorldPoint.fromLocalInstance(client, localPlayer.getLocalLocation()).getRegionID();
final WorldPoint worldPoint = WorldPoint.fromLocalInstance(client, client.getLocalPlayer().getLocalLocation());
final int playerRegionID = worldPoint == null ? 0 : worldPoint.getRegionID();

// 9520 = Castle Wars
return playerRegionID != 9520;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@
import net.runelite.api.Client;
import static net.runelite.api.Constants.CHUNK_SIZE;
import net.runelite.api.GameState;
import net.runelite.api.MenuOpcode;
import net.runelite.api.MenuEntry;
import net.runelite.api.MenuOpcode;
import net.runelite.api.Tile;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.coords.WorldPoint;
Expand All @@ -57,14 +57,14 @@
import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.MenuEntryAdded;
import net.runelite.api.events.MenuOptionClicked;
import net.runelite.api.util.Text;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.input.KeyManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.util.ColorUtil;
import net.runelite.api.util.Text;

@Slf4j
@PluginDescriptor(
Expand Down Expand Up @@ -336,6 +336,10 @@ private void onMenuEntryAdded(MenuEntryAdded event)
return;
}
final WorldPoint loc = WorldPoint.fromLocalInstance(client, tile.getLocalLocation());
if (loc == null)
{
return;
}
final int regionId = loc.getRegionID();

for (int i = this.amount.toInt(); i > 0; i--)
Expand Down Expand Up @@ -419,6 +423,11 @@ private void markTile(LocalPoint localPoint, int group)

WorldPoint worldPoint = WorldPoint.fromLocalInstance(client, localPoint);

if (worldPoint == null)
{
return;
}

int regionId = worldPoint.getRegionID();
GroundMarkerPoint point = new GroundMarkerPoint(regionId, worldPoint.getRegionX(), worldPoint.getRegionY(), client.getPlane(), group);
log.debug("Updating point: {} - {}", point, worldPoint);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,11 @@ private void onGameTick(GameTick event)

client.setLocalPlayerHidden(false);

if (localPlayerWp == null)
{
return;
}

for (PlayerContainer player : playerContainer)
{
if (player.getTimer() > 0)
Expand All @@ -194,7 +199,7 @@ private void onGameTick(GameTick event)
if (client.getVar(Varbits.LMS_IN_GAME) == 1)
{
final WorldPoint playerWp = WorldPoint.fromLocalInstance(client, player.getPlayer().getLocalLocation());
if (localPlayerWp.distanceTo(playerWp) == 0)
if (playerWp != null && localPlayerWp.distanceTo(playerWp) == 0)
{
client.setLocalPlayerHidden(true);
}
Expand All @@ -217,7 +222,8 @@ private boolean isPlayerRegionAllowed()
return true;
}

final int playerRegionID = WorldPoint.fromLocalInstance(client, localPlayer.getLocalLocation()).getRegionID();
final WorldPoint playerWp = WorldPoint.fromLocalInstance(client, localPlayer.getLocalLocation());
final int playerRegionID = playerWp == null ? 0 : playerWp.getRegionID();

// 9520 = Castle Wars
return playerRegionID != 9520;
Expand Down
Loading