Config && easyscape (#309)
* Add back config groups * Use a JSider when there is a max value known * update Easyscape * Add JSlider to changeConfiguration
This commit is contained in:
@@ -30,6 +30,7 @@ import java.awt.BorderLayout;
|
|||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Component;
|
import java.awt.Component;
|
||||||
import java.awt.Dimension;
|
import java.awt.Dimension;
|
||||||
|
import java.awt.Insets;
|
||||||
import java.awt.event.FocusAdapter;
|
import java.awt.event.FocusAdapter;
|
||||||
import java.awt.event.FocusEvent;
|
import java.awt.event.FocusEvent;
|
||||||
import java.awt.event.ItemEvent;
|
import java.awt.event.ItemEvent;
|
||||||
@@ -49,12 +50,14 @@ import javax.swing.ImageIcon;
|
|||||||
import javax.swing.JButton;
|
import javax.swing.JButton;
|
||||||
import javax.swing.JCheckBox;
|
import javax.swing.JCheckBox;
|
||||||
import javax.swing.JComboBox;
|
import javax.swing.JComboBox;
|
||||||
|
import javax.swing.JComponent;
|
||||||
import javax.swing.JFormattedTextField;
|
import javax.swing.JFormattedTextField;
|
||||||
import javax.swing.JLabel;
|
import javax.swing.JLabel;
|
||||||
import javax.swing.JOptionPane;
|
import javax.swing.JOptionPane;
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
import javax.swing.JPasswordField;
|
import javax.swing.JPasswordField;
|
||||||
import javax.swing.JScrollPane;
|
import javax.swing.JScrollPane;
|
||||||
|
import javax.swing.JSlider;
|
||||||
import javax.swing.JSpinner;
|
import javax.swing.JSpinner;
|
||||||
import javax.swing.JTextArea;
|
import javax.swing.JTextArea;
|
||||||
import javax.swing.ScrollPaneConstants;
|
import javax.swing.ScrollPaneConstants;
|
||||||
@@ -72,6 +75,7 @@ import net.runelite.client.config.Config;
|
|||||||
import net.runelite.client.config.ConfigDescriptor;
|
import net.runelite.client.config.ConfigDescriptor;
|
||||||
import net.runelite.client.config.ConfigGroup;
|
import net.runelite.client.config.ConfigGroup;
|
||||||
import net.runelite.client.config.ConfigItem;
|
import net.runelite.client.config.ConfigItem;
|
||||||
|
import net.runelite.client.config.ConfigItemsGroup;
|
||||||
import net.runelite.client.config.ConfigItemDescriptor;
|
import net.runelite.client.config.ConfigItemDescriptor;
|
||||||
import net.runelite.client.config.ConfigManager;
|
import net.runelite.client.config.ConfigManager;
|
||||||
import net.runelite.client.config.Keybind;
|
import net.runelite.client.config.Keybind;
|
||||||
@@ -413,223 +417,279 @@ public class ConfigPanel extends PluginPanel
|
|||||||
title.setToolTipText("<html>" + name + ":<br>" + listItem.getDescription() + "</html>");
|
title.setToolTipText("<html>" + name + ":<br>" + listItem.getDescription() + "</html>");
|
||||||
topPanel.add(title);
|
topPanel.add(title);
|
||||||
|
|
||||||
for (ConfigItemDescriptor cid : cd.getItems())
|
for (ConfigItemsGroup cig : cd.getItemGroups())
|
||||||
{
|
{
|
||||||
if (cid.getItem().hidden())
|
boolean collapsed = false;
|
||||||
|
if (!cig.getGroup().equals(""))
|
||||||
{
|
{
|
||||||
|
String header = cig.getGroup();
|
||||||
|
|
||||||
|
JPanel item = new JPanel();
|
||||||
|
item.setLayout(new BorderLayout());
|
||||||
|
item.setMinimumSize(new Dimension(PANEL_WIDTH, 0));
|
||||||
|
|
||||||
|
JLabel headerLabel = new JLabel(header);
|
||||||
|
headerLabel.setForeground(Color.ORANGE);
|
||||||
|
headerLabel.setPreferredSize(new Dimension(PANEL_WIDTH, (int)headerLabel.getPreferredSize().getHeight()));
|
||||||
|
String sCollapsed = configManager.getConfiguration(cd.getGroup().value(), cig.getGroup() + "_collapse");
|
||||||
|
|
||||||
|
if (sCollapsed != null)
|
||||||
|
collapsed = Boolean.parseBoolean(sCollapsed);
|
||||||
|
|
||||||
|
JButton collapse = new JButton(collapsed ? "+" : "-");
|
||||||
|
collapse.setPreferredSize(new Dimension(20, 20));
|
||||||
|
collapse.setFont(collapse.getFont().deriveFont(16.0f));
|
||||||
|
collapse.setBorder(null);
|
||||||
|
collapse.setMargin(new Insets(0, 0, 0, 0));
|
||||||
|
collapse.addActionListener(ae -> changeGroupCollapse(listItem, config, collapse, cd, cig));
|
||||||
|
headerLabel.setBorder(new EmptyBorder(0, 10, 0, 0));
|
||||||
|
|
||||||
|
item.add(collapse, BorderLayout.WEST);
|
||||||
|
item.add(headerLabel, BorderLayout.CENTER);
|
||||||
|
|
||||||
|
mainPanel.add(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (collapsed)
|
||||||
continue;
|
continue;
|
||||||
}
|
|
||||||
|
|
||||||
JPanel item = new JPanel();
|
for (ConfigItemDescriptor cid : cig.getItems())
|
||||||
item.setLayout(new BorderLayout());
|
|
||||||
item.setMinimumSize(new Dimension(PANEL_WIDTH, 0));
|
|
||||||
name = cid.getItem().name();
|
|
||||||
JLabel configEntryName = new JLabel(name);
|
|
||||||
configEntryName.setForeground(Color.WHITE);
|
|
||||||
configEntryName.setToolTipText("<html>" + name + ":<br>" + cid.getItem().description() + "</html>");
|
|
||||||
item.add(configEntryName, BorderLayout.CENTER);
|
|
||||||
|
|
||||||
if (cid.getType() == boolean.class)
|
|
||||||
{
|
{
|
||||||
JCheckBox checkbox = new JCheckBox();
|
if (cid.getItem().hidden())
|
||||||
checkbox.setBackground(ColorScheme.LIGHT_GRAY_COLOR);
|
|
||||||
checkbox.setSelected(Boolean.parseBoolean(configManager.getConfiguration(cd.getGroup().value(), cid.getItem().keyName())));
|
|
||||||
checkbox.addActionListener(ae -> changeConfiguration(listItem, config, checkbox, cd, cid));
|
|
||||||
|
|
||||||
item.add(checkbox, BorderLayout.EAST);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cid.getType() == int.class)
|
|
||||||
{
|
|
||||||
int value = Integer.parseInt(configManager.getConfiguration(cd.getGroup().value(), cid.getItem().keyName()));
|
|
||||||
|
|
||||||
Range range = cid.getRange();
|
|
||||||
int min = 0, max = Integer.MAX_VALUE;
|
|
||||||
if (range != null)
|
|
||||||
{
|
{
|
||||||
min = range.min();
|
continue;
|
||||||
max = range.max();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Config may previously have been out of range
|
JPanel item = new JPanel();
|
||||||
value = Ints.constrainToRange(value, min, max);
|
item.setLayout(new BorderLayout());
|
||||||
|
item.setMinimumSize(new Dimension(PANEL_WIDTH, 0));
|
||||||
|
name = cid.getItem().name();
|
||||||
|
JLabel configEntryName = new JLabel(name);
|
||||||
|
configEntryName.setPreferredSize(new Dimension(PANEL_WIDTH, (int)configEntryName.getPreferredSize().getHeight()));
|
||||||
|
configEntryName.setForeground(Color.WHITE);
|
||||||
|
configEntryName.setToolTipText("<html>" + name + ":<br>" + cid.getItem().description() + "</html>");
|
||||||
|
item.add(configEntryName, BorderLayout.CENTER);
|
||||||
|
|
||||||
SpinnerModel model = new SpinnerNumberModel(value, min, max, 1);
|
if (cid.getType() == boolean.class)
|
||||||
JSpinner spinner = new JSpinner(model);
|
|
||||||
Component editor = spinner.getEditor();
|
|
||||||
JFormattedTextField spinnerTextField = ((JSpinner.DefaultEditor) editor).getTextField();
|
|
||||||
spinnerTextField.setColumns(SPINNER_FIELD_WIDTH);
|
|
||||||
spinner.addChangeListener(ce -> changeConfiguration(listItem, config, spinner, cd, cid));
|
|
||||||
|
|
||||||
item.add(spinner, BorderLayout.EAST);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cid.getType() == String.class)
|
|
||||||
{
|
|
||||||
JTextComponent textField;
|
|
||||||
|
|
||||||
if (cid.getItem().secret())
|
|
||||||
{
|
{
|
||||||
textField = new JPasswordField();
|
JCheckBox checkbox = new JCheckBox();
|
||||||
}
|
checkbox.setBackground(ColorScheme.LIGHT_GRAY_COLOR);
|
||||||
else
|
checkbox.setSelected(Boolean.parseBoolean(configManager.getConfiguration(cd.getGroup().value(), cid.getItem().keyName())));
|
||||||
{
|
checkbox.addActionListener(ae -> changeConfiguration(listItem, config, checkbox, cd, cid));
|
||||||
final JTextArea textArea = new JTextArea();
|
|
||||||
textArea.setLineWrap(true);
|
item.add(checkbox, BorderLayout.EAST);
|
||||||
textArea.setWrapStyleWord(true);
|
|
||||||
textField = textArea;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
textField.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
|
if (cid.getType() == int.class)
|
||||||
textField.setText(configManager.getConfiguration(cd.getGroup().value(), cid.getItem().keyName()));
|
|
||||||
|
|
||||||
textField.addFocusListener(new FocusAdapter()
|
|
||||||
{
|
{
|
||||||
@Override
|
int value = Integer.parseInt(configManager.getConfiguration(cd.getGroup().value(), cid.getItem().keyName()));
|
||||||
public void focusLost(FocusEvent e)
|
|
||||||
|
Range range = cid.getRange();
|
||||||
|
int min = 0, max = Integer.MAX_VALUE;
|
||||||
|
if (range != null)
|
||||||
{
|
{
|
||||||
changeConfiguration(listItem, config, textField, cd, cid);
|
min = range.min();
|
||||||
|
max = range.max();
|
||||||
}
|
}
|
||||||
});
|
|
||||||
|
|
||||||
item.add(textField, BorderLayout.SOUTH);
|
// Config may previously have been out of range
|
||||||
}
|
value = Ints.constrainToRange(value, min, max);
|
||||||
|
|
||||||
if (cid.getType() == Color.class)
|
if (max < Integer.MAX_VALUE)
|
||||||
{
|
|
||||||
String existing = configManager.getConfiguration(cd.getGroup().value(), cid.getItem().keyName());
|
|
||||||
|
|
||||||
Color existingColor;
|
|
||||||
JButton colorPickerBtn;
|
|
||||||
|
|
||||||
if (existing == null)
|
|
||||||
{
|
|
||||||
existingColor = Color.BLACK;
|
|
||||||
colorPickerBtn = new JButton("Pick a color");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
existingColor = ColorUtil.fromString(existing);
|
|
||||||
colorPickerBtn = new JButton(ColorUtil.toHexColor(existingColor).toUpperCase());
|
|
||||||
}
|
|
||||||
|
|
||||||
colorPickerBtn.setFocusable(false);
|
|
||||||
colorPickerBtn.setBackground(existingColor);
|
|
||||||
colorPickerBtn.addMouseListener(new MouseAdapter()
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public void mouseClicked(MouseEvent e)
|
|
||||||
{
|
{
|
||||||
RuneliteColorPicker colorPicker = new RuneliteColorPicker(SwingUtilities.windowForComponent(ConfigPanel.this),
|
JSlider slider = new JSlider(min, max, value);
|
||||||
colorPickerBtn.getBackground(), cid.getItem().name(), cid.getAlpha() == null);
|
configEntryName.setText(name.concat(": ").concat(String.valueOf(slider.getValue())));
|
||||||
colorPicker.setLocation(getLocationOnScreen());
|
slider.setPreferredSize(new Dimension(topPanel.getPreferredSize().width, slider.getHeight()));
|
||||||
colorPicker.setOnColorChange(c ->
|
String finalName = name;
|
||||||
{
|
slider.addChangeListener((l) ->
|
||||||
colorPickerBtn.setBackground(c);
|
|
||||||
colorPickerBtn.setText(ColorUtil.toHexColor(c).toUpperCase());
|
|
||||||
});
|
|
||||||
|
|
||||||
colorPicker.addWindowListener(new WindowAdapter()
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public void windowClosing(WindowEvent e)
|
|
||||||
{
|
{
|
||||||
changeConfiguration(listItem, config, colorPicker, cd, cid);
|
configEntryName.setText(finalName.concat(": ").concat(String.valueOf(slider.getValue())));
|
||||||
|
if (!slider.getValueIsAdjusting())
|
||||||
|
changeConfiguration(listItem, config, slider, cd, cid);
|
||||||
}
|
}
|
||||||
});
|
);
|
||||||
colorPicker.setVisible(true);
|
item.add(slider, BorderLayout.EAST);
|
||||||
}
|
}
|
||||||
});
|
else
|
||||||
|
|
||||||
item.add(colorPickerBtn, BorderLayout.EAST);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cid.getType() == Dimension.class)
|
|
||||||
{
|
|
||||||
JPanel dimensionPanel = new JPanel();
|
|
||||||
dimensionPanel.setLayout(new BorderLayout());
|
|
||||||
|
|
||||||
String str = configManager.getConfiguration(cd.getGroup().value(), cid.getItem().keyName());
|
|
||||||
String[] splitStr = str.split("x");
|
|
||||||
int width = Integer.parseInt(splitStr[0]);
|
|
||||||
int height = Integer.parseInt(splitStr[1]);
|
|
||||||
|
|
||||||
SpinnerModel widthModel = new SpinnerNumberModel(width, 0, Integer.MAX_VALUE, 1);
|
|
||||||
JSpinner widthSpinner = new JSpinner(widthModel);
|
|
||||||
Component widthEditor = widthSpinner.getEditor();
|
|
||||||
JFormattedTextField widthSpinnerTextField = ((JSpinner.DefaultEditor) widthEditor).getTextField();
|
|
||||||
widthSpinnerTextField.setColumns(4);
|
|
||||||
|
|
||||||
SpinnerModel heightModel = new SpinnerNumberModel(height, 0, Integer.MAX_VALUE, 1);
|
|
||||||
JSpinner heightSpinner = new JSpinner(heightModel);
|
|
||||||
Component heightEditor = heightSpinner.getEditor();
|
|
||||||
JFormattedTextField heightSpinnerTextField = ((JSpinner.DefaultEditor) heightEditor).getTextField();
|
|
||||||
heightSpinnerTextField.setColumns(4);
|
|
||||||
|
|
||||||
ChangeListener listener = e ->
|
|
||||||
configManager.setConfiguration(cd.getGroup().value(), cid.getItem().keyName(), widthSpinner.getValue() + "x" + heightSpinner.getValue());
|
|
||||||
|
|
||||||
widthSpinner.addChangeListener(listener);
|
|
||||||
heightSpinner.addChangeListener(listener);
|
|
||||||
|
|
||||||
dimensionPanel.add(widthSpinner, BorderLayout.WEST);
|
|
||||||
dimensionPanel.add(new JLabel(" x "), BorderLayout.CENTER);
|
|
||||||
dimensionPanel.add(heightSpinner, BorderLayout.EAST);
|
|
||||||
|
|
||||||
item.add(dimensionPanel, BorderLayout.EAST);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cid.getType().isEnum())
|
|
||||||
{
|
|
||||||
Class<? extends Enum> type = (Class<? extends Enum>) cid.getType();
|
|
||||||
JComboBox box = new JComboBox(type.getEnumConstants());
|
|
||||||
box.setPreferredSize(new Dimension(box.getPreferredSize().width, 25));
|
|
||||||
box.setRenderer(new ComboBoxListRenderer());
|
|
||||||
box.setForeground(Color.WHITE);
|
|
||||||
box.setFocusable(false);
|
|
||||||
box.setPrototypeDisplayValue("XXXXXXXX"); //sorry but this is the way to keep the size of the combobox in check.
|
|
||||||
try
|
|
||||||
{
|
|
||||||
Enum selectedItem = Enum.valueOf(type, configManager.getConfiguration(cd.getGroup().value(), cid.getItem().keyName()));
|
|
||||||
box.setSelectedItem(selectedItem);
|
|
||||||
box.setToolTipText(Text.titleCase(selectedItem));
|
|
||||||
}
|
|
||||||
catch (IllegalArgumentException ex)
|
|
||||||
{
|
|
||||||
log.debug("invalid seleced item", ex);
|
|
||||||
}
|
|
||||||
box.addItemListener(e ->
|
|
||||||
{
|
|
||||||
if (e.getStateChange() == ItemEvent.SELECTED)
|
|
||||||
{
|
{
|
||||||
changeConfiguration(listItem, config, box, cd, cid);
|
SpinnerModel model = new SpinnerNumberModel(value, min, max, 1);
|
||||||
box.setToolTipText(Text.titleCase((Enum) box.getSelectedItem()));
|
JSpinner spinner = new JSpinner(model);
|
||||||
|
Component editor = spinner.getEditor();
|
||||||
|
JFormattedTextField spinnerTextField = ((JSpinner.DefaultEditor) editor).getTextField();
|
||||||
|
spinnerTextField.setColumns(SPINNER_FIELD_WIDTH);
|
||||||
|
spinner.addChangeListener(ce -> changeConfiguration(listItem, config, spinner, cd, cid));
|
||||||
|
|
||||||
|
item.add(spinner, BorderLayout.EAST);
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
item.add(box, BorderLayout.EAST);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cid.getType() == Keybind.class || cid.getType() == ModifierlessKeybind.class)
|
if (cid.getType() == String.class)
|
||||||
{
|
|
||||||
Keybind startingValue = configManager.getConfiguration(cd.getGroup().value(),
|
|
||||||
cid.getItem().keyName(),
|
|
||||||
(Class<? extends Keybind>) cid.getType());
|
|
||||||
|
|
||||||
HotkeyButton button = new HotkeyButton(startingValue, cid.getType() == ModifierlessKeybind.class);
|
|
||||||
|
|
||||||
button.addFocusListener(new FocusAdapter()
|
|
||||||
{
|
{
|
||||||
@Override
|
JTextComponent textField;
|
||||||
public void focusLost(FocusEvent e)
|
|
||||||
|
if (cid.getItem().secret())
|
||||||
{
|
{
|
||||||
changeConfiguration(listItem, config, button, cd, cid);
|
textField = new JPasswordField();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
final JTextArea textArea = new JTextArea();
|
||||||
|
textArea.setLineWrap(true);
|
||||||
|
textArea.setWrapStyleWord(true);
|
||||||
|
textField = textArea;
|
||||||
}
|
}
|
||||||
});
|
|
||||||
|
|
||||||
item.add(button, BorderLayout.EAST);
|
textField.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
|
||||||
|
textField.setText(configManager.getConfiguration(cd.getGroup().value(), cid.getItem().keyName()));
|
||||||
|
|
||||||
|
textField.addFocusListener(new FocusAdapter()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void focusLost(FocusEvent e)
|
||||||
|
{
|
||||||
|
changeConfiguration(listItem, config, textField, cd, cid);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
item.add(textField, BorderLayout.SOUTH);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cid.getType() == Color.class)
|
||||||
|
{
|
||||||
|
String existing = configManager.getConfiguration(cd.getGroup().value(), cid.getItem().keyName());
|
||||||
|
|
||||||
|
Color existingColor;
|
||||||
|
JButton colorPickerBtn;
|
||||||
|
|
||||||
|
if (existing == null)
|
||||||
|
{
|
||||||
|
existingColor = Color.BLACK;
|
||||||
|
colorPickerBtn = new JButton("Pick a color");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
existingColor = ColorUtil.fromString(existing);
|
||||||
|
colorPickerBtn = new JButton(ColorUtil.toHexColor(existingColor).toUpperCase());
|
||||||
|
}
|
||||||
|
|
||||||
|
colorPickerBtn.setFocusable(false);
|
||||||
|
colorPickerBtn.setBackground(existingColor);
|
||||||
|
colorPickerBtn.addMouseListener(new MouseAdapter()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void mouseClicked(MouseEvent e)
|
||||||
|
{
|
||||||
|
RuneliteColorPicker colorPicker = new RuneliteColorPicker(SwingUtilities.windowForComponent(ConfigPanel.this),
|
||||||
|
colorPickerBtn.getBackground(), cid.getItem().name(), cid.getAlpha() == null);
|
||||||
|
colorPicker.setLocation(getLocationOnScreen());
|
||||||
|
colorPicker.setOnColorChange(c ->
|
||||||
|
{
|
||||||
|
colorPickerBtn.setBackground(c);
|
||||||
|
colorPickerBtn.setText(ColorUtil.toHexColor(c).toUpperCase());
|
||||||
|
});
|
||||||
|
|
||||||
|
colorPicker.addWindowListener(new WindowAdapter()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void windowClosing(WindowEvent e)
|
||||||
|
{
|
||||||
|
changeConfiguration(listItem, config, colorPicker, cd, cid);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
colorPicker.setVisible(true);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
item.add(colorPickerBtn, BorderLayout.EAST);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cid.getType() == Dimension.class)
|
||||||
|
{
|
||||||
|
JPanel dimensionPanel = new JPanel();
|
||||||
|
dimensionPanel.setLayout(new BorderLayout());
|
||||||
|
|
||||||
|
String str = configManager.getConfiguration(cd.getGroup().value(), cid.getItem().keyName());
|
||||||
|
String[] splitStr = str.split("x");
|
||||||
|
int width = Integer.parseInt(splitStr[0]);
|
||||||
|
int height = Integer.parseInt(splitStr[1]);
|
||||||
|
|
||||||
|
SpinnerModel widthModel = new SpinnerNumberModel(width, 0, Integer.MAX_VALUE, 1);
|
||||||
|
JSpinner widthSpinner = new JSpinner(widthModel);
|
||||||
|
Component widthEditor = widthSpinner.getEditor();
|
||||||
|
JFormattedTextField widthSpinnerTextField = ((JSpinner.DefaultEditor) widthEditor).getTextField();
|
||||||
|
widthSpinnerTextField.setColumns(4);
|
||||||
|
|
||||||
|
SpinnerModel heightModel = new SpinnerNumberModel(height, 0, Integer.MAX_VALUE, 1);
|
||||||
|
JSpinner heightSpinner = new JSpinner(heightModel);
|
||||||
|
Component heightEditor = heightSpinner.getEditor();
|
||||||
|
JFormattedTextField heightSpinnerTextField = ((JSpinner.DefaultEditor) heightEditor).getTextField();
|
||||||
|
heightSpinnerTextField.setColumns(4);
|
||||||
|
|
||||||
|
ChangeListener listener = e ->
|
||||||
|
configManager.setConfiguration(cd.getGroup().value(), cid.getItem().keyName(), widthSpinner.getValue() + "x" + heightSpinner.getValue());
|
||||||
|
|
||||||
|
widthSpinner.addChangeListener(listener);
|
||||||
|
heightSpinner.addChangeListener(listener);
|
||||||
|
|
||||||
|
dimensionPanel.add(widthSpinner, BorderLayout.WEST);
|
||||||
|
dimensionPanel.add(new JLabel(" x "), BorderLayout.CENTER);
|
||||||
|
dimensionPanel.add(heightSpinner, BorderLayout.EAST);
|
||||||
|
|
||||||
|
item.add(dimensionPanel, BorderLayout.EAST);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cid.getType().isEnum())
|
||||||
|
{
|
||||||
|
Class<? extends Enum> type = (Class<? extends Enum>) cid.getType();
|
||||||
|
JComboBox box = new JComboBox(type.getEnumConstants());
|
||||||
|
box.setPreferredSize(new Dimension(box.getPreferredSize().width, 25));
|
||||||
|
box.setRenderer(new ComboBoxListRenderer());
|
||||||
|
box.setForeground(Color.WHITE);
|
||||||
|
box.setFocusable(false);
|
||||||
|
box.setPrototypeDisplayValue("XXXXXXXX"); //sorry but this is the way to keep the size of the combobox in check.
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Enum selectedItem = Enum.valueOf(type, configManager.getConfiguration(cd.getGroup().value(), cid.getItem().keyName()));
|
||||||
|
box.setSelectedItem(selectedItem);
|
||||||
|
box.setToolTipText(selectedItem.toString());
|
||||||
|
}
|
||||||
|
catch (IllegalArgumentException ex)
|
||||||
|
{
|
||||||
|
log.debug("invalid seleced item", ex);
|
||||||
|
}
|
||||||
|
box.addItemListener(e ->
|
||||||
|
{
|
||||||
|
if (e.getStateChange() == ItemEvent.SELECTED)
|
||||||
|
{
|
||||||
|
changeConfiguration(listItem, config, box, cd, cid);
|
||||||
|
box.setToolTipText(box.getSelectedItem().toString());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
item.add(box, BorderLayout.EAST);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cid.getType() == Keybind.class || cid.getType() == ModifierlessKeybind.class)
|
||||||
|
{
|
||||||
|
Keybind startingValue = configManager.getConfiguration(cd.getGroup().value(),
|
||||||
|
cid.getItem().keyName(),
|
||||||
|
(Class<? extends Keybind>) cid.getType());
|
||||||
|
|
||||||
|
HotkeyButton button = new HotkeyButton(startingValue, cid.getType() == ModifierlessKeybind.class);
|
||||||
|
|
||||||
|
button.addFocusListener(new FocusAdapter()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void focusLost(FocusEvent e)
|
||||||
|
{
|
||||||
|
changeConfiguration(listItem, config, button, cd, cid);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
item.add(button, BorderLayout.EAST);
|
||||||
|
}
|
||||||
|
|
||||||
|
mainPanel.add(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
mainPanel.add(item);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
JButton resetButton = new JButton("Reset");
|
JButton resetButton = new JButton("Reset");
|
||||||
@@ -657,6 +717,22 @@ public class ConfigPanel extends PluginPanel
|
|||||||
scrollPane.getVerticalScrollBar().setValue(0);
|
scrollPane.getVerticalScrollBar().setValue(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void changeGroupCollapse(PluginListItem listItem, Config config, JComponent component, ConfigDescriptor cd, ConfigItemsGroup cig)
|
||||||
|
{
|
||||||
|
if (component instanceof JButton)
|
||||||
|
{
|
||||||
|
|
||||||
|
String sCollapsed = configManager.getConfiguration(cd.getGroup().value(), cig.getGroup() + "_collapse");
|
||||||
|
boolean collapse = true;
|
||||||
|
|
||||||
|
if (sCollapsed != null)
|
||||||
|
collapse = !Boolean.parseBoolean(sCollapsed);
|
||||||
|
|
||||||
|
configManager.setConfiguration(cd.getGroup().value(), cig.getGroup() + "_collapse", collapse);
|
||||||
|
openGroupConfigPanel(listItem, config, cd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void changeConfiguration(PluginListItem listItem, Config config, Component component, ConfigDescriptor cd, ConfigItemDescriptor cid)
|
private void changeConfiguration(PluginListItem listItem, Config config, Component component, ConfigDescriptor cd, ConfigItemDescriptor cid)
|
||||||
{
|
{
|
||||||
final ConfigItem configItem = cid.getItem();
|
final ConfigItem configItem = cid.getItem();
|
||||||
@@ -704,6 +780,11 @@ public class ConfigPanel extends PluginPanel
|
|||||||
HotkeyButton hotkeyButton = (HotkeyButton) component;
|
HotkeyButton hotkeyButton = (HotkeyButton) component;
|
||||||
configManager.setConfiguration(cd.getGroup().value(), cid.getItem().keyName(), hotkeyButton.getValue());
|
configManager.setConfiguration(cd.getGroup().value(), cid.getItem().keyName(), hotkeyButton.getValue());
|
||||||
}
|
}
|
||||||
|
else if (component instanceof JSlider)
|
||||||
|
{
|
||||||
|
JSlider slider = (JSlider) component;
|
||||||
|
configManager.setConfiguration(cd.getGroup().value(), cid.getItem().keyName(), slider.getValue());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void startPlugin(Plugin plugin, PluginListItem listItem)
|
void startPlugin(Plugin plugin, PluginListItem listItem)
|
||||||
|
|||||||
@@ -0,0 +1,586 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2019, Owain van Brakel <https://github.com/Owain94>
|
||||||
|
* Copyright (c) 2019, Alan Baumgartner <https://github.com/alanbaumgartner>
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||||
|
* list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
* this list of conditions and the following disclaimer in the documentation
|
||||||
|
* and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
|
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
package net.runelite.client.plugins.easyscape;
|
||||||
|
|
||||||
|
import net.runelite.client.config.Config;
|
||||||
|
import net.runelite.client.config.ConfigGroup;
|
||||||
|
import net.runelite.client.config.ConfigItem;
|
||||||
|
import net.runelite.client.plugins.easyscape.util.DuelingRingMode;
|
||||||
|
import net.runelite.client.plugins.easyscape.util.EssenceMode;
|
||||||
|
import net.runelite.client.plugins.easyscape.util.GamesNecklaceMode;
|
||||||
|
import net.runelite.client.plugins.easyscape.util.GloryMode;
|
||||||
|
|
||||||
|
|
||||||
|
@ConfigGroup("easyscape")
|
||||||
|
public interface EasyscapeConfig extends Config
|
||||||
|
{
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "withdrawOne",
|
||||||
|
name = "Withdraw/Deposit One",
|
||||||
|
description = "",
|
||||||
|
position = 0,
|
||||||
|
group = "Banking"
|
||||||
|
)
|
||||||
|
default boolean getWithdrawOne()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "withdrawOneItems",
|
||||||
|
name = "Items",
|
||||||
|
description = "",
|
||||||
|
position = 1,
|
||||||
|
group = "Banking"
|
||||||
|
)
|
||||||
|
default String getWithdrawOneItems()
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "withdrawFive",
|
||||||
|
name = "Withdraw/Deposit Five",
|
||||||
|
description = "",
|
||||||
|
position = 2,
|
||||||
|
group = "Banking"
|
||||||
|
)
|
||||||
|
default boolean getWithdrawFive()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "withdrawFiveItems",
|
||||||
|
name = "Items",
|
||||||
|
description = "",
|
||||||
|
position = 3,
|
||||||
|
group = "Banking"
|
||||||
|
)
|
||||||
|
default String getWithdrawFiveItems()
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "withdrawTen",
|
||||||
|
name = "Withdraw/Deposit Ten",
|
||||||
|
description = "",
|
||||||
|
position = 4,
|
||||||
|
group = "Banking"
|
||||||
|
)
|
||||||
|
default boolean getWithdrawTen()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "withdrawTenItems",
|
||||||
|
name = "Items",
|
||||||
|
description = "",
|
||||||
|
position = 5,
|
||||||
|
group = "Banking"
|
||||||
|
)
|
||||||
|
default String getWithdrawTenItems()
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "withdrawX",
|
||||||
|
name = "Withdraw/Deposit X",
|
||||||
|
description = "",
|
||||||
|
position = 6,
|
||||||
|
group = "Banking"
|
||||||
|
)
|
||||||
|
default boolean getWithdrawX()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "withdrawXAmount",
|
||||||
|
name = "Amount",
|
||||||
|
description = "",
|
||||||
|
position = 7,
|
||||||
|
group = "Banking"
|
||||||
|
)
|
||||||
|
default String getWithdrawXAmount()
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "withdrawXItems",
|
||||||
|
name = "Items",
|
||||||
|
description = "",
|
||||||
|
position = 8,
|
||||||
|
group = "Banking"
|
||||||
|
)
|
||||||
|
default String getWithdrawXItems()
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "withdrawAll",
|
||||||
|
name = "Withdraw/Deposit All",
|
||||||
|
description = "",
|
||||||
|
position = 9,
|
||||||
|
group = "Banking"
|
||||||
|
)
|
||||||
|
default boolean getWithdrawAll()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "withdrawAllItems",
|
||||||
|
name = "Items",
|
||||||
|
description = "",
|
||||||
|
position = 10,
|
||||||
|
group = "Banking"
|
||||||
|
)
|
||||||
|
default String getWithdrawAllItems()
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
// ----------------------------------------------------------- //
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "removeObjects",
|
||||||
|
name = "Remove Objects",
|
||||||
|
description = "Removes interaction with the listed objects.",
|
||||||
|
position = 12,
|
||||||
|
group = "Miscellaneous easyscape"
|
||||||
|
)
|
||||||
|
default boolean getRemoveObjects()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "removedObjects",
|
||||||
|
name = "Objects",
|
||||||
|
description = "Objects listed here will have all interaction be removed.",
|
||||||
|
position = 13,
|
||||||
|
group = "Miscellaneous easyscape"
|
||||||
|
)
|
||||||
|
default String getRemovedObjects()
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
// ----------------------------------------------------------- //
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "swapBuyOne",
|
||||||
|
name = "Swappable Buy One",
|
||||||
|
description = "",
|
||||||
|
position = 14,
|
||||||
|
group = "Shop / stores"
|
||||||
|
)
|
||||||
|
default boolean getSwapBuyOne()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "buyOneItems",
|
||||||
|
name = "Items",
|
||||||
|
description = "",
|
||||||
|
position = 15,
|
||||||
|
group = "Shop / stores"
|
||||||
|
)
|
||||||
|
default String getBuyOneItems()
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "swapBuyFive",
|
||||||
|
name = "Swappable Buy Five",
|
||||||
|
description = "",
|
||||||
|
position = 16,
|
||||||
|
group = "Shop / stores"
|
||||||
|
)
|
||||||
|
default boolean getSwapBuyFive()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "buyFiveItems",
|
||||||
|
name = "Items",
|
||||||
|
description = "",
|
||||||
|
position = 17,
|
||||||
|
group = "Shop / stores"
|
||||||
|
)
|
||||||
|
default String getBuyFiveItems()
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "swapBuyTen",
|
||||||
|
name = "Swappable Buy Ten",
|
||||||
|
description = "",
|
||||||
|
position = 18,
|
||||||
|
group = "Shop / stores"
|
||||||
|
)
|
||||||
|
default boolean getSwapBuyTen()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "buyTenItems",
|
||||||
|
name = "Items",
|
||||||
|
description = "",
|
||||||
|
position = 19,
|
||||||
|
group = "Shop / stores"
|
||||||
|
)
|
||||||
|
default String getBuyTenItems()
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "swapBuyFifty",
|
||||||
|
name = "Swappable Buy Fifty",
|
||||||
|
description = "",
|
||||||
|
position = 20,
|
||||||
|
group = "Shop / stores"
|
||||||
|
)
|
||||||
|
default boolean getSwapBuyFifty()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "buyFiftyItems",
|
||||||
|
name = "Items",
|
||||||
|
description = "",
|
||||||
|
position = 21,
|
||||||
|
group = "Shop / stores"
|
||||||
|
)
|
||||||
|
default String getBuyFiftyItems()
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "swapSellOne",
|
||||||
|
name = "Swappable Sell One",
|
||||||
|
description = "",
|
||||||
|
position = 22,
|
||||||
|
group = "Shop / stores"
|
||||||
|
)
|
||||||
|
default boolean getSwapSellOne()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "sellOneItems",
|
||||||
|
name = "Items",
|
||||||
|
description = "",
|
||||||
|
position = 23,
|
||||||
|
group = "Shop / stores"
|
||||||
|
)
|
||||||
|
default String getSellOneItems()
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "swapSellFive",
|
||||||
|
name = "Swappable Sell Five",
|
||||||
|
description = "",
|
||||||
|
position = 24,
|
||||||
|
group = "Shop / stores"
|
||||||
|
)
|
||||||
|
default boolean getSwapSellFive()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "sellFiveItems",
|
||||||
|
name = "Items",
|
||||||
|
description = "",
|
||||||
|
position = 25,
|
||||||
|
group = "Shop / stores"
|
||||||
|
)
|
||||||
|
default String getSellFiveItems()
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "swapSellTen",
|
||||||
|
name = "Swappable Sell Ten",
|
||||||
|
description = "",
|
||||||
|
position = 26,
|
||||||
|
group = "Shop / stores"
|
||||||
|
)
|
||||||
|
default boolean getSwapSellTen()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "sellTenItems",
|
||||||
|
name = "Items",
|
||||||
|
description = "",
|
||||||
|
position = 27,
|
||||||
|
group = "Shop / stores"
|
||||||
|
)
|
||||||
|
default String getSellTenItems()
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "swapSellFifty",
|
||||||
|
name = "Swappable Sell Fifty",
|
||||||
|
description = "",
|
||||||
|
position = 28,
|
||||||
|
group = "Shop / stores"
|
||||||
|
)
|
||||||
|
default boolean getSwapSellFifty()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "sellFiftyItems",
|
||||||
|
name = "Items",
|
||||||
|
description = "",
|
||||||
|
position = 29,
|
||||||
|
group = "Shop / stores"
|
||||||
|
)
|
||||||
|
default String getSellFiftyItems()
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
// ----------------------------------------------------------- //
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "easyConstruction",
|
||||||
|
name = "Easy Construction",
|
||||||
|
description = "Makes \"Remove\" the default option for listed items in build mode.",
|
||||||
|
position = 30,
|
||||||
|
group = "Miscellaneous swapper"
|
||||||
|
)
|
||||||
|
default boolean getEasyConstruction()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "constructionItems",
|
||||||
|
name = "Construction Items",
|
||||||
|
description = "Items listed here will have the default option set to \"Removed\" in build mode.",
|
||||||
|
position = 31,
|
||||||
|
group = "Miscellaneous swapper"
|
||||||
|
)
|
||||||
|
default String getConstructionItems()
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "swapSmithing",
|
||||||
|
name = "Swap Smithing",
|
||||||
|
description = "Enables swapping of smith-1 and smith-all options.",
|
||||||
|
position = 32,
|
||||||
|
group = "Miscellaneous swapper"
|
||||||
|
)
|
||||||
|
default boolean getSwapSmithing()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "swapTanning",
|
||||||
|
name = "Swap Tanning",
|
||||||
|
description = "Enables swapping of tan-1 and tan-all options.",
|
||||||
|
position = 33,
|
||||||
|
group = "Miscellaneous swapper"
|
||||||
|
)
|
||||||
|
default boolean getSwapTanning()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "swapArdougneCape",
|
||||||
|
name = "Swap Ardougne Cape",
|
||||||
|
description = "Enables swapping of teleport and wear.",
|
||||||
|
position = 34,
|
||||||
|
group = "Miscellaneous swapper"
|
||||||
|
)
|
||||||
|
default boolean getSwapArdougneCape()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "swapSawmill",
|
||||||
|
name = "Swap Sawmill Operator",
|
||||||
|
description = "Makes Buy-plank the default option on the sawmill operator.",
|
||||||
|
position = 35,
|
||||||
|
group = "Miscellaneous swapper"
|
||||||
|
)
|
||||||
|
default boolean getSwapSawmill()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "swapSawmillPlanks",
|
||||||
|
name = "Swap Buy Planks",
|
||||||
|
description = "Makes Buy All the default option in buy planks.",
|
||||||
|
position = 36,
|
||||||
|
group = "Miscellaneous swapper"
|
||||||
|
)
|
||||||
|
default boolean getSwapSawmillPlanks()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "swapPuroPuro",
|
||||||
|
name = "Swap Puro Puro Wheat",
|
||||||
|
description = "",
|
||||||
|
position = 37,
|
||||||
|
group = "Miscellaneous swapper"
|
||||||
|
)
|
||||||
|
default boolean getSwapPuro()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "swapEssencePounch",
|
||||||
|
name = "Swap Essence Pouch",
|
||||||
|
description = "",
|
||||||
|
position = 38,
|
||||||
|
group = "Miscellaneous swapper"
|
||||||
|
)
|
||||||
|
default boolean getSwapEssencePouch()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "essenceMode",
|
||||||
|
name = "Mode",
|
||||||
|
description = "",
|
||||||
|
position = 39,
|
||||||
|
group = "Miscellaneous swapper"
|
||||||
|
)
|
||||||
|
default EssenceMode getEssenceMode()
|
||||||
|
{
|
||||||
|
return EssenceMode.RUNECRAFTING;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "swapGamesNecklace",
|
||||||
|
name = "Swap Games Necklace",
|
||||||
|
description = "",
|
||||||
|
position = 40,
|
||||||
|
group = "Miscellaneous swapper"
|
||||||
|
)
|
||||||
|
default boolean getGamesNecklace()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "gamesNecklaceMode",
|
||||||
|
name = "Mode",
|
||||||
|
description = "",
|
||||||
|
position = 41,
|
||||||
|
group = "Miscellaneous swapper"
|
||||||
|
)
|
||||||
|
default GamesNecklaceMode getGamesNecklaceMode()
|
||||||
|
{
|
||||||
|
return GamesNecklaceMode.BURTHORPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "swapDuelingRing",
|
||||||
|
name = "Swap Dueling Ring",
|
||||||
|
description = "",
|
||||||
|
position = 42,
|
||||||
|
group = "Miscellaneous swapper"
|
||||||
|
)
|
||||||
|
default boolean getDuelingRing()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "duelingRingMode",
|
||||||
|
name = "Mode",
|
||||||
|
description = "",
|
||||||
|
position = 43,
|
||||||
|
group = "Miscellaneous swapper"
|
||||||
|
)
|
||||||
|
default DuelingRingMode getDuelingRingMode()
|
||||||
|
{
|
||||||
|
return DuelingRingMode.DUEL_ARENA;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "swapGlory",
|
||||||
|
name = "Swap Glory",
|
||||||
|
description = "",
|
||||||
|
position = 44,
|
||||||
|
group = "Miscellaneous swapper"
|
||||||
|
)
|
||||||
|
default boolean getGlory()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "gloryMode",
|
||||||
|
name = "Mode",
|
||||||
|
description = "",
|
||||||
|
position = 45,
|
||||||
|
group = "Miscellaneous swapper"
|
||||||
|
)
|
||||||
|
default GloryMode getGloryMode()
|
||||||
|
{
|
||||||
|
return GloryMode.EDGEVILLE;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2018, https://runelitepl.us
|
* Copyright (c) 2019, Owain van Brakel <https://github.com/Owain94>
|
||||||
|
* Copyright (c) 2019, Alan Baumgartner <https://github.com/alanbaumgartner>
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
@@ -26,15 +27,18 @@ package net.runelite.client.plugins.easyscape;
|
|||||||
|
|
||||||
import com.google.inject.Provides;
|
import com.google.inject.Provides;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import net.runelite.api.Client;
|
import net.runelite.api.Client;
|
||||||
|
import net.runelite.api.GameObject;
|
||||||
import net.runelite.api.GameState;
|
import net.runelite.api.GameState;
|
||||||
import net.runelite.api.MenuAction;
|
import net.runelite.api.MenuAction;
|
||||||
import static net.runelite.api.MenuAction.MENU_ACTION_DEPRIORITIZE_OFFSET;
|
import static net.runelite.api.MenuAction.MENU_ACTION_DEPRIORITIZE_OFFSET;
|
||||||
import static net.runelite.api.MenuAction.WALK;
|
import static net.runelite.api.MenuAction.WALK;
|
||||||
import net.runelite.api.MenuEntry;
|
import net.runelite.api.MenuEntry;
|
||||||
|
import static net.runelite.api.ObjectID.PORTAL_4525;
|
||||||
import net.runelite.api.Player;
|
import net.runelite.api.Player;
|
||||||
import net.runelite.api.coords.WorldPoint;
|
import net.runelite.api.coords.WorldPoint;
|
||||||
|
import net.runelite.api.events.GameObjectDespawned;
|
||||||
|
import net.runelite.api.events.GameObjectSpawned;
|
||||||
import net.runelite.api.events.MenuEntryAdded;
|
import net.runelite.api.events.MenuEntryAdded;
|
||||||
import net.runelite.api.widgets.Widget;
|
import net.runelite.api.widgets.Widget;
|
||||||
import net.runelite.api.widgets.WidgetInfo;
|
import net.runelite.api.widgets.WidgetInfo;
|
||||||
@@ -50,49 +54,30 @@ import org.apache.commons.lang3.ArrayUtils;
|
|||||||
|
|
||||||
@PluginDescriptor(
|
@PluginDescriptor(
|
||||||
name = "Easyscape",
|
name = "Easyscape",
|
||||||
description = "Easyscape.",
|
|
||||||
tags = {"Easyscape"},
|
|
||||||
enabledByDefault = false,
|
|
||||||
type = PluginType.UTILITY
|
type = PluginType.UTILITY
|
||||||
)
|
)
|
||||||
|
|
||||||
@Slf4j
|
|
||||||
public class EasyscapePlugin extends Plugin
|
public class EasyscapePlugin extends Plugin
|
||||||
{
|
{
|
||||||
|
|
||||||
private static final int PURO_PURO_REGION_ID = 10307;
|
private static final int PURO_PURO_REGION_ID = 10307;
|
||||||
private static final int HOUSE_REGION_ID = 7513;
|
|
||||||
|
|
||||||
private MenuEntry[] entries;
|
private MenuEntry[] entries;
|
||||||
|
private boolean inHouse = false;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private Client client;
|
private Client client;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private EasyscapePluginConfig config;
|
private EasyscapeConfig config;
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
EasyscapePluginConfig provideConfig(ConfigManager configManager)
|
EasyscapeConfig provideConfig(ConfigManager configManager)
|
||||||
{
|
{
|
||||||
return configManager.getConfig(EasyscapePluginConfig.class);
|
return configManager.getConfig(EasyscapeConfig.class);
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void startUp()
|
|
||||||
{
|
|
||||||
log.debug("Easyscape Started.");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void shutDown()
|
|
||||||
{
|
|
||||||
log.debug("Easyscape Stopped.");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
public void onMenuEntryAdded(MenuEntryAdded event)
|
public void onMenuEntryAdded(MenuEntryAdded event)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (client.getGameState() != GameState.LOGGED_IN)
|
if (client.getGameState() != GameState.LOGGED_IN)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@@ -111,17 +96,159 @@ public class EasyscapePlugin extends Plugin
|
|||||||
|
|
||||||
entries = client.getMenuEntries();
|
entries = client.getMenuEntries();
|
||||||
|
|
||||||
if (config.getRemoveExamine())
|
Widget widgetBankTitleBar = client.getWidget(WidgetInfo.BANK_TITLE_BAR);
|
||||||
{
|
|
||||||
for (int i = entries.length - 1; i >= 0; i--)
|
if (config.getWithdrawOne())
|
||||||
{
|
{
|
||||||
if (entries[i].getOption().equals("Examine"))
|
for (String item : config.getWithdrawOneItems().split(","))
|
||||||
{
|
{
|
||||||
entries = ArrayUtils.remove(entries, i);
|
item = item.trim();
|
||||||
i--;
|
if (target.equalsIgnoreCase(item))
|
||||||
|
{
|
||||||
|
swap(client, "Withdraw-1", option, target);
|
||||||
|
swap(client, "Deposit-1", option, target);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config.getWithdrawFive())
|
||||||
|
{
|
||||||
|
for (String item : config.getWithdrawFiveItems().split(","))
|
||||||
|
{
|
||||||
|
item = item.trim();
|
||||||
|
if (target.equalsIgnoreCase(item))
|
||||||
|
{
|
||||||
|
swap(client, "Withdraw-5", option, target);
|
||||||
|
swap(client, "Deposit-5", option, target);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config.getWithdrawTen())
|
||||||
|
{
|
||||||
|
for (String item : config.getWithdrawTenItems().split(","))
|
||||||
|
{
|
||||||
|
item = item.trim();
|
||||||
|
if (target.equalsIgnoreCase(item))
|
||||||
|
{
|
||||||
|
swap(client, "Withdraw-10", option, target);
|
||||||
|
swap(client, "Deposit-10", option, target);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config.getWithdrawX())
|
||||||
|
{
|
||||||
|
for (String item : config.getWithdrawXItems().split(","))
|
||||||
|
{
|
||||||
|
item = item.trim();
|
||||||
|
if (target.equalsIgnoreCase(item))
|
||||||
|
{
|
||||||
|
swap(client, "Withdraw-" + config.getWithdrawXAmount(), option, target);
|
||||||
|
swap(client, "Deposit-" + config.getWithdrawXAmount(), option, target);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config.getWithdrawAll())
|
||||||
|
{
|
||||||
|
for (String item : config.getWithdrawAllItems().split(","))
|
||||||
|
{
|
||||||
|
item = item.trim();
|
||||||
|
if (target.equalsIgnoreCase(item))
|
||||||
|
{
|
||||||
|
swap(client, "Withdraw-All", option, target);
|
||||||
|
swap(client, "Deposit-All", option, target);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config.getSwapBuyOne() && !config.getBuyOneItems().equals(""))
|
||||||
|
{
|
||||||
|
for (String item : config.getBuyOneItems().split(","))
|
||||||
|
{
|
||||||
|
if (target.equalsIgnoreCase(item.trim()))
|
||||||
|
{
|
||||||
|
swap(client, "Buy 1", option, target);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config.getSwapBuyFive() && !config.getBuyFiveItems().equals(""))
|
||||||
|
{
|
||||||
|
for (String item : config.getBuyFiveItems().split(","))
|
||||||
|
{
|
||||||
|
if (target.equalsIgnoreCase(item.trim()))
|
||||||
|
{
|
||||||
|
swap(client, "Buy 5", option, target);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config.getSwapBuyTen() && !config.getBuyTenItems().equals(""))
|
||||||
|
{
|
||||||
|
for (String item : config.getBuyTenItems().split(","))
|
||||||
|
{
|
||||||
|
if (target.equalsIgnoreCase(item.trim()))
|
||||||
|
{
|
||||||
|
swap(client, "Buy 10", option, target);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config.getSwapBuyFifty() && !config.getBuyFiftyItems().equals(""))
|
||||||
|
{
|
||||||
|
for (String item : config.getBuyFiftyItems().split(","))
|
||||||
|
{
|
||||||
|
if (target.equalsIgnoreCase(item.trim()))
|
||||||
|
{
|
||||||
|
swap(client, "Buy 50", option, target);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config.getSwapSellOne() && !config.getSellOneItems().equals(""))
|
||||||
|
{
|
||||||
|
for (String item : config.getSellOneItems().split(","))
|
||||||
|
{
|
||||||
|
if (target.equalsIgnoreCase(item.trim()))
|
||||||
|
{
|
||||||
|
swap(client, "Sell 1", option, target);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config.getSwapSellFive() && !config.getSellFiveItems().equals(""))
|
||||||
|
{
|
||||||
|
for (String item : config.getSellFiveItems().split(","))
|
||||||
|
{
|
||||||
|
if (target.equalsIgnoreCase(item.trim()))
|
||||||
|
{
|
||||||
|
swap(client, "Sell 5", option, target);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config.getSwapSellTen() && !config.getSellTenItems().equals(""))
|
||||||
|
{
|
||||||
|
for (String item : config.getSellTenItems().split(","))
|
||||||
|
{
|
||||||
|
if (target.equalsIgnoreCase(item.trim()))
|
||||||
|
{
|
||||||
|
swap(client, "Sell 10", option, target);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config.getSwapSellFifty() && !config.getSellFiftyItems().equals(""))
|
||||||
|
{
|
||||||
|
for (String item : config.getSellFiftyItems().split(","))
|
||||||
|
{
|
||||||
|
if (target.equalsIgnoreCase(item.trim()))
|
||||||
|
{
|
||||||
|
swap(client, "Sell 50", option, target);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
client.setMenuEntries(entries);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.getRemoveObjects() && !config.getRemovedObjects().equals(""))
|
if (config.getRemoveObjects() && !config.getRemovedObjects().equals(""))
|
||||||
@@ -129,7 +256,11 @@ public class EasyscapePlugin extends Plugin
|
|||||||
for (String removed : config.getRemovedObjects().split(","))
|
for (String removed : config.getRemovedObjects().split(","))
|
||||||
{
|
{
|
||||||
removed = removed.trim();
|
removed = removed.trim();
|
||||||
if (target.contains("->"))
|
if (target.contains("(") && target.split(" \\(")[0].equalsIgnoreCase(removed))
|
||||||
|
{
|
||||||
|
delete(event.getIdentifier());
|
||||||
|
}
|
||||||
|
else if (target.contains("->"))
|
||||||
{
|
{
|
||||||
String trimmed = target.split("->")[1].trim();
|
String trimmed = target.split("->")[1].trim();
|
||||||
if (trimmed.length() >= removed.length() && trimmed.substring(0, removed.length()).equalsIgnoreCase(removed))
|
if (trimmed.length() >= removed.length() && trimmed.substring(0, removed.length()).equalsIgnoreCase(removed))
|
||||||
@@ -138,7 +269,7 @@ public class EasyscapePlugin extends Plugin
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (target.length() >= removed.length() && target.substring(0, removed.length()).equalsIgnoreCase(removed))
|
else if (target.length() >= removed.length() && target.substring(0, removed.length()).equalsIgnoreCase(removed))
|
||||||
{
|
{
|
||||||
delete(event.getIdentifier());
|
delete(event.getIdentifier());
|
||||||
break;
|
break;
|
||||||
@@ -152,7 +283,6 @@ public class EasyscapePlugin extends Plugin
|
|||||||
{
|
{
|
||||||
MenuEntry menuEntry = entries[entries.length - 1];
|
MenuEntry menuEntry = entries[entries.length - 1];
|
||||||
menuEntry.setType(MenuAction.WALK.getId() + MENU_ACTION_DEPRIORITIZE_OFFSET);
|
menuEntry.setType(MenuAction.WALK.getId() + MENU_ACTION_DEPRIORITIZE_OFFSET);
|
||||||
client.setMenuEntries(entries);
|
|
||||||
}
|
}
|
||||||
else if (option.equalsIgnoreCase("examine"))
|
else if (option.equalsIgnoreCase("examine"))
|
||||||
{
|
{
|
||||||
@@ -164,13 +294,12 @@ public class EasyscapePlugin extends Plugin
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.getEasyConstruction() && !config.getConstructionItems().equals(""))
|
if (config.getEasyConstruction() && !config.getConstructionItems().equals("") && inHouse)
|
||||||
{
|
{
|
||||||
if (event.getType() == WALK.getId())
|
if (event.getType() == WALK.getId())
|
||||||
{
|
{
|
||||||
MenuEntry menuEntry = entries[entries.length - 1];
|
MenuEntry menuEntry = entries[entries.length - 1];
|
||||||
menuEntry.setType(MenuAction.WALK.getId() + MENU_ACTION_DEPRIORITIZE_OFFSET);
|
menuEntry.setType(MenuAction.WALK.getId() + MENU_ACTION_DEPRIORITIZE_OFFSET);
|
||||||
client.setMenuEntries(entries);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
swap(client, "Build", option, target);
|
swap(client, "Build", option, target);
|
||||||
@@ -193,17 +322,6 @@ public class EasyscapePlugin extends Plugin
|
|||||||
client.setMenuEntries(entries);
|
client.setMenuEntries(entries);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.getSwapShop() && !config.getSwappedItems().equals(""))
|
|
||||||
{
|
|
||||||
for (String item : config.getSwappedItems().split(","))
|
|
||||||
{
|
|
||||||
if (target.equalsIgnoreCase(item.trim()))
|
|
||||||
{
|
|
||||||
swap(client, "Buy 50", option, target);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (config.getSwapSmithing())
|
if (config.getSwapSmithing())
|
||||||
{
|
{
|
||||||
if (option.equalsIgnoreCase("Smith 1"))
|
if (option.equalsIgnoreCase("Smith 1"))
|
||||||
@@ -221,11 +339,6 @@ public class EasyscapePlugin extends Plugin
|
|||||||
swap(client, "Tan All", option, target);
|
swap(client, "Tan All", option, target);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.getSwapCrafting() && option.equalsIgnoreCase("Make-1"))
|
|
||||||
{
|
|
||||||
swap(client, "Make-All", option, target);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (config.getSwapSawmill() && target.equalsIgnoreCase("Sawmill operator"))
|
if (config.getSwapSawmill() && target.equalsIgnoreCase("Sawmill operator"))
|
||||||
{
|
{
|
||||||
swap(client, "Buy-plank", option, target);
|
swap(client, "Buy-plank", option, target);
|
||||||
@@ -236,12 +349,7 @@ public class EasyscapePlugin extends Plugin
|
|||||||
swap(client, "Buy All", option, target);
|
swap(client, "Buy All", option, target);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.getSwapStairs() && option.equalsIgnoreCase("Climb Stairs"))
|
if (option.equalsIgnoreCase("Clear-All") && target.equalsIgnoreCase("bank Filler"))
|
||||||
{
|
|
||||||
swap(client, "Climb Up Stairs", option, target);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (option.equalsIgnoreCase("Clear-All") && target.equalsIgnoreCase("Bank Filler"))
|
|
||||||
{
|
{
|
||||||
swap(client, "Clear", option, target);
|
swap(client, "Clear", option, target);
|
||||||
}
|
}
|
||||||
@@ -256,7 +364,6 @@ public class EasyscapePlugin extends Plugin
|
|||||||
{
|
{
|
||||||
if (isEssencePouch(target))
|
if (isEssencePouch(target))
|
||||||
{
|
{
|
||||||
Widget widgetBankTitleBar = client.getWidget(WidgetInfo.BANK_TITLE_BAR);
|
|
||||||
switch (config.getEssenceMode())
|
switch (config.getEssenceMode())
|
||||||
{
|
{
|
||||||
case RUNECRAFTING:
|
case RUNECRAFTING:
|
||||||
@@ -289,26 +396,7 @@ public class EasyscapePlugin extends Plugin
|
|||||||
{
|
{
|
||||||
if (target.toLowerCase().contains("games necklace"))
|
if (target.toLowerCase().contains("games necklace"))
|
||||||
{
|
{
|
||||||
switch (config.getGamesNecklaceMode())
|
swap(client, config.getGamesNecklaceMode().toString(), option, target);
|
||||||
{
|
|
||||||
case BURTHORPE:
|
|
||||||
swap(client, GamesNecklaceMode.BURTHORPE.toString(), option, target);
|
|
||||||
break;
|
|
||||||
case BARBARIAN_OUTPOST:
|
|
||||||
swap(client, GamesNecklaceMode.BARBARIAN_OUTPOST.toString(), option, target);
|
|
||||||
break;
|
|
||||||
case CORPOREAL_BEAST:
|
|
||||||
swap(client, GamesNecklaceMode.CORPOREAL_BEAST.toString(), option, target);
|
|
||||||
break;
|
|
||||||
case TEARS_OF_GUTHIX:
|
|
||||||
swap(client, GamesNecklaceMode.TEARS_OF_GUTHIX.toString(), option, target);
|
|
||||||
break;
|
|
||||||
case WINTERTODT:
|
|
||||||
swap(client, GamesNecklaceMode.WINTERTODT.toString(), option, target);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -316,44 +404,7 @@ public class EasyscapePlugin extends Plugin
|
|||||||
{
|
{
|
||||||
if (target.toLowerCase().contains("ring of dueling"))
|
if (target.toLowerCase().contains("ring of dueling"))
|
||||||
{
|
{
|
||||||
switch (config.getDuelingRingMode())
|
swap(client, config.getDuelingRingMode().toString(), option, target);
|
||||||
{
|
|
||||||
case DUEL_ARENA:
|
|
||||||
swap(client, DuelingRingMode.DUEL_ARENA.toString(), option, target);
|
|
||||||
break;
|
|
||||||
case CASTLE_WARS:
|
|
||||||
swap(client, DuelingRingMode.CASTLE_WARS.toString(), option, target);
|
|
||||||
break;
|
|
||||||
case CLAN_WARS:
|
|
||||||
swap(client, DuelingRingMode.CLAN_WARS.toString(), option, target);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (config.getWealthRing())
|
|
||||||
{
|
|
||||||
if (target.toLowerCase().contains("ring of wealth"))
|
|
||||||
{
|
|
||||||
switch (config.getWealthRingMode())
|
|
||||||
{
|
|
||||||
case MISCELLANIA:
|
|
||||||
swap(client, WealthRingMode.MISCELLANIA.toString(), option, target);
|
|
||||||
break;
|
|
||||||
case GRAND_EXCHANGE:
|
|
||||||
swap(client, WealthRingMode.GRAND_EXCHANGE.toString(), option, target);
|
|
||||||
break;
|
|
||||||
case FALADOR:
|
|
||||||
swap(client, WealthRingMode.FALADOR.toString(), option, target);
|
|
||||||
break;
|
|
||||||
case DONDAKAN:
|
|
||||||
swap(client, WealthRingMode.DONDAKAN.toString(), option, target);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -361,37 +412,9 @@ public class EasyscapePlugin extends Plugin
|
|||||||
{
|
{
|
||||||
if (target.toLowerCase().contains("amulet of glory") || target.toLowerCase().contains("amulet of eternal glory"))
|
if (target.toLowerCase().contains("amulet of glory") || target.toLowerCase().contains("amulet of eternal glory"))
|
||||||
{
|
{
|
||||||
switch (config.getGloryMode())
|
swap(client, config.getGloryMode().toString(), option, target);
|
||||||
{
|
|
||||||
case EDGEVILLE:
|
|
||||||
swap(client, GloryMode.EDGEVILLE.toString(), option, target);
|
|
||||||
break;
|
|
||||||
case KARAMJA:
|
|
||||||
swap(client, GloryMode.KARAMJA.toString(), option, target);
|
|
||||||
break;
|
|
||||||
case DRAYNOR_VILLAGE:
|
|
||||||
swap(client, GloryMode.DRAYNOR_VILLAGE.toString(), option, target);
|
|
||||||
break;
|
|
||||||
case AL_KHARID:
|
|
||||||
swap(client, GloryMode.AL_KHARID.toString(), option, target);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (target.toLowerCase().contains("crafting cape") && config.getSwapCraftingCape())
|
|
||||||
{
|
|
||||||
swap(client, "Teleport", option, target);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if (target.toLowerCase().contains("construct. cape") && config.getSwapConstructionCape())
|
|
||||||
{
|
|
||||||
swap(client, "Tele to poh", option, target);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void delete(int target)
|
private void delete(int target)
|
||||||
@@ -409,12 +432,30 @@ public class EasyscapePlugin extends Plugin
|
|||||||
|
|
||||||
private boolean isEssencePouch(String target)
|
private boolean isEssencePouch(String target)
|
||||||
{
|
{
|
||||||
return (target.equalsIgnoreCase("Small Pouch") || target.equalsIgnoreCase("Medium Pouch") || target.equalsIgnoreCase("Large Pouch") || target.equalsIgnoreCase("Giant Pouch"));
|
return (target.equalsIgnoreCase("Small Pouch") ||
|
||||||
|
target.equalsIgnoreCase("Medium Pouch") ||
|
||||||
|
target.equalsIgnoreCase("Large Pouch") ||
|
||||||
|
target.equalsIgnoreCase("Giant Pouch"));
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isHouse()
|
@Subscribe
|
||||||
|
public void onGameObjectSpawned(GameObjectSpawned event)
|
||||||
{
|
{
|
||||||
return client.getMapRegions()[0] == HOUSE_REGION_ID;
|
final GameObject gameObject = event.getGameObject();
|
||||||
|
if (PORTAL_4525 == gameObject.getId())
|
||||||
|
{
|
||||||
|
this.inHouse = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
public void onGameObjectDespawned(GameObjectDespawned event)
|
||||||
|
{
|
||||||
|
final GameObject gameObject = event.getGameObject();
|
||||||
|
if (PORTAL_4525 == gameObject.getId())
|
||||||
|
{
|
||||||
|
this.inHouse = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isPuroPuro()
|
private boolean isPuroPuro()
|
||||||
@@ -431,5 +472,4 @@ public class EasyscapePlugin extends Plugin
|
|||||||
return location.getRegionID() == PURO_PURO_REGION_ID;
|
return location.getRegionID() == PURO_PURO_REGION_ID;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
|
||||||
@@ -1,341 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2018, https://runelitepl.us
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions are met:
|
|
||||||
*
|
|
||||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
|
||||||
* list of conditions and the following disclaimer.
|
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
|
||||||
* and/or other materials provided with the distribution.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
||||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
|
||||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*/
|
|
||||||
package net.runelite.client.plugins.easyscape;
|
|
||||||
|
|
||||||
import net.runelite.client.config.Config;
|
|
||||||
import net.runelite.client.config.ConfigGroup;
|
|
||||||
import net.runelite.client.config.ConfigItem;
|
|
||||||
|
|
||||||
@ConfigGroup("easyscape")
|
|
||||||
public interface EasyscapePluginConfig extends Config
|
|
||||||
{
|
|
||||||
|
|
||||||
@ConfigItem(
|
|
||||||
keyName = "removeExamine",
|
|
||||||
name = "Remove Examine",
|
|
||||||
description = "",
|
|
||||||
position = 0
|
|
||||||
)
|
|
||||||
default boolean getRemoveExamine()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@ConfigItem(
|
|
||||||
keyName = "swapShop",
|
|
||||||
name = "Easy Shop",
|
|
||||||
description = "Enables swapping of items in the shop with their buy-50 option.",
|
|
||||||
position = 1
|
|
||||||
)
|
|
||||||
default boolean getSwapShop()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@ConfigItem(
|
|
||||||
keyName = "swappedItems",
|
|
||||||
name = "Shop Items",
|
|
||||||
description = "Items listed here will have their value and buy-50 options swapped.",
|
|
||||||
position = 2
|
|
||||||
)
|
|
||||||
default String getSwappedItems()
|
|
||||||
{
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@ConfigItem(
|
|
||||||
keyName = "easyConstruction",
|
|
||||||
name = "Easy Construction",
|
|
||||||
description = "",
|
|
||||||
position = 3
|
|
||||||
)
|
|
||||||
|
|
||||||
default boolean getEasyConstruction()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@ConfigItem(
|
|
||||||
keyName = "constructionItems",
|
|
||||||
name = "Construction Items",
|
|
||||||
description = "",
|
|
||||||
position = 4
|
|
||||||
)
|
|
||||||
|
|
||||||
default String getConstructionItems()
|
|
||||||
{
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@ConfigItem(
|
|
||||||
keyName = "removeObjects",
|
|
||||||
name = "Remove Objects",
|
|
||||||
description = "",
|
|
||||||
position = 5
|
|
||||||
)
|
|
||||||
default boolean getRemoveObjects()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@ConfigItem(
|
|
||||||
keyName = "removedObjects",
|
|
||||||
name = "Removed Objects",
|
|
||||||
description = "",
|
|
||||||
position = 6
|
|
||||||
)
|
|
||||||
default String getRemovedObjects()
|
|
||||||
{
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@ConfigItem(
|
|
||||||
keyName = "swapSmithing",
|
|
||||||
name = "Swap Smithing",
|
|
||||||
description = "Enables swapping of smith-1 and smith-all options.",
|
|
||||||
position = 7
|
|
||||||
)
|
|
||||||
default boolean getSwapSmithing()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@ConfigItem(
|
|
||||||
keyName = "swapTanning",
|
|
||||||
name = "Swap Tanning",
|
|
||||||
description = "Enables swapping of tan-1 and tan-all options.",
|
|
||||||
position = 8
|
|
||||||
)
|
|
||||||
default boolean getSwapTanning()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@ConfigItem(
|
|
||||||
keyName = "swapCrafting",
|
|
||||||
name = "Swap Crafting",
|
|
||||||
description = "",
|
|
||||||
position = 9
|
|
||||||
)
|
|
||||||
default boolean getSwapCrafting()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@ConfigItem(
|
|
||||||
keyName = "swapArdougneCape",
|
|
||||||
name = "Swap Ardougne Cape",
|
|
||||||
description = "Enables swapping of teleport and wear.",
|
|
||||||
position = 10
|
|
||||||
)
|
|
||||||
default boolean getSwapArdougneCape()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@ConfigItem(
|
|
||||||
keyName = "swapStairs",
|
|
||||||
name = "Swap Stairs",
|
|
||||||
description = "",
|
|
||||||
position = 11
|
|
||||||
)
|
|
||||||
|
|
||||||
default boolean getSwapStairs()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@ConfigItem(
|
|
||||||
keyName = "swapSawmill",
|
|
||||||
name = "Swap Sawmill Operator",
|
|
||||||
description = "",
|
|
||||||
position = 12
|
|
||||||
)
|
|
||||||
default boolean getSwapSawmill()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@ConfigItem(
|
|
||||||
keyName = "swapSawmillPlanks",
|
|
||||||
name = "Swap Buy Planks",
|
|
||||||
description = "",
|
|
||||||
position = 13
|
|
||||||
)
|
|
||||||
|
|
||||||
default boolean getSwapSawmillPlanks()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@ConfigItem(
|
|
||||||
keyName = "swapPuroPuro",
|
|
||||||
name = "Swap Puro Puro Wheat",
|
|
||||||
description = "",
|
|
||||||
position = 14
|
|
||||||
)
|
|
||||||
default boolean getSwapPuro()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@ConfigItem(
|
|
||||||
keyName = "swapEssencePounch",
|
|
||||||
name = "Swap Essence Pouch",
|
|
||||||
description = "Enables swapping of fill and empty for essence pounch.",
|
|
||||||
position = 15
|
|
||||||
)
|
|
||||||
default boolean getSwapEssencePouch()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@ConfigItem(
|
|
||||||
keyName = "essenceMode",
|
|
||||||
name = "Essence Pouch Mode",
|
|
||||||
description = "Runecrafting or essence mining mode.",
|
|
||||||
position = 16
|
|
||||||
)
|
|
||||||
|
|
||||||
default EssenceMode getEssenceMode()
|
|
||||||
{
|
|
||||||
return EssenceMode.RUNECRAFTING;
|
|
||||||
}
|
|
||||||
|
|
||||||
@ConfigItem(
|
|
||||||
keyName = "swapGamesNecklace",
|
|
||||||
name = "Swap Games Necklace",
|
|
||||||
description = "Enables swapping of games necklace.",
|
|
||||||
position = 17
|
|
||||||
)
|
|
||||||
default boolean getGamesNecklace()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@ConfigItem(
|
|
||||||
keyName = "gamesNecklaceMode",
|
|
||||||
name = "Games Necklace Mode",
|
|
||||||
description = "Teleport location mode.",
|
|
||||||
position = 18
|
|
||||||
)
|
|
||||||
|
|
||||||
default GamesNecklaceMode getGamesNecklaceMode()
|
|
||||||
{
|
|
||||||
return GamesNecklaceMode.BURTHORPE;
|
|
||||||
}
|
|
||||||
|
|
||||||
@ConfigItem(
|
|
||||||
keyName = "swapDuelingRing",
|
|
||||||
name = "Swap Dueling Ring",
|
|
||||||
description = "Enables swapping of dueling ring.",
|
|
||||||
position = 19
|
|
||||||
)
|
|
||||||
default boolean getDuelingRing()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@ConfigItem(
|
|
||||||
keyName = "duelingRingMode",
|
|
||||||
name = "Dueling Ring Mode",
|
|
||||||
description = "Teleport location mode.",
|
|
||||||
position = 20
|
|
||||||
)
|
|
||||||
|
|
||||||
default DuelingRingMode getDuelingRingMode()
|
|
||||||
{
|
|
||||||
return DuelingRingMode.DUEL_ARENA;
|
|
||||||
}
|
|
||||||
|
|
||||||
@ConfigItem(
|
|
||||||
keyName = "swapGlory",
|
|
||||||
name = "Swap Glory",
|
|
||||||
description = "Enables swapping of Amulet of Glory.",
|
|
||||||
position = 21
|
|
||||||
)
|
|
||||||
default boolean getGlory()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@ConfigItem(
|
|
||||||
keyName = "gloryMode",
|
|
||||||
name = "Glory Mode",
|
|
||||||
description = "Teleport location mode.",
|
|
||||||
position = 22
|
|
||||||
)
|
|
||||||
|
|
||||||
default GloryMode getGloryMode()
|
|
||||||
{
|
|
||||||
return GloryMode.EDGEVILLE;
|
|
||||||
}
|
|
||||||
|
|
||||||
@ConfigItem(
|
|
||||||
keyName = "swapWealthRing",
|
|
||||||
name = "Swap Ring of Wealth",
|
|
||||||
description = "Enables swapping of Ring of Wealth.",
|
|
||||||
position = 23
|
|
||||||
)
|
|
||||||
default boolean getWealthRing()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@ConfigItem(
|
|
||||||
keyName = "WealthRingMode",
|
|
||||||
name = "Wealth Ring Mode",
|
|
||||||
description = "Teleport location mode.",
|
|
||||||
position = 24
|
|
||||||
)
|
|
||||||
|
|
||||||
default WealthRingMode getWealthRingMode()
|
|
||||||
{
|
|
||||||
return WealthRingMode.GRAND_EXCHANGE;
|
|
||||||
}
|
|
||||||
|
|
||||||
@ConfigItem(
|
|
||||||
keyName = "swapConstructionCape",
|
|
||||||
name = "Swap Construction Cape",
|
|
||||||
description = "Enables swapping of teleport and wear.",
|
|
||||||
position = 25
|
|
||||||
)
|
|
||||||
default boolean getSwapConstructionCape()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@ConfigItem(
|
|
||||||
keyName = "swapCraftingCape",
|
|
||||||
name = "Swap Crafting Cape",
|
|
||||||
description = "Enables swapping of teleport and wear.",
|
|
||||||
position = 26
|
|
||||||
)
|
|
||||||
default boolean getSwapCraftingCape()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2018, https://runelitepl.us
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions are met:
|
|
||||||
*
|
|
||||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
|
||||||
* list of conditions and the following disclaimer.
|
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
|
||||||
* and/or other materials provided with the distribution.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
||||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
|
||||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*/
|
|
||||||
package net.runelite.client.plugins.easyscape;
|
|
||||||
|
|
||||||
public enum WealthRingMode
|
|
||||||
{
|
|
||||||
MISCELLANIA("Miscellania"),
|
|
||||||
GRAND_EXCHANGE("Grand Exchange"),
|
|
||||||
FALADOR("Falador"),
|
|
||||||
DONDAKAN("Dondakan");
|
|
||||||
|
|
||||||
private final String name;
|
|
||||||
|
|
||||||
WealthRingMode(String name)
|
|
||||||
{
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString()
|
|
||||||
{
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,45 +1,45 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2018, https://runelitepl.us
|
* Copyright (c) 2019, Alan Baumgartner <https://github.com/alanbaumgartner>
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
*
|
*
|
||||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||||
* list of conditions and the following disclaimer.
|
* list of conditions and the following disclaimer.
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
* this list of conditions and the following disclaimer in the documentation
|
||||||
* and/or other materials provided with the distribution.
|
* and/or other materials provided with the distribution.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
package net.runelite.client.plugins.easyscape;
|
package net.runelite.client.plugins.easyscape.util;
|
||||||
|
|
||||||
public enum DuelingRingMode
|
public enum DuelingRingMode
|
||||||
{
|
{
|
||||||
DUEL_ARENA("Duel Arena"),
|
DUEL_ARENA("Duel Arena"),
|
||||||
CASTLE_WARS("Castle Wars"),
|
CASTLE_WARS("Castle Wars"),
|
||||||
CLAN_WARS("Clan Wars");
|
CLAN_WARS("Clan Wars");
|
||||||
|
|
||||||
private final String name;
|
private final String name;
|
||||||
|
|
||||||
DuelingRingMode(String name)
|
DuelingRingMode(String name)
|
||||||
{
|
{
|
||||||
this.name = name;
|
this.name = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString()
|
public String toString()
|
||||||
{
|
{
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,44 +1,44 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2018, https://runelitepl.us
|
* Copyright (c) 2019, Alan Baumgartner <https://github.com/alanbaumgartner>
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
*
|
*
|
||||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||||
* list of conditions and the following disclaimer.
|
* list of conditions and the following disclaimer.
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
* this list of conditions and the following disclaimer in the documentation
|
||||||
* and/or other materials provided with the distribution.
|
* and/or other materials provided with the distribution.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
package net.runelite.client.plugins.easyscape;
|
package net.runelite.client.plugins.easyscape.util;
|
||||||
|
|
||||||
public enum EssenceMode
|
public enum EssenceMode
|
||||||
{
|
{
|
||||||
RUNECRAFTING("Runecrafting"),
|
RUNECRAFTING("Runecrafting"),
|
||||||
ESSENCE_MINING("Essence Mining");
|
ESSENCE_MINING("Essence Mining");
|
||||||
|
|
||||||
private final String name;
|
private final String name;
|
||||||
|
|
||||||
EssenceMode(String name)
|
EssenceMode(String name)
|
||||||
{
|
{
|
||||||
this.name = name;
|
this.name = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString()
|
public String toString()
|
||||||
{
|
{
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,47 +1,47 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2018, https://runelitepl.us
|
* Copyright (c) 2019, Alan Baumgartner <https://github.com/alanbaumgartner>
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
*
|
*
|
||||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||||
* list of conditions and the following disclaimer.
|
* list of conditions and the following disclaimer.
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
* this list of conditions and the following disclaimer in the documentation
|
||||||
* and/or other materials provided with the distribution.
|
* and/or other materials provided with the distribution.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
package net.runelite.client.plugins.easyscape;
|
package net.runelite.client.plugins.easyscape.util;
|
||||||
|
|
||||||
public enum GamesNecklaceMode
|
public enum GamesNecklaceMode
|
||||||
{
|
{
|
||||||
BURTHORPE("Burthorpe"),
|
BURTHORPE("Burthorpe"),
|
||||||
BARBARIAN_OUTPOST("Barbarian Outpost"),
|
BARBARIAN_OUTPOST("Barbarian Outpost"),
|
||||||
CORPOREAL_BEAST("Corporeal Beast"),
|
CORPOREAL_BEAST("Corporeal Beast"),
|
||||||
TEARS_OF_GUTHIX("Tears of Guthix"),
|
TEARS_OF_GUTHIX("Tears of Guthix"),
|
||||||
WINTERTODT("Wintertodt Camp");
|
WINTERTODT("Wintertodt Camp");
|
||||||
|
|
||||||
private final String name;
|
private final String name;
|
||||||
|
|
||||||
GamesNecklaceMode(String name)
|
GamesNecklaceMode(String name)
|
||||||
{
|
{
|
||||||
this.name = name;
|
this.name = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString()
|
public String toString()
|
||||||
{
|
{
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,46 +1,46 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2018, https://runelitepl.us
|
* Copyright (c) 2019, Alan Baumgartner <https://github.com/alanbaumgartner>
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
*
|
*
|
||||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||||
* list of conditions and the following disclaimer.
|
* list of conditions and the following disclaimer.
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
* this list of conditions and the following disclaimer in the documentation
|
||||||
* and/or other materials provided with the distribution.
|
* and/or other materials provided with the distribution.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
package net.runelite.client.plugins.easyscape;
|
package net.runelite.client.plugins.easyscape.util;
|
||||||
|
|
||||||
public enum GloryMode
|
public enum GloryMode
|
||||||
{
|
{
|
||||||
EDGEVILLE("Edgeville"),
|
EDGEVILLE("Edgeville"),
|
||||||
KARAMJA("Karamja"),
|
KARAMJA("Karamja"),
|
||||||
DRAYNOR_VILLAGE("Draynor Village"),
|
DRAYNOR_VILLAGE("Draynor Village"),
|
||||||
AL_KHARID("Al Kharid");
|
AL_KHARID("Al Kharid");
|
||||||
|
|
||||||
private final String name;
|
private final String name;
|
||||||
|
|
||||||
GloryMode(String name)
|
GloryMode(String name)
|
||||||
{
|
{
|
||||||
this.name = name;
|
this.name = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString()
|
public String toString()
|
||||||
{
|
{
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user