Merge pull request #7828 from deathbeam/fix-item-comp-cache
Reset item composition cache on menu shift-click change
This commit is contained in:
@@ -1574,4 +1574,9 @@ public interface Client extends GameEngine
|
|||||||
* Sets if a widget is in target mode
|
* Sets if a widget is in target mode
|
||||||
*/
|
*/
|
||||||
void setSpellSelected(boolean selected);
|
void setSpellSelected(boolean selected);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns client item composition cache
|
||||||
|
*/
|
||||||
|
NodeCache getItemCompositionCache();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -256,6 +256,15 @@ public class ItemManager
|
|||||||
itemCompositions.put(event.getItemComposition().getId(), event.getItemComposition());
|
itemCompositions.put(event.getItemComposition().getId(), event.getItemComposition());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Invalidates internal item manager item composition cache (but not client item composition cache)
|
||||||
|
* @see Client#getItemCompositionCache()
|
||||||
|
*/
|
||||||
|
public void invalidateItemCompositionCache()
|
||||||
|
{
|
||||||
|
itemCompositions.invalidateAll();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Look up an item's price
|
* Look up an item's price
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -45,8 +45,10 @@ import net.runelite.api.events.MenuOptionClicked;
|
|||||||
import net.runelite.api.events.PostItemComposition;
|
import net.runelite.api.events.PostItemComposition;
|
||||||
import net.runelite.api.events.WidgetMenuOptionClicked;
|
import net.runelite.api.events.WidgetMenuOptionClicked;
|
||||||
import net.runelite.api.widgets.WidgetInfo;
|
import net.runelite.api.widgets.WidgetInfo;
|
||||||
|
import net.runelite.client.callback.ClientThread;
|
||||||
import net.runelite.client.config.ConfigManager;
|
import net.runelite.client.config.ConfigManager;
|
||||||
import net.runelite.client.eventbus.Subscribe;
|
import net.runelite.client.eventbus.Subscribe;
|
||||||
|
import net.runelite.client.game.ItemManager;
|
||||||
import net.runelite.client.game.ItemVariationMapping;
|
import net.runelite.client.game.ItemVariationMapping;
|
||||||
import net.runelite.client.input.KeyManager;
|
import net.runelite.client.input.KeyManager;
|
||||||
import net.runelite.client.menus.MenuManager;
|
import net.runelite.client.menus.MenuManager;
|
||||||
@@ -101,6 +103,9 @@ public class MenuEntrySwapperPlugin extends Plugin
|
|||||||
@Inject
|
@Inject
|
||||||
private Client client;
|
private Client client;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private ClientThread clientThread;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private MenuEntrySwapperConfig config;
|
private MenuEntrySwapperConfig config;
|
||||||
|
|
||||||
@@ -116,6 +121,9 @@ public class MenuEntrySwapperPlugin extends Plugin
|
|||||||
@Inject
|
@Inject
|
||||||
private MenuManager menuManager;
|
private MenuManager menuManager;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private ItemManager itemManager;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private boolean configuringShiftClick = false;
|
private boolean configuringShiftClick = false;
|
||||||
|
|
||||||
@@ -146,6 +154,11 @@ public class MenuEntrySwapperPlugin extends Plugin
|
|||||||
@Subscribe
|
@Subscribe
|
||||||
public void onConfigChanged(ConfigChanged event)
|
public void onConfigChanged(ConfigChanged event)
|
||||||
{
|
{
|
||||||
|
if (!CONFIG_GROUP.equals(event.getGroup()))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (event.getKey().equals("shiftClickCustomization"))
|
if (event.getKey().equals("shiftClickCustomization"))
|
||||||
{
|
{
|
||||||
if (config.shiftClickCustomization())
|
if (config.shiftClickCustomization())
|
||||||
@@ -157,6 +170,16 @@ public class MenuEntrySwapperPlugin extends Plugin
|
|||||||
disableCustomization();
|
disableCustomization();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (event.getKey().startsWith(ITEM_KEY_PREFIX))
|
||||||
|
{
|
||||||
|
clientThread.invoke(this::resetItemCompositionCache);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void resetItemCompositionCache()
|
||||||
|
{
|
||||||
|
itemManager.invalidateItemCompositionCache();
|
||||||
|
client.getItemCompositionCache().reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
private Integer getSwapConfig(int itemId)
|
private Integer getSwapConfig(int itemId)
|
||||||
@@ -187,6 +210,7 @@ public class MenuEntrySwapperPlugin extends Plugin
|
|||||||
{
|
{
|
||||||
keyManager.registerKeyListener(inputListener);
|
keyManager.registerKeyListener(inputListener);
|
||||||
refreshShiftClickCustomizationMenus();
|
refreshShiftClickCustomizationMenus();
|
||||||
|
clientThread.invoke(this::resetItemCompositionCache);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void disableCustomization()
|
private void disableCustomization()
|
||||||
@@ -194,6 +218,7 @@ public class MenuEntrySwapperPlugin extends Plugin
|
|||||||
keyManager.unregisterKeyListener(inputListener);
|
keyManager.unregisterKeyListener(inputListener);
|
||||||
removeShiftClickCustomizationMenus();
|
removeShiftClickCustomizationMenus();
|
||||||
configuringShiftClick = false;
|
configuringShiftClick = false;
|
||||||
|
clientThread.invoke(this::resetItemCompositionCache);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
@@ -291,7 +316,6 @@ public class MenuEntrySwapperPlugin extends Plugin
|
|||||||
if (option.equals(RESET) && target.equals(MENU_TARGET))
|
if (option.equals(RESET) && target.equals(MENU_TARGET))
|
||||||
{
|
{
|
||||||
unsetSwapConfig(itemId);
|
unsetSwapConfig(itemId);
|
||||||
itemComposition.resetShiftClickActionIndex();
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -324,7 +348,6 @@ public class MenuEntrySwapperPlugin extends Plugin
|
|||||||
if (valid)
|
if (valid)
|
||||||
{
|
{
|
||||||
setSwapConfig(itemId, index);
|
setSwapConfig(itemId, index);
|
||||||
itemComposition.setShiftClickActionIndex(index);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -785,6 +785,10 @@ public interface RSClient extends RSGameEngine, Client
|
|||||||
@Override
|
@Override
|
||||||
RSNodeCache getWidgetSpriteCache();
|
RSNodeCache getWidgetSpriteCache();
|
||||||
|
|
||||||
|
@Import("items")
|
||||||
|
@Override
|
||||||
|
RSNodeCache getItemCompositionCache();
|
||||||
|
|
||||||
@Import("oculusOrbState")
|
@Import("oculusOrbState")
|
||||||
@Override
|
@Override
|
||||||
int getOculusOrbState();
|
int getOculusOrbState();
|
||||||
|
|||||||
Reference in New Issue
Block a user