fixes ItemContainerChanged event
This commit is contained in:
@@ -82,4 +82,16 @@ public enum InventoryID
|
|||||||
{
|
{
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static InventoryID getValue(int value)
|
||||||
|
{
|
||||||
|
for (InventoryID e: InventoryID.values())
|
||||||
|
{
|
||||||
|
if (e.id == value)
|
||||||
|
{
|
||||||
|
return e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -24,11 +24,13 @@
|
|||||||
*/
|
*/
|
||||||
package net.runelite.mixins;
|
package net.runelite.mixins;
|
||||||
|
|
||||||
|
import net.runelite.api.InventoryID;
|
||||||
import net.runelite.api.Item;
|
import net.runelite.api.Item;
|
||||||
import net.runelite.api.events.ItemContainerChanged;
|
import net.runelite.api.events.ItemContainerChanged;
|
||||||
import net.runelite.api.mixins.FieldHook;
|
import net.runelite.api.mixins.Copy;
|
||||||
import net.runelite.api.mixins.Inject;
|
import net.runelite.api.mixins.Inject;
|
||||||
import net.runelite.api.mixins.Mixin;
|
import net.runelite.api.mixins.Mixin;
|
||||||
|
import net.runelite.api.mixins.Replace;
|
||||||
import net.runelite.api.mixins.Shadow;
|
import net.runelite.api.mixins.Shadow;
|
||||||
import net.runelite.rs.api.RSClient;
|
import net.runelite.rs.api.RSClient;
|
||||||
import net.runelite.rs.api.RSGroundItem;
|
import net.runelite.rs.api.RSGroundItem;
|
||||||
@@ -41,7 +43,7 @@ public abstract class RSItemContainerMixin implements RSItemContainer
|
|||||||
private static RSClient client;
|
private static RSClient client;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private int rl$lastCycle;
|
static private int rl$lastCycle;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
@Override
|
@Override
|
||||||
@@ -62,21 +64,27 @@ public abstract class RSItemContainerMixin implements RSItemContainer
|
|||||||
return items;
|
return items;
|
||||||
}
|
}
|
||||||
|
|
||||||
@FieldHook("quantities")
|
@Copy("itemContainerSetItem")
|
||||||
@Inject
|
static void rs$itemContainerSetItem(int itemContainerId, int index, int itemId, int itemQuantity)
|
||||||
public void stackSizesChanged(int containerID)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Replace("itemContainerSetItem")
|
||||||
|
static void rl$itemContainerSetItem(int itemContainerId, int index, int itemId, int itemQuantity)
|
||||||
|
{
|
||||||
|
rs$itemContainerSetItem(itemContainerId, index, itemId, itemQuantity);
|
||||||
|
|
||||||
int cycle = client.getGameCycle();
|
int cycle = client.getGameCycle();
|
||||||
if (rl$lastCycle == cycle)
|
if (rl$lastCycle == cycle)
|
||||||
{
|
{
|
||||||
// Limit item container updates to one per cycle
|
// Limit item container updates to one per cycle
|
||||||
|
// No need to repeatedly update. The game just needs to know that containers changed once per cycle
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
rl$lastCycle = cycle;
|
rl$lastCycle = cycle;
|
||||||
|
ItemContainerChanged event = new ItemContainerChanged(itemContainerId, client.getItemContainer(InventoryID.getValue(itemContainerId)));
|
||||||
ItemContainerChanged event = new ItemContainerChanged(containerID, this);
|
|
||||||
client.getCallbacks().postDeferred(event);
|
client.getCallbacks().postDeferred(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user