Merge remote-tracking branch 'runelite/master'
This commit is contained in:
@@ -57,6 +57,10 @@ public enum InventoryID
|
||||
* Looting Bag inventory
|
||||
*/
|
||||
LOOTING_BAG(516),
|
||||
/**
|
||||
* Kingdom Of Miscellania reward inventory.
|
||||
*/
|
||||
KINGDOM_OF_MISCELLANIA(390),
|
||||
/**
|
||||
* Chambers of Xeric chest inventory.
|
||||
*/
|
||||
|
||||
@@ -215,6 +215,8 @@ public class GpuPlugin extends Plugin implements DrawCallbacks
|
||||
|
||||
private int centerX;
|
||||
private int centerY;
|
||||
private int yaw;
|
||||
private int pitch;
|
||||
|
||||
// Uniforms
|
||||
private int uniUseFog;
|
||||
@@ -746,6 +748,8 @@ public class GpuPlugin extends Plugin implements DrawCallbacks
|
||||
{
|
||||
centerX = client.getCenterX();
|
||||
centerY = client.getCenterY();
|
||||
yaw = client.getCameraYaw();
|
||||
pitch = client.getCameraPitch();
|
||||
|
||||
final Scene scene = client.getScene();
|
||||
final int drawDistance = Math.max(0, Math.min(MAX_DISTANCE, this.drawDistance));
|
||||
@@ -945,8 +949,8 @@ public class GpuPlugin extends Plugin implements DrawCallbacks
|
||||
gl.glBindBuffer(gl.GL_UNIFORM_BUFFER, uniformBufferId);
|
||||
uniformBuffer.clear();
|
||||
uniformBuffer
|
||||
.put(client.getCameraYaw())
|
||||
.put(client.getCameraPitch())
|
||||
.put(yaw)
|
||||
.put(pitch)
|
||||
.put(centerX)
|
||||
.put(centerY)
|
||||
.put(client.getScale())
|
||||
|
||||
@@ -209,6 +209,7 @@ public class HunterPlugin extends Plugin
|
||||
case ObjectID.SHAKING_BOX: // Black chinchompa caught
|
||||
case ObjectID.SHAKING_BOX_9382: // Grey chinchompa caught
|
||||
case ObjectID.SHAKING_BOX_9383: // Red chinchompa caught
|
||||
case ObjectID.SHAKING_BOX_9384: // Ferret caught
|
||||
case ObjectID.BOULDER_20648: // Prickly kebbit caught
|
||||
case ObjectID.BOULDER_20649: // Sabre-tooth kebbit caught
|
||||
case ObjectID.BOULDER_20650: // Barb-tailed kebbit caught
|
||||
@@ -261,25 +262,30 @@ public class HunterPlugin extends Plugin
|
||||
// Imp entering box
|
||||
case ObjectID.MAGIC_BOX_19225:
|
||||
|
||||
// Black chin shaking box
|
||||
// Black chin shaking box
|
||||
case ObjectID.BOX_TRAP:
|
||||
case ObjectID.BOX_TRAP_2026:
|
||||
case ObjectID.BOX_TRAP_2028:
|
||||
case ObjectID.BOX_TRAP_2029:
|
||||
|
||||
// Red chin shaking box
|
||||
// Red chin shaking box
|
||||
case ObjectID.BOX_TRAP_9381:
|
||||
case ObjectID.BOX_TRAP_9390:
|
||||
case ObjectID.BOX_TRAP_9391:
|
||||
case ObjectID.BOX_TRAP_9392:
|
||||
case ObjectID.BOX_TRAP_9393:
|
||||
|
||||
// Grey chin shaking box
|
||||
// Grey chin shaking box
|
||||
case ObjectID.BOX_TRAP_9386:
|
||||
case ObjectID.BOX_TRAP_9387:
|
||||
case ObjectID.BOX_TRAP_9388:
|
||||
|
||||
// Bird traps
|
||||
// Ferret shaking box
|
||||
case ObjectID.BOX_TRAP_9394:
|
||||
case ObjectID.BOX_TRAP_9396:
|
||||
case ObjectID.BOX_TRAP_9397:
|
||||
|
||||
// Bird traps
|
||||
case ObjectID.BIRD_SNARE_9346:
|
||||
case ObjectID.BIRD_SNARE_9347:
|
||||
case ObjectID.BIRD_SNARE_9349:
|
||||
@@ -287,7 +293,7 @@ public class HunterPlugin extends Plugin
|
||||
case ObjectID.BIRD_SNARE_9376:
|
||||
case ObjectID.BIRD_SNARE_9378:
|
||||
|
||||
// Deadfall trap
|
||||
// Deadfall trap
|
||||
case ObjectID.DEADFALL_19218:
|
||||
case ObjectID.DEADFALL_19851:
|
||||
case ObjectID.DEADFALL_20128:
|
||||
@@ -295,7 +301,7 @@ public class HunterPlugin extends Plugin
|
||||
case ObjectID.DEADFALL_20130:
|
||||
case ObjectID.DEADFALL_20131:
|
||||
|
||||
// Net trap
|
||||
// Net trap
|
||||
case ObjectID.NET_TRAP_9003:
|
||||
case ObjectID.NET_TRAP_9005:
|
||||
case ObjectID.NET_TRAP_8972:
|
||||
@@ -305,7 +311,7 @@ public class HunterPlugin extends Plugin
|
||||
case ObjectID.NET_TRAP_8993:
|
||||
case ObjectID.NET_TRAP_8997:
|
||||
|
||||
// Maniacal monkey boulder trap
|
||||
// Maniacal monkey boulder trap
|
||||
case ObjectID.MONKEY_TRAP_28828:
|
||||
case ObjectID.MONKEY_TRAP_28829:
|
||||
if (myTrap != null)
|
||||
|
||||
@@ -77,6 +77,14 @@ class InventoryGridOverlay extends Overlay
|
||||
|
||||
final net.runelite.api.Point mouse = client.getMouseCanvasPosition();
|
||||
final Point mousePoint = new Point(mouse.getX(), mouse.getY());
|
||||
final int if1DraggedItemIndex = client.getIf1DraggedItemIndex();
|
||||
final WidgetItem draggedItem = inventoryWidget.getWidgetItem(if1DraggedItemIndex);
|
||||
final int itemId = draggedItem.getId();
|
||||
|
||||
if (itemId == -1)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
for (int i = 0; i < INVENTORY_SIZE; ++i)
|
||||
{
|
||||
@@ -87,8 +95,7 @@ class InventoryGridOverlay extends Overlay
|
||||
|
||||
if (plugin.isShowItem() && inBounds)
|
||||
{
|
||||
final WidgetItem draggedItem = inventoryWidget.getWidgetItem(client.getIf1DraggedItemIndex());
|
||||
final BufferedImage draggedItemImage = itemManager.getImage(draggedItem.getId());
|
||||
final BufferedImage draggedItemImage = itemManager.getImage(itemId);
|
||||
final int x = (int) bounds.getX();
|
||||
final int y = (int) bounds.getY();
|
||||
|
||||
|
||||
@@ -136,6 +136,12 @@ public class ItemStatChanges
|
||||
add(boost(MAGIC, perc(.15, 5)), SUPER_MAGIC_POTION_1, SUPER_MAGIC_POTION_2, SUPER_MAGIC_POTION_3, SUPER_MAGIC_POTION_4);
|
||||
add(combo(2, boost(RANGED, perc(0.1, 4)), boost(DEFENCE, perc(0.15, 5))), BASTION_POTION1, BASTION_POTION2, BASTION_POTION3, BASTION_POTION4);
|
||||
add(combo(2, boost(MAGIC, 4), boost(DEFENCE, perc(0.15, 5))), BATTLEMAGE_POTION1, BATTLEMAGE_POTION2, BATTLEMAGE_POTION3, BATTLEMAGE_POTION4);
|
||||
add(combo(boost(MAGIC, 4), heal(HITPOINTS, -10)), DIVINE_MAGIC_POTION1, DIVINE_MAGIC_POTION2, DIVINE_MAGIC_POTION3, DIVINE_MAGIC_POTION4);
|
||||
add(combo(boost(RANGED, perc(.10, 4)), heal(HITPOINTS, -10)), DIVINE_RANGING_POTION1, DIVINE_RANGING_POTION2, DIVINE_RANGING_POTION3, DIVINE_RANGING_POTION4);
|
||||
add(combo(boost(ATTACK, perc(.15, 5)), heal(HITPOINTS, -10)), DIVINE_SUPER_ATTACK_POTION1, DIVINE_SUPER_ATTACK_POTION2, DIVINE_SUPER_ATTACK_POTION3, DIVINE_SUPER_ATTACK_POTION4);
|
||||
add(combo(boost(STRENGTH, perc(.15, 5)), heal(HITPOINTS, -10)), DIVINE_SUPER_STRENGTH_POTION1, DIVINE_SUPER_STRENGTH_POTION2, DIVINE_SUPER_STRENGTH_POTION3, DIVINE_SUPER_STRENGTH_POTION4);
|
||||
add(combo(boost(DEFENCE, perc(.15, 5)), heal(HITPOINTS, -10)), DIVINE_SUPER_DEFENCE_POTION1, DIVINE_SUPER_DEFENCE_POTION2, DIVINE_SUPER_DEFENCE_POTION3, DIVINE_SUPER_DEFENCE_POTION4);
|
||||
add(combo(3, boost(ATTACK, perc(.15, 5)), boost(STRENGTH, perc(.15, 5)), boost(DEFENCE, perc(.15, 5)), heal(HITPOINTS, -10)), DIVINE_SUPER_COMBAT_POTION1, DIVINE_SUPER_COMBAT_POTION2, DIVINE_SUPER_COMBAT_POTION3, DIVINE_SUPER_COMBAT_POTION4);
|
||||
|
||||
// Regular overload (NMZ)
|
||||
add(combo(5, boost(ATTACK, perc(.15, 5)), boost(STRENGTH, perc(.15, 5)), boost(DEFENCE, perc(.15, 5)), boost(RANGED, perc(.15, 5)), boost(MAGIC, perc(.15, 5)), heal(HITPOINTS, -50)), OVERLOAD_1, OVERLOAD_2, OVERLOAD_3, OVERLOAD_4);
|
||||
|
||||
@@ -181,10 +181,16 @@ class KeyRemappingListener extends MouseAdapter implements KeyListener
|
||||
switch (e.getKeyCode())
|
||||
{
|
||||
case KeyEvent.VK_ESCAPE:
|
||||
// When existing typing mode, block the escape key
|
||||
// When exiting typing mode, block the escape key
|
||||
// so that it doesn't trigger the in-game hotkeys
|
||||
e.consume();
|
||||
// FALLTHROUGH
|
||||
plugin.setTyping(false);
|
||||
clientThread.invoke(() ->
|
||||
{
|
||||
client.setVar(VarClientStr.CHATBOX_TYPED_TEXT, "");
|
||||
plugin.lockChat();
|
||||
});
|
||||
break;
|
||||
case KeyEvent.VK_ENTER:
|
||||
plugin.setTyping(false);
|
||||
clientThread.invoke(plugin::lockChat);
|
||||
|
||||
@@ -141,6 +141,8 @@ public class KeyRemappingPlugin extends Plugin
|
||||
if (client.getGameState() == GameState.LOGGED_IN)
|
||||
{
|
||||
lockChat();
|
||||
// Clear any typed text
|
||||
client.setVar(VarClientStr.CHATBOX_TYPED_TEXT, "");
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -255,8 +257,6 @@ public class KeyRemappingPlugin extends Plugin
|
||||
if (chatboxInput != null)
|
||||
{
|
||||
chatboxInput.setText(getWaitingText());
|
||||
// Typed text can be non-empty on plugin start, so clear it now
|
||||
client.setVar(VarClientStr.CHATBOX_TYPED_TEXT, "");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@ package net.runelite.client.plugins.loottracker;
|
||||
import com.google.common.base.Strings;
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Color;
|
||||
import java.awt.Component;
|
||||
import java.awt.GridLayout;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.text.DateFormat;
|
||||
@@ -62,6 +63,8 @@ class LootTrackerBox extends JPanel
|
||||
private final JLabel priceLabel = new JLabel();
|
||||
private final JLabel subTitleLabel = new JLabel();
|
||||
private final JLabel dateLabel = new JLabel();
|
||||
private final JPanel logTitle = new JPanel(new BorderLayout(5, 0));
|
||||
private final JLabel titleLabel = new JLabel();
|
||||
private final ItemManager itemManager;
|
||||
@Getter(AccessLevel.PACKAGE)
|
||||
private final String id;
|
||||
@@ -92,11 +95,10 @@ class LootTrackerBox extends JPanel
|
||||
setLayout(new BorderLayout(0, 1));
|
||||
setBorder(new EmptyBorder(5, 0, 0, 0));
|
||||
|
||||
final JPanel logTitle = new JPanel(new BorderLayout(5, 0));
|
||||
logTitle.setBorder(new EmptyBorder(7, 7, 7, 7));
|
||||
logTitle.setBackground(ColorScheme.DARKER_GRAY_COLOR.darker());
|
||||
|
||||
final JLabel titleLabel = new JLabel(Text.removeTags(id));
|
||||
titleLabel.setText(Text.removeTags(id));
|
||||
titleLabel.setFont(FontManager.getRunescapeSmallFont());
|
||||
titleLabel.setForeground(Color.WHITE);
|
||||
|
||||
@@ -201,6 +203,39 @@ class LootTrackerBox extends JPanel
|
||||
repaint();
|
||||
}
|
||||
|
||||
void collapse()
|
||||
{
|
||||
if (!isCollapsed())
|
||||
{
|
||||
itemContainer.setVisible(false);
|
||||
applyDimmer(false, logTitle);
|
||||
}
|
||||
}
|
||||
|
||||
void expand()
|
||||
{
|
||||
if (isCollapsed())
|
||||
{
|
||||
itemContainer.setVisible(true);
|
||||
applyDimmer(true, logTitle);
|
||||
}
|
||||
}
|
||||
|
||||
boolean isCollapsed()
|
||||
{
|
||||
return !itemContainer.isVisible();
|
||||
}
|
||||
|
||||
private void applyDimmer(boolean brighten, JPanel panel)
|
||||
{
|
||||
for (Component component : panel.getComponents())
|
||||
{
|
||||
Color color = component.getForeground();
|
||||
|
||||
component.setForeground(brighten ? color.brighter() : color.darker());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This method creates stacked items from the item list, calculates total price and then
|
||||
* displays all the items in the UI.
|
||||
|
||||
@@ -84,6 +84,8 @@ class LootTrackerPanel extends PluginPanel
|
||||
private static final ImageIcon RESET_ICON;
|
||||
private static final ImageIcon RESET_ICON_FADED;
|
||||
private static final ImageIcon RESET_ICON_HOVER;
|
||||
private static final ImageIcon COLLAPSE_ICON;
|
||||
private static final ImageIcon EXPAND_ICON;
|
||||
|
||||
|
||||
private static final String HTML_LABEL_TEMPLATE =
|
||||
@@ -109,7 +111,8 @@ class LootTrackerPanel extends PluginPanel
|
||||
private final JLabel singleLootBtn = new JLabel();
|
||||
private final JLabel groupedLootBtn = new JLabel();
|
||||
private final JLabel resetIcon = new JLabel();
|
||||
private JComboBox dateFilterComboBox = new JComboBox<>(new Vector<LootRecordDateFilter>(Arrays.asList(LootRecordDateFilter.values())));
|
||||
private final JLabel collapseBtn = new JLabel();
|
||||
private JComboBox dateFilterComboBox = new JComboBox<>(new Vector<>(Arrays.asList(LootRecordDateFilter.values())));
|
||||
|
||||
// Log collection
|
||||
private final List<LootTrackerRecord> records = new ArrayList<>();
|
||||
@@ -133,6 +136,8 @@ class LootTrackerPanel extends PluginPanel
|
||||
final BufferedImage visibleImg = ImageUtil.getResourceStreamFromClass(LootTrackerPlugin.class, "visible_icon.png");
|
||||
final BufferedImage invisibleImg = ImageUtil.getResourceStreamFromClass(LootTrackerPlugin.class, "invisible_icon.png");
|
||||
final BufferedImage resetImg = ImageUtil.getResourceStreamFromClass(LootTrackerPlugin.class, "delete-white.png");
|
||||
final BufferedImage collapseImg = ImageUtil.getResourceStreamFromClass(LootTrackerPlugin.class, "collapsed.png");
|
||||
final BufferedImage expandedImg = ImageUtil.getResourceStreamFromClass(LootTrackerPlugin.class, "expanded.png");
|
||||
|
||||
SINGLE_LOOT_VIEW = new ImageIcon(singleLootImg);
|
||||
SINGLE_LOOT_VIEW_FADED = new ImageIcon(ImageUtil.alphaOffset(singleLootImg, -180));
|
||||
@@ -155,9 +160,13 @@ class LootTrackerPanel extends PluginPanel
|
||||
|
||||
INVISIBLE_ICON = new ImageIcon(invisibleImg);
|
||||
INVISIBLE_ICON_HOVER = new ImageIcon(ImageUtil.alphaOffset(invisibleImg, -220));
|
||||
|
||||
COLLAPSE_ICON = new ImageIcon(collapseImg);
|
||||
EXPAND_ICON = new ImageIcon(expandedImg);
|
||||
}
|
||||
|
||||
@Getter @Setter
|
||||
@Getter
|
||||
@Setter
|
||||
private LootRecordSortType lootRecordSortType = LootRecordSortType.TIMESTAMP;
|
||||
|
||||
LootTrackerPanel(final LootTrackerPlugin plugin, final ItemManager itemManager, final LootTrackerConfig config)
|
||||
@@ -185,6 +194,16 @@ class LootTrackerPanel extends PluginPanel
|
||||
final JPanel viewControls = new JPanel(new GridLayout(1, 5, 5, 0));
|
||||
viewControls.setBackground(ColorScheme.DARKER_GRAY_COLOR);
|
||||
|
||||
collapseBtn.setIcon(EXPAND_ICON);
|
||||
collapseBtn.addMouseListener(new MouseAdapter()
|
||||
{
|
||||
@Override
|
||||
public void mousePressed(MouseEvent e)
|
||||
{
|
||||
changeCollapse();
|
||||
}
|
||||
});
|
||||
|
||||
singleLootBtn.setIcon(SINGLE_LOOT_VIEW);
|
||||
singleLootBtn.setToolTipText("Show each kill separately");
|
||||
singleLootBtn.addMouseListener(new MouseAdapter()
|
||||
@@ -282,13 +301,14 @@ class LootTrackerPanel extends PluginPanel
|
||||
dateFilterComboBox.setMaximumSize(new Dimension(15, 0));
|
||||
dateFilterComboBox.setMaximumRowCount(3);
|
||||
dateFilterComboBox.addItemListener(e ->
|
||||
{
|
||||
final LootRecordDateFilter dateFilterSelected = (LootRecordDateFilter) e.getItem();
|
||||
dateFilter = dateFilterSelected;
|
||||
rebuild();
|
||||
}
|
||||
{
|
||||
final LootRecordDateFilter dateFilterSelected = (LootRecordDateFilter) e.getItem();
|
||||
dateFilter = dateFilterSelected;
|
||||
rebuild();
|
||||
}
|
||||
);
|
||||
|
||||
viewControls.add(collapseBtn);
|
||||
//viewControls.add(dateFilterComboBox);
|
||||
viewControls.add(resetIcon);
|
||||
viewControls.add(groupedLootBtn);
|
||||
@@ -332,8 +352,8 @@ class LootTrackerPanel extends PluginPanel
|
||||
leftTitleContainer.add(detailsTitle, BorderLayout.CENTER);
|
||||
|
||||
actionsContainer.add(dateFilterComboBox);
|
||||
actionsContainer.add(leftTitleContainer, BorderLayout.WEST);
|
||||
actionsContainer.add(viewControls, BorderLayout.EAST);
|
||||
actionsContainer.add(leftTitleContainer, BorderLayout.WEST);
|
||||
|
||||
// Create panel that will contain overall data
|
||||
overallPanel.setBorder(BorderFactory.createCompoundBorder(
|
||||
@@ -399,6 +419,27 @@ class LootTrackerPanel extends PluginPanel
|
||||
actionsContainer.setVisible(true);
|
||||
}
|
||||
|
||||
void updateCollapseText()
|
||||
{
|
||||
if (isAllCollapsed())
|
||||
{
|
||||
collapseBtn.setToolTipText("Un-Collapse All");
|
||||
collapseBtn.setIcon(COLLAPSE_ICON);
|
||||
}
|
||||
else
|
||||
{
|
||||
collapseBtn.setToolTipText("Collapse All");
|
||||
collapseBtn.setIcon(EXPAND_ICON);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isAllCollapsed()
|
||||
{
|
||||
return boxes.stream()
|
||||
.filter(i -> i.isCollapsed())
|
||||
.count() == boxes.size();
|
||||
}
|
||||
|
||||
void loadHeaderIcon(BufferedImage img)
|
||||
{
|
||||
overallIcon.setIcon(new ImageIcon(img));
|
||||
@@ -412,7 +453,7 @@ class LootTrackerPanel extends PluginPanel
|
||||
void add(final String eventName, final String localUsername, final int actorLevel, LootTrackerItem[] items)
|
||||
{
|
||||
final String subTitle = actorLevel > -1 ? "(lvl-" + actorLevel + ")" : "";
|
||||
final LootTrackerRecord record = new LootTrackerRecord( eventName, localUsername, subTitle, items, Instant.now());
|
||||
final LootTrackerRecord record = new LootTrackerRecord(eventName, localUsername, subTitle, items, Instant.now());
|
||||
records.add(record);
|
||||
LootTrackerBox box = buildBox(record);
|
||||
if (box != null)
|
||||
@@ -468,6 +509,28 @@ class LootTrackerPanel extends PluginPanel
|
||||
plugin.deleteLocalRecords();
|
||||
}
|
||||
|
||||
/**
|
||||
* Changes the collapse status of loot entries
|
||||
*/
|
||||
private void changeCollapse()
|
||||
{
|
||||
boolean isAllCollapsed = isAllCollapsed();
|
||||
|
||||
for (LootTrackerBox box : boxes)
|
||||
{
|
||||
if (isAllCollapsed)
|
||||
{
|
||||
box.expand();
|
||||
}
|
||||
else if (!box.isCollapsed())
|
||||
{
|
||||
box.collapse();
|
||||
}
|
||||
}
|
||||
|
||||
updateCollapseText();
|
||||
}
|
||||
|
||||
/**
|
||||
* After an item changed it's ignored state, iterate all the records and make
|
||||
* sure all items of the same name also get updated
|
||||
@@ -477,11 +540,13 @@ class LootTrackerPanel extends PluginPanel
|
||||
for (LootTrackerRecord r : records)
|
||||
{
|
||||
if (plugin.isIgnoredNPC(r.getTitle()))
|
||||
for (LootTrackerItem item : r.getItems())
|
||||
{
|
||||
if (plugin.isIgnored(item.getName()) != item.isIgnored())
|
||||
for (LootTrackerItem item : r.getItems())
|
||||
{
|
||||
item.setIgnored(plugin.isIgnored(item.getName()));
|
||||
if (plugin.isIgnored(item.getName()) != item.isIgnored())
|
||||
{
|
||||
item.setIgnored(plugin.isIgnored(item.getName()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -544,15 +609,11 @@ class LootTrackerPanel extends PluginPanel
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
boxes.forEach(LootTrackerBox::rebuild);
|
||||
updateOverall();
|
||||
logsContainer.revalidate();
|
||||
logsContainer.repaint();
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -606,7 +667,7 @@ class LootTrackerPanel extends PluginPanel
|
||||
overallPanel.setVisible(true);
|
||||
|
||||
// Create box
|
||||
final LootTrackerBox box = new LootTrackerBox(record.getTimestamp().toEpochMilli(), itemManager, record.getTitle(), record.getSubTitle(),
|
||||
final LootTrackerBox box = new LootTrackerBox(record.getTimestamp().toEpochMilli(), itemManager, record.getTitle(), record.getSubTitle(),
|
||||
hideIgnoredItems, config.displayDate(), plugin::toggleItem);
|
||||
box.combine(record);
|
||||
|
||||
@@ -615,6 +676,27 @@ class LootTrackerPanel extends PluginPanel
|
||||
popupMenu.setBorder(new EmptyBorder(5, 5, 5, 5));
|
||||
box.setComponentPopupMenu(popupMenu);
|
||||
|
||||
// Create collapse event
|
||||
box.addMouseListener(new MouseAdapter()
|
||||
{
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent e)
|
||||
{
|
||||
if (e.getButton() == MouseEvent.BUTTON1)
|
||||
{
|
||||
if (box.isCollapsed())
|
||||
{
|
||||
box.expand();
|
||||
}
|
||||
else
|
||||
{
|
||||
box.collapse();
|
||||
}
|
||||
updateCollapseText();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Create Hide Menu item
|
||||
|
||||
final JMenuItem hide;
|
||||
@@ -737,7 +819,10 @@ class LootTrackerPanel extends PluginPanel
|
||||
|
||||
overallKillsLabel.setText(htmlLabel("Total count: ", overallKills));
|
||||
overallGpLabel.setText(htmlLabel("Total value: ", overallGp));
|
||||
|
||||
updateCollapseText();
|
||||
}
|
||||
|
||||
private static String htmlLabel(String key, long value)
|
||||
{
|
||||
final String valueStr = StackFormatter.quantityToStackSize(value);
|
||||
|
||||
@@ -629,6 +629,10 @@ public class LootTrackerPlugin extends Plugin
|
||||
// Clue Scrolls use same InventoryID as Barrows
|
||||
container = client.getItemContainer(InventoryID.BARROWS_REWARD);
|
||||
break;
|
||||
case (WidgetID.KINGDOM_GROUP_ID):
|
||||
eventType = "Kingdom of Miscellania";
|
||||
container = client.getItemContainer(InventoryID.KINGDOM_OF_MISCELLANIA);
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1150,7 +1150,8 @@ public class SlayerPlugin extends Plugin
|
||||
}
|
||||
|
||||
if (TASK_STRING_VALIDATION.matcher(task.getTask()).find() || task.getTask().length() > TASK_STRING_MAX_LENGTH ||
|
||||
TASK_STRING_VALIDATION.matcher(task.getLocation()).find() || task.getLocation().length() > TASK_STRING_MAX_LENGTH)
|
||||
TASK_STRING_VALIDATION.matcher(task.getLocation()).find() || task.getLocation().length() > TASK_STRING_MAX_LENGTH ||
|
||||
Task.getTask(task.getTask()) == null || !Task.LOCATIONS.contains(task.getLocation()))
|
||||
{
|
||||
log.debug("Validation failed for task name or location: {}", task);
|
||||
return;
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
package net.runelite.client.plugins.slayer;
|
||||
|
||||
import com.google.common.base.Preconditions;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import java.util.ArrayList;
|
||||
import static java.util.Arrays.asList;
|
||||
@@ -242,6 +243,48 @@ enum Task
|
||||
//</editor-fold>
|
||||
|
||||
private static final Map<String, Task> tasks;
|
||||
static final List<String> LOCATIONS = ImmutableList.of(
|
||||
"", // no location is a valid location
|
||||
"Abyss",
|
||||
"Ancient Cavern",
|
||||
"Asgarnian Ice Dungeon",
|
||||
"Brimhaven Dungeon",
|
||||
"Brine Rat Cavern",
|
||||
"Catacombs of Kourend",
|
||||
"Chasm of Fire",
|
||||
"Clan Wars",
|
||||
"Death Plateau",
|
||||
"Evil Chicken's Lair",
|
||||
"Fossil Island",
|
||||
"Fremennik Slayer Dungeon",
|
||||
"God Wars Dungeon",
|
||||
"Iorwerth Dungeon",
|
||||
"Kalphite Lair",
|
||||
"Karuulm Slayer Dungeon",
|
||||
"Keldagrim",
|
||||
"Kraken Cove",
|
||||
"Lighthouse",
|
||||
"Lithkren Vault",
|
||||
"Lizardman Canyon",
|
||||
"Lizardman Settlement",
|
||||
"Molch",
|
||||
"Mount Quidamortem",
|
||||
"Mourner Tunnels",
|
||||
"Ogre Enclave",
|
||||
"Slayer Tower",
|
||||
"Smoke Devil Dungeon",
|
||||
"Smoke Dungeon",
|
||||
"Stronghold of Security",
|
||||
"Stronghold Slayer Dungeon",
|
||||
"task-only Kalphite Cave",
|
||||
"Taverley Dungeon",
|
||||
"Troll Stronghold",
|
||||
"Waterbirth Island",
|
||||
"Waterfall Dungeon",
|
||||
"Wilderness",
|
||||
"Witchaven Dungeon",
|
||||
"Zanaris"
|
||||
);
|
||||
|
||||
private final String name;
|
||||
private final int itemSpriteId;
|
||||
|
||||
@@ -26,12 +26,16 @@ package net.runelite.client.ui.overlay;
|
||||
|
||||
import com.google.common.base.MoreObjects;
|
||||
import java.awt.Color;
|
||||
import java.awt.Composite;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Font;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.Paint;
|
||||
import java.awt.Point;
|
||||
import java.awt.Rectangle;
|
||||
import java.awt.Toolkit;
|
||||
import java.awt.RenderingHints;
|
||||
import java.awt.Stroke;
|
||||
import java.awt.event.KeyEvent;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.awt.geom.AffineTransform;
|
||||
@@ -145,7 +149,7 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener
|
||||
}
|
||||
}
|
||||
|
||||
protected void onClientTick(ClientTick t)
|
||||
private void onClientTick(ClientTick t)
|
||||
{
|
||||
if (menuEntries == null)
|
||||
{
|
||||
@@ -499,11 +503,15 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener
|
||||
graphics.setFont(this.interfaceFont);
|
||||
}
|
||||
|
||||
// Reset the default color
|
||||
graphics.setColor(Color.WHITE);
|
||||
// Save graphics2d properties so we can restore them later
|
||||
final AffineTransform transform = graphics.getTransform();
|
||||
final Stroke stroke = graphics.getStroke();
|
||||
final Composite composite = graphics.getComposite();
|
||||
final Paint paint = graphics.getPaint();
|
||||
final Color color = graphics.getColor();
|
||||
final RenderingHints renderingHints = graphics.getRenderingHints();
|
||||
final Color background = graphics.getBackground();
|
||||
|
||||
// Get transform so we can reset it after drawing
|
||||
AffineTransform transform = graphics.getTransform();
|
||||
graphics.translate(point.x, point.y);
|
||||
|
||||
final Dimension overlayDimension;
|
||||
@@ -518,7 +526,14 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener
|
||||
}
|
||||
finally
|
||||
{
|
||||
// Restore graphics2d properties
|
||||
graphics.setTransform(transform);
|
||||
graphics.setStroke(stroke);
|
||||
graphics.setComposite(composite);
|
||||
graphics.setPaint(paint);
|
||||
graphics.setColor(color);
|
||||
graphics.setRenderingHints(renderingHints);
|
||||
graphics.setBackground(background);
|
||||
}
|
||||
|
||||
final Dimension dimension = MoreObjects.firstNonNull(overlayDimension, new Dimension());
|
||||
|
||||
@@ -4087,5 +4087,10 @@
|
||||
"22622": 10,
|
||||
"22634": 100,
|
||||
"22636": 100,
|
||||
"22647": 10
|
||||
"22647": 10,
|
||||
"23499": 11000,
|
||||
"23517": 100,
|
||||
"23522": 70,
|
||||
"23525": 4,
|
||||
"23528": 70
|
||||
}
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 131 B |
Binary file not shown.
|
After Width: | Height: | Size: 161 B |
@@ -510,6 +510,12 @@
|
||||
"name": "Amethyst Arrow",
|
||||
"xp": 13.5
|
||||
},
|
||||
{
|
||||
"level": 84,
|
||||
"icon": 21930,
|
||||
"name": "Dragon Bolts",
|
||||
"xp": 12
|
||||
},
|
||||
{
|
||||
"level": 84,
|
||||
"icon": 21318,
|
||||
|
||||
@@ -276,6 +276,12 @@
|
||||
"name": "Stamina Potion (3)",
|
||||
"xp": 76.5
|
||||
},
|
||||
{
|
||||
"level": 77,
|
||||
"icon": 12625,
|
||||
"name": "Stamina Potion (4)",
|
||||
"xp": 102
|
||||
},
|
||||
{
|
||||
"level": 78,
|
||||
"icon": 189,
|
||||
|
||||
@@ -407,8 +407,8 @@ public class SlayerPluginTest
|
||||
public void testTaskLookup() throws IOException
|
||||
{
|
||||
net.runelite.http.api.chat.Task task = new net.runelite.http.api.chat.Task();
|
||||
task.setTask("task");
|
||||
task.setLocation("loc");
|
||||
task.setTask("Abyssal demons");
|
||||
task.setLocation("Abyss");
|
||||
task.setAmount(42);
|
||||
task.setInitialAmount(42);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user