Merge branch 'master' of https://github.com/Kyleeld/runelite
This commit is contained in:
@@ -16,7 +16,7 @@ import net.runelite.client.plugins.PluginDescriptor;
|
||||
name = "fKeyRemapping",
|
||||
description = "Used for interface hotkeys",
|
||||
tags = {"hotkey", "remapping"},
|
||||
type = "utility",
|
||||
type = "utility",
|
||||
enabledByDefault = true
|
||||
)
|
||||
public class fKeyRemappingPlugin extends Plugin
|
||||
|
||||
@@ -1,55 +0,0 @@
|
||||
package net.runelite.client.plugins.pkvision;
|
||||
|
||||
import java.awt.Color;
|
||||
import net.runelite.client.config.Config;
|
||||
import net.runelite.client.config.ConfigGroup;
|
||||
import net.runelite.client.config.ConfigItem;
|
||||
|
||||
@ConfigGroup("pkvision")
|
||||
public interface PKVisionConfig extends Config
|
||||
{
|
||||
@ConfigItem(position = 0, keyName = "drawOwnName", name = "Highlight own player", description = "Configures whether or not your own player should be highlighted")
|
||||
default boolean highlightOwnPlayer()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@ConfigItem(position = 1, keyName = "ownNameColor", name = "Own player color", description = "Color of your own player")
|
||||
default Color getOwnPlayerColor()
|
||||
{
|
||||
return new Color(0, 184, 212);
|
||||
}
|
||||
|
||||
@ConfigItem(position = 2, keyName = "drawFriendNames", name = "Highlight friends", description = "Configures whether or not friends should be highlighted")
|
||||
default boolean highlightFriends()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
@ConfigItem(position = 3, keyName = "friendNameColor", name = "Friend color", description = "Color of friend names" )
|
||||
default Color getFriendColor()
|
||||
{
|
||||
return new Color(0, 200, 80);
|
||||
}
|
||||
|
||||
@ConfigItem(position = 4, keyName = "drawPlayerTiles", name = "Draw tiles under players", description = "Configures whether or not tiles under highlighted players should be drawn")
|
||||
default boolean drawTiles()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@ConfigItem(position = 5, keyName = "drawPlayerNames", name = "Draw names above players", description = "Configures whether or not player names should be drawn above players")
|
||||
default boolean drawPlayerNames() { return true; }
|
||||
|
||||
@ConfigItem(position = 6, keyName = "drawPlayerLevels", name = "Draw levels above players", description = "Configures whether or not player levels should be drawn above players")
|
||||
default boolean drawPlayerLevels()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
//@ConfigItem(position = 7, keyName = "drawPlayerHealth", name = "Draw health above players", description = "Configures whether or not player levels should be drawn above players")
|
||||
//default boolean drawPlayerHealth()
|
||||
//{
|
||||
// return true;
|
||||
//}
|
||||
}
|
||||
@@ -1,43 +0,0 @@
|
||||
package net.runelite.client.plugins.pkvision;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Graphics2D;
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
import net.runelite.api.Player;
|
||||
import net.runelite.client.ui.overlay.Overlay;
|
||||
import net.runelite.client.ui.overlay.OverlayLayer;
|
||||
import net.runelite.client.ui.overlay.OverlayPosition;
|
||||
import net.runelite.client.ui.overlay.OverlayPriority;
|
||||
import net.runelite.client.ui.overlay.OverlayUtil;
|
||||
|
||||
@Singleton
|
||||
public class PKVisionMinimapOverlay extends Overlay
|
||||
{
|
||||
private final PKVisionService pkVisionService;
|
||||
|
||||
@Inject
|
||||
private PKVisionMinimapOverlay(PKVisionService pkVisionService)
|
||||
{
|
||||
this.pkVisionService = pkVisionService;
|
||||
setLayer(OverlayLayer.ABOVE_WIDGETS);
|
||||
setPosition(OverlayPosition.DYNAMIC);
|
||||
setPriority(OverlayPriority.HIGH);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Dimension render(Graphics2D graphics)
|
||||
{
|
||||
pkVisionService.forEachPlayer((player, color) -> renderPlayerOverlay(graphics, player, color));
|
||||
return null;
|
||||
}
|
||||
|
||||
private void renderPlayerOverlay(Graphics2D graphics, Player actor, Color color)
|
||||
{
|
||||
final net.runelite.api.Point minimapLocation = actor.getMinimapLocation();
|
||||
|
||||
if (minimapLocation != null)
|
||||
OverlayUtil.renderTextLocation(graphics, minimapLocation, Integer.toString(actor.getCombatLevel()), color);
|
||||
}
|
||||
}
|
||||
@@ -1,55 +0,0 @@
|
||||
package net.runelite.client.plugins.pkvision;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Graphics2D;
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import net.runelite.api.Player;
|
||||
import net.runelite.api.Point;
|
||||
import net.runelite.client.ui.overlay.Overlay;
|
||||
import net.runelite.client.ui.overlay.OverlayPosition;
|
||||
import net.runelite.client.ui.overlay.OverlayPriority;
|
||||
import net.runelite.client.ui.overlay.OverlayUtil;
|
||||
|
||||
@Singleton
|
||||
public class PKVisionOverlay extends Overlay
|
||||
{
|
||||
private final PKVisionService pkVisionService;
|
||||
private final PKVisionConfig config;
|
||||
|
||||
@Inject
|
||||
private PKVisionOverlay(PKVisionConfig config, PKVisionService pkVisionService, PKVisionPlugin pkVisionPlugin)
|
||||
{
|
||||
this.config = config;
|
||||
this.pkVisionService = pkVisionService;
|
||||
setPosition(OverlayPosition.DYNAMIC);
|
||||
setPriority(OverlayPriority.MED);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Dimension render(Graphics2D graphics)
|
||||
{
|
||||
pkVisionService.forEachPlayer((player, color) -> renderPlayerOverlay(graphics, player, color));
|
||||
return null;
|
||||
}
|
||||
|
||||
private void renderPlayerOverlay(Graphics2D graphics, Player actor, Color color)
|
||||
{
|
||||
if (!config.drawPlayerNames() && !config.drawPlayerLevels())
|
||||
return;
|
||||
|
||||
String text = "";
|
||||
if (config.drawPlayerLevels())
|
||||
text += "(" + actor.getCombatLevel() + ") ";
|
||||
|
||||
if (config.drawPlayerNames())
|
||||
text += actor.getName().replace('\u00A0', ' ');
|
||||
|
||||
Point textLocation = actor.getCanvasTextLocation(graphics, text, actor.getLogicalHeight() + 40);
|
||||
|
||||
if (textLocation != null)
|
||||
OverlayUtil.renderTextLocation(graphics, textLocation, text, color);
|
||||
}
|
||||
}
|
||||
@@ -1,136 +0,0 @@
|
||||
package net.runelite.client.plugins.pkvision;
|
||||
|
||||
import net.runelite.client.eventbus.Subscribe;
|
||||
import com.google.inject.Provides;
|
||||
import java.awt.Color;
|
||||
import javax.inject.Inject;
|
||||
import net.runelite.api.Client;
|
||||
import static net.runelite.api.MenuAction.*;
|
||||
import net.runelite.api.MenuEntry;
|
||||
import net.runelite.api.Player;
|
||||
import net.runelite.api.events.MenuEntryAdded;
|
||||
import net.runelite.client.config.ConfigManager;
|
||||
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.client.util.MiscUtils;
|
||||
import net.runelite.client.util.Text;
|
||||
|
||||
@PluginDescriptor(
|
||||
name = "PK Vision",
|
||||
description = "Highlight players on-screen and/or on the minimap",
|
||||
tags = {"highlight", "minimap", "overlay", "players", "pk", "helper", "vision", "bogla"},
|
||||
enabledByDefault = false,
|
||||
type = "PVP"
|
||||
)
|
||||
public class PKVisionPlugin extends Plugin
|
||||
{
|
||||
@Inject
|
||||
private OverlayManager overlayManager;
|
||||
|
||||
@Inject
|
||||
private PKVisionConfig config;
|
||||
|
||||
@Inject
|
||||
private PKVisionOverlay pkVisionOverlay;
|
||||
|
||||
@Inject
|
||||
private PKVisionTileOverlay pkVisionTileOverlay;
|
||||
|
||||
@Inject
|
||||
private PKVisionMinimapOverlay pkVisionMinimapOverlay;
|
||||
|
||||
@Inject
|
||||
private Client client;
|
||||
|
||||
@Provides
|
||||
PKVisionConfig provideConfig(ConfigManager configManager)
|
||||
{
|
||||
return configManager.getConfig(PKVisionConfig.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void startUp() throws Exception
|
||||
{
|
||||
overlayManager.add(pkVisionOverlay);
|
||||
overlayManager.add(pkVisionTileOverlay);
|
||||
overlayManager.add(pkVisionMinimapOverlay);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void shutDown() throws Exception
|
||||
{
|
||||
overlayManager.remove(pkVisionOverlay);
|
||||
overlayManager.remove(pkVisionTileOverlay);
|
||||
overlayManager.remove(pkVisionMinimapOverlay);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onMenuEntryAdded(MenuEntryAdded menuEntryAdded)
|
||||
{
|
||||
int type = menuEntryAdded.getType();
|
||||
String option = Text.removeTags(menuEntryAdded.getOption()).toLowerCase();
|
||||
|
||||
if (type >= 2000)
|
||||
type -= 2000;
|
||||
|
||||
int identifier = menuEntryAdded.getIdentifier();
|
||||
if (type == FOLLOW.getId() || type == TRADE.getId()
|
||||
|| type == ITEM_USE_ON_PLAYER.getId() || type == PLAYER_FIRST_OPTION.getId()
|
||||
|| type == PLAYER_SECOND_OPTION.getId() || type == PLAYER_THIRD_OPTION.getId()
|
||||
|| type == PLAYER_FOURTH_OPTION.getId() || type == PLAYER_FIFTH_OPTION.getId()
|
||||
|| type == PLAYER_SIXTH_OPTION.getId() || type == PLAYER_SEVENTH_OPTION.getId()
|
||||
|| type == PLAYER_EIGTH_OPTION.getId() || type == SPELL_CAST_ON_PLAYER.getId()
|
||||
|| type == RUNELITE.getId())
|
||||
{
|
||||
final Player localPlayer = client.getLocalPlayer();
|
||||
Player[] players = client.getCachedPlayers();
|
||||
Player player = null;
|
||||
|
||||
if (identifier >= 0 && identifier < players.length)
|
||||
player = players[identifier];
|
||||
|
||||
if (player == null)
|
||||
return;
|
||||
|
||||
Color color = null;
|
||||
|
||||
if (config.highlightFriends() && (player.isFriend() || player.isClanMember()))
|
||||
{
|
||||
color = config.getFriendColor();
|
||||
}
|
||||
else if (!player.isFriend() && !player.isClanMember())
|
||||
{
|
||||
int lvlDelta = player.getCombatLevel() - localPlayer.getCombatLevel();
|
||||
int wildyLvl = MiscUtils.getWildernessLevelFrom(client, player.getWorldLocation());
|
||||
|
||||
if (wildyLvl <= 0)
|
||||
return;
|
||||
|
||||
int R = MiscUtils.clamp((int)(((float)(lvlDelta + wildyLvl) / (float)(wildyLvl * 2)) * 255.f), 0, 255);
|
||||
int G = MiscUtils.clamp(255 - R, 0, 255);
|
||||
|
||||
if (Math.abs(lvlDelta) <= wildyLvl)
|
||||
color = Color.getHSBColor(Color.RGBtoHSB(R, G, 0, null)[0], 1.f, 1.f);
|
||||
}
|
||||
|
||||
if (color != null)
|
||||
{
|
||||
MenuEntry[] menuEntries = client.getMenuEntries();
|
||||
MenuEntry lastEntry = menuEntries[menuEntries.length - 1];
|
||||
|
||||
// strip out existing <col...
|
||||
String target = lastEntry.getTarget();
|
||||
int idx = target.indexOf('>');
|
||||
if (idx != -1)
|
||||
target = target.substring(idx + 1);
|
||||
|
||||
lastEntry.setTarget(ColorUtil.prependColorTag(target, color));
|
||||
|
||||
|
||||
client.setMenuEntries(menuEntries);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,63 +0,0 @@
|
||||
package net.runelite.client.plugins.pkvision;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.util.function.BiConsumer;
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.api.Player;
|
||||
import net.runelite.client.util.MiscUtils;
|
||||
|
||||
@Singleton
|
||||
public class PKVisionService
|
||||
{
|
||||
private final Client client;
|
||||
private final PKVisionConfig config;
|
||||
|
||||
@Inject
|
||||
private PKVisionService(Client client, PKVisionConfig config)
|
||||
{
|
||||
this.config = config;
|
||||
this.client = client;
|
||||
}
|
||||
|
||||
public void forEachPlayer(final BiConsumer<Player, Color> consumer)
|
||||
{
|
||||
final Player localPlayer = client.getLocalPlayer();
|
||||
|
||||
for (Player player : client.getPlayers())
|
||||
{
|
||||
if (player == null || player.getName() == null)
|
||||
continue;
|
||||
|
||||
if (player == localPlayer)
|
||||
{
|
||||
if (config.highlightOwnPlayer())
|
||||
consumer.accept(player, config.getOwnPlayerColor());
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if (config.highlightFriends() && (player.isFriend() || player.isClanMember()))
|
||||
{
|
||||
consumer.accept(player, config.getFriendColor());
|
||||
}
|
||||
else if (player != localPlayer && !player.isFriend() && !player.isClanMember())
|
||||
{
|
||||
int lvlDelta = player.getCombatLevel() - localPlayer.getCombatLevel();
|
||||
int wildyLvl = MiscUtils.getWildernessLevelFrom(client, player.getWorldLocation());
|
||||
|
||||
if (wildyLvl <= 0)
|
||||
continue;
|
||||
|
||||
if (Math.abs(lvlDelta) > wildyLvl)
|
||||
continue;
|
||||
|
||||
int R = MiscUtils.clamp((int)(((float)(lvlDelta + wildyLvl) / (float)(wildyLvl * 2)) * 255.f), 0, 255);
|
||||
int G = MiscUtils.clamp(255 - R, 0, 255);
|
||||
|
||||
consumer.accept(player, Color.getHSBColor(Color.RGBtoHSB(R, G, 0, null)[0], 1.f, 1.f));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,44 +0,0 @@
|
||||
package net.runelite.client.plugins.pkvision;
|
||||
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.Polygon;
|
||||
import javax.inject.Inject;
|
||||
import net.runelite.client.ui.overlay.Overlay;
|
||||
import net.runelite.client.ui.overlay.OverlayLayer;
|
||||
import net.runelite.client.ui.overlay.OverlayPosition;
|
||||
import net.runelite.client.ui.overlay.OverlayPriority;
|
||||
import net.runelite.client.ui.overlay.OverlayUtil;
|
||||
|
||||
public class PKVisionTileOverlay extends Overlay
|
||||
{
|
||||
private final PKVisionService pkVisionService;
|
||||
private final PKVisionConfig config;
|
||||
|
||||
@Inject
|
||||
private PKVisionTileOverlay(PKVisionConfig config, PKVisionService pkVisionService)
|
||||
{
|
||||
this.config = config;
|
||||
this.pkVisionService = pkVisionService;
|
||||
setLayer(OverlayLayer.ABOVE_SCENE);
|
||||
setPosition(OverlayPosition.DYNAMIC);
|
||||
setPriority(OverlayPriority.MED);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Dimension render(Graphics2D graphics)
|
||||
{
|
||||
if (!config.drawTiles())
|
||||
return null;
|
||||
|
||||
pkVisionService.forEachPlayer((player, color) ->
|
||||
{
|
||||
final Polygon poly = player.getCanvasTilePoly();
|
||||
|
||||
if (poly != null)
|
||||
OverlayUtil.renderPolygon(graphics, poly, color);
|
||||
});
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user