mta plugin: use item events

This commit is contained in:
Adam
2018-07-15 16:36:29 -04:00
parent 216d24ef5d
commit ca4616bac4

View File

@@ -33,13 +33,13 @@ import net.runelite.api.Client;
import net.runelite.api.GameState; import net.runelite.api.GameState;
import net.runelite.api.Item; import net.runelite.api.Item;
import net.runelite.api.ItemID; import net.runelite.api.ItemID;
import net.runelite.api.ItemLayer;
import net.runelite.api.Player; import net.runelite.api.Player;
import net.runelite.api.Tile; import net.runelite.api.Tile;
import net.runelite.api.coords.WorldPoint; import net.runelite.api.coords.WorldPoint;
import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.GameTick; import net.runelite.api.events.GameTick;
import net.runelite.api.events.ItemLayerChanged; import net.runelite.api.events.ItemDespawned;
import net.runelite.api.events.ItemSpawned;
import net.runelite.client.plugins.mta.MTAConfig; import net.runelite.client.plugins.mta.MTAConfig;
import net.runelite.client.plugins.mta.MTARoom; import net.runelite.client.plugins.mta.MTARoom;
@@ -61,12 +61,9 @@ public class EnchantmentRoom extends MTARoom
@Subscribe @Subscribe
public void onGameStateChanged(GameStateChanged gameStateChanged) public void onGameStateChanged(GameStateChanged gameStateChanged)
{ {
if (gameStateChanged.getGameState() == GameState.LOGGED_IN) if (gameStateChanged.getGameState() == GameState.LOADING)
{ {
if (!inside()) dragonstones.clear();
{
dragonstones.clear();
}
} }
} }
@@ -103,42 +100,30 @@ public class EnchantmentRoom extends MTARoom
} }
@Subscribe @Subscribe
public void onItemLayerChanged(ItemLayerChanged event) public void onItemSpawned(ItemSpawned itemSpawned)
{ {
if (!inside()) final Item item = itemSpawned.getItem();
final Tile tile = itemSpawned.getTile();
if (item.getId() == ItemID.DRAGONSTONE_6903)
{ {
return; WorldPoint location = tile.getWorldLocation();
log.debug("Adding dragonstone at {}", location);
dragonstones.add(location);
} }
}
Tile changed = event.getTile(); @Subscribe
ItemLayer itemLayer = changed.getItemLayer(); public void onItemDespawned(ItemDespawned itemDespawned)
WorldPoint worldPoint = changed.getWorldLocation(); {
final Item item = itemDespawned.getItem();
final Tile tile = itemDespawned.getTile();
List<Item> groundItems = changed.getGroundItems(); if (item.getId() == ItemID.DRAGONSTONE_6903)
if (groundItems == null)
{ {
boolean removed = dragonstones.remove(worldPoint); WorldPoint location = tile.getWorldLocation();
if (removed) log.debug("Removed dragonstone at {}", location);
{ dragonstones.remove(location);
log.debug("Removed dragonstone at {}", worldPoint);
}
return;
}
for (Item item : changed.getGroundItems())
{
if (item.getId() == ItemID.DRAGONSTONE_6903)
{
log.debug("Adding dragonstone at {}", worldPoint);
dragonstones.add(worldPoint);
return;
}
}
boolean removed = dragonstones.remove(worldPoint);
if (removed)
{
log.debug("Removed dragonstone at {}", worldPoint);
} }
} }