eventbus: Add event interface
This commit is contained in:
@@ -50,6 +50,7 @@ import net.runelite.api.Renderable;
|
||||
import net.runelite.api.WorldMapManager;
|
||||
import net.runelite.api.events.BeforeMenuRender;
|
||||
import net.runelite.api.events.BeforeRender;
|
||||
import net.runelite.api.events.Event;
|
||||
import net.runelite.api.events.GameTick;
|
||||
import net.runelite.api.hooks.Callbacks;
|
||||
import net.runelite.api.hooks.DrawCallbacks;
|
||||
@@ -128,13 +129,13 @@ public class Hooks implements Callbacks
|
||||
private boolean shouldProcessGameTick;
|
||||
|
||||
@Override
|
||||
public <T> void post(Class<T> eventClass, Object event)
|
||||
public <T> void post(Class<T> eventClass, Event event)
|
||||
{
|
||||
eventBus.post(eventClass, event);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void postDeferred(Class<T> eventClass, Object event)
|
||||
public <T> void postDeferred(Class<T> eventClass, Event event)
|
||||
{
|
||||
deferredEventBus.post(eventClass, event);
|
||||
}
|
||||
|
||||
@@ -25,12 +25,13 @@
|
||||
package net.runelite.client.discord.events;
|
||||
|
||||
import lombok.Value;
|
||||
import net.runelite.api.events.Event;
|
||||
|
||||
/**
|
||||
* Called when the RPC connection has been severed
|
||||
*/
|
||||
@Value
|
||||
public class DiscordDisconnected
|
||||
public class DiscordDisconnected implements Event
|
||||
{
|
||||
/**
|
||||
* Discord error code
|
||||
|
||||
@@ -25,12 +25,13 @@
|
||||
package net.runelite.client.discord.events;
|
||||
|
||||
import lombok.Value;
|
||||
import net.runelite.api.events.Event;
|
||||
|
||||
/**
|
||||
* Called when an internal error is caught within the SDK
|
||||
*/
|
||||
@Value
|
||||
public class DiscordErrored
|
||||
public class DiscordErrored implements Event
|
||||
{
|
||||
/**
|
||||
* Discord error code.
|
||||
|
||||
@@ -25,12 +25,13 @@
|
||||
package net.runelite.client.discord.events;
|
||||
|
||||
import lombok.Value;
|
||||
import net.runelite.api.events.Event;
|
||||
|
||||
/**
|
||||
* Called when the logged in user joined a game
|
||||
*/
|
||||
@Value
|
||||
public class DiscordJoinGame
|
||||
public class DiscordJoinGame implements Event
|
||||
{
|
||||
/**
|
||||
* Obfuscated data of your choosing used as join secret
|
||||
|
||||
@@ -25,12 +25,13 @@
|
||||
package net.runelite.client.discord.events;
|
||||
|
||||
import lombok.Value;
|
||||
import net.runelite.api.events.Event;
|
||||
|
||||
/**
|
||||
* Called when another discord user wants to join the game of the logged in user
|
||||
*/
|
||||
@Value
|
||||
public class DiscordJoinRequest
|
||||
public class DiscordJoinRequest implements Event
|
||||
{
|
||||
/**
|
||||
* The userId for the user that requests to join
|
||||
|
||||
@@ -25,12 +25,13 @@
|
||||
package net.runelite.client.discord.events;
|
||||
|
||||
import lombok.Value;
|
||||
import net.runelite.api.events.Event;
|
||||
|
||||
/**
|
||||
* Called when the RPC connection has been established
|
||||
*/
|
||||
@Value
|
||||
public class DiscordReady
|
||||
public class DiscordReady implements Event
|
||||
{
|
||||
/**
|
||||
* The userId for the active user
|
||||
|
||||
@@ -25,12 +25,13 @@
|
||||
package net.runelite.client.discord.events;
|
||||
|
||||
import lombok.Value;
|
||||
import net.runelite.api.events.Event;
|
||||
|
||||
/**
|
||||
* Called when the logged in user joined to spectate a game
|
||||
*/
|
||||
@Value
|
||||
public class DiscordSpectateGame
|
||||
public class DiscordSpectateGame implements Event
|
||||
{
|
||||
/**
|
||||
* Obfuscated data of your choosing used as spectate secret
|
||||
|
||||
@@ -11,6 +11,7 @@ import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import javax.inject.Singleton;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.runelite.api.events.Event;
|
||||
import org.apache.commons.lang3.exception.ExceptionUtils;
|
||||
|
||||
@Slf4j
|
||||
@@ -75,7 +76,7 @@ public class EventBus implements EventBusInterface
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void post(Class<T> eventClass, @NonNull Object event)
|
||||
public <T> void post(Class<T> eventClass, @NonNull Event event)
|
||||
{
|
||||
getSubject(eventClass).accept(event);
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package net.runelite.client.eventbus;
|
||||
|
||||
import io.reactivex.annotations.NonNull;
|
||||
import io.reactivex.functions.Consumer;
|
||||
import net.runelite.api.events.Event;
|
||||
|
||||
public interface EventBusInterface
|
||||
{
|
||||
@@ -9,5 +10,5 @@ public interface EventBusInterface
|
||||
|
||||
void unregister(@NonNull Object lifecycle);
|
||||
|
||||
<T> void post(Class<T> eventClass, @NonNull Object event);
|
||||
<T> void post(Class<T> eventClass, @NonNull Event event);
|
||||
}
|
||||
|
||||
@@ -25,10 +25,11 @@
|
||||
package net.runelite.client.events;
|
||||
|
||||
import lombok.Value;
|
||||
import net.runelite.api.events.Event;
|
||||
import net.runelite.client.ui.NavigationButton;
|
||||
|
||||
@Value
|
||||
public class NavigationButtonAdded
|
||||
public class NavigationButtonAdded implements Event
|
||||
{
|
||||
private NavigationButton button;
|
||||
}
|
||||
|
||||
@@ -25,10 +25,11 @@
|
||||
package net.runelite.client.events;
|
||||
|
||||
import lombok.Value;
|
||||
import net.runelite.api.events.Event;
|
||||
import net.runelite.client.ui.NavigationButton;
|
||||
|
||||
@Value
|
||||
public class NavigationButtonRemoved
|
||||
public class NavigationButtonRemoved implements Event
|
||||
{
|
||||
private NavigationButton button;
|
||||
}
|
||||
|
||||
@@ -27,10 +27,11 @@ package net.runelite.client.events;
|
||||
import java.util.Collection;
|
||||
import lombok.Value;
|
||||
import net.runelite.api.NPC;
|
||||
import net.runelite.api.events.Event;
|
||||
import net.runelite.client.game.ItemStack;
|
||||
|
||||
@Value
|
||||
public class NpcLootReceived
|
||||
public class NpcLootReceived implements Event
|
||||
{
|
||||
private final NPC npc;
|
||||
private final Collection<ItemStack> items;
|
||||
|
||||
@@ -26,6 +26,7 @@ package net.runelite.client.events;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import net.runelite.api.events.Event;
|
||||
import net.runelite.client.ui.overlay.Overlay;
|
||||
import net.runelite.client.ui.overlay.OverlayMenuEntry;
|
||||
|
||||
@@ -34,7 +35,7 @@ import net.runelite.client.ui.overlay.OverlayMenuEntry;
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
public class OverlayMenuClicked
|
||||
public class OverlayMenuClicked implements Event
|
||||
{
|
||||
private OverlayMenuEntry entry;
|
||||
private Overlay overlay;
|
||||
|
||||
@@ -26,9 +26,10 @@ package net.runelite.client.events;
|
||||
|
||||
import java.util.UUID;
|
||||
import lombok.Value;
|
||||
import net.runelite.api.events.Event;
|
||||
|
||||
@Value
|
||||
public class PartyChanged
|
||||
public class PartyChanged implements Event
|
||||
{
|
||||
private final UUID partyId;
|
||||
}
|
||||
|
||||
@@ -27,10 +27,11 @@ package net.runelite.client.events;
|
||||
import java.util.Collection;
|
||||
import lombok.Value;
|
||||
import net.runelite.api.Player;
|
||||
import net.runelite.api.events.Event;
|
||||
import net.runelite.client.game.ItemStack;
|
||||
|
||||
@Value
|
||||
public class PlayerLootReceived
|
||||
public class PlayerLootReceived implements Event
|
||||
{
|
||||
private final Player player;
|
||||
private final Collection<ItemStack> items;
|
||||
|
||||
@@ -25,10 +25,11 @@
|
||||
package net.runelite.client.events;
|
||||
|
||||
import lombok.Data;
|
||||
import net.runelite.api.events.Event;
|
||||
import net.runelite.client.plugins.Plugin;
|
||||
|
||||
@Data
|
||||
public class PluginChanged
|
||||
public class PluginChanged implements Event
|
||||
{
|
||||
private final Plugin plugin;
|
||||
private final boolean loaded;
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
package net.runelite.client.events;
|
||||
|
||||
import lombok.Data;
|
||||
import net.runelite.api.events.Event;
|
||||
|
||||
/**
|
||||
* An event where a new RuneLite account session has been closed,
|
||||
@@ -34,7 +35,7 @@ import lombok.Data;
|
||||
* it has nothing to do with whether an account is being logged out.
|
||||
*/
|
||||
@Data
|
||||
public class SessionClose
|
||||
public class SessionClose implements Event
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
package net.runelite.client.events;
|
||||
|
||||
import lombok.Data;
|
||||
import net.runelite.api.events.Event;
|
||||
|
||||
/**
|
||||
* An event where a new RuneLite account session has been opened
|
||||
@@ -34,7 +35,7 @@ import lombok.Data;
|
||||
* it has nothing to do with whether an account is being logged in.
|
||||
*/
|
||||
@Data
|
||||
public class SessionOpen
|
||||
public class SessionOpen implements Event
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
*/
|
||||
package net.runelite.client.plugins.loottracker.localstorage.events;
|
||||
|
||||
public class LTNameChange
|
||||
import net.runelite.api.events.Event;
|
||||
|
||||
public class LTNameChange implements Event
|
||||
{
|
||||
}
|
||||
@@ -25,10 +25,11 @@
|
||||
package net.runelite.client.plugins.loottracker.localstorage.events;
|
||||
|
||||
import lombok.Data;
|
||||
import net.runelite.api.events.Event;
|
||||
import net.runelite.client.plugins.loottracker.localstorage.LTRecord;
|
||||
|
||||
@Data
|
||||
public class LTRecordStored
|
||||
public class LTRecordStored implements Event
|
||||
{
|
||||
private final LTRecord record;
|
||||
}
|
||||
@@ -27,11 +27,12 @@ package net.runelite.client.plugins.party.messages;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Value;
|
||||
import net.runelite.api.coords.WorldPoint;
|
||||
import net.runelite.api.events.Event;
|
||||
import net.runelite.http.api.ws.messages.party.PartyMemberMessage;
|
||||
|
||||
@Value
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class LocationUpdate extends PartyMemberMessage
|
||||
public class LocationUpdate extends PartyMemberMessage implements Event
|
||||
{
|
||||
private final WorldPoint worldPoint;
|
||||
}
|
||||
|
||||
@@ -27,11 +27,12 @@ package net.runelite.client.plugins.party.messages;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import net.runelite.api.Skill;
|
||||
import net.runelite.api.events.Event;
|
||||
import net.runelite.http.api.ws.messages.party.PartyMemberMessage;
|
||||
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
public class SkillUpdate extends PartyMemberMessage
|
||||
public class SkillUpdate extends PartyMemberMessage implements Event
|
||||
{
|
||||
private final Skill skill;
|
||||
private final int value;
|
||||
|
||||
@@ -27,11 +27,12 @@ package net.runelite.client.plugins.party.messages;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Value;
|
||||
import net.runelite.api.coords.WorldPoint;
|
||||
import net.runelite.api.events.Event;
|
||||
import net.runelite.http.api.ws.messages.party.PartyMemberMessage;
|
||||
|
||||
@Value
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class TilePing extends PartyMemberMessage
|
||||
public class TilePing extends PartyMemberMessage implements Event
|
||||
{
|
||||
private final WorldPoint point;
|
||||
}
|
||||
|
||||
@@ -26,11 +26,12 @@ package net.runelite.client.plugins.specialcounter;
|
||||
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Value;
|
||||
import net.runelite.api.events.Event;
|
||||
import net.runelite.http.api.ws.messages.party.PartyMemberMessage;
|
||||
|
||||
@Value
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
class SpecialCounterUpdate extends PartyMemberMessage
|
||||
class SpecialCounterUpdate extends PartyMemberMessage implements Event
|
||||
{
|
||||
private final int npcId;
|
||||
private final SpecialWeapon weapon;
|
||||
|
||||
@@ -29,6 +29,7 @@ import java.util.Queue;
|
||||
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
import net.runelite.api.events.Event;
|
||||
import net.runelite.client.eventbus.EventBus;
|
||||
import org.apache.commons.lang3.tuple.ImmutablePair;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
@@ -37,7 +38,7 @@ import org.apache.commons.lang3.tuple.Pair;
|
||||
public class DeferredEventBus extends EventBus
|
||||
{
|
||||
private final EventBus eventBus;
|
||||
private final Queue<Pair<Class, Object>> pendingEvents = new ConcurrentLinkedQueue<>();
|
||||
private final Queue<Pair<Class, Event>> pendingEvents = new ConcurrentLinkedQueue<>();
|
||||
|
||||
@Inject
|
||||
private DeferredEventBus(EventBus eventBus)
|
||||
@@ -46,7 +47,7 @@ public class DeferredEventBus extends EventBus
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void post(Class<T> eventClass, @NonNull Object event)
|
||||
public <T> void post(Class<T> eventClass, @NonNull Event event)
|
||||
{
|
||||
pendingEvents.add(new ImmutablePair<>(eventClass, event));
|
||||
}
|
||||
@@ -57,7 +58,7 @@ public class DeferredEventBus extends EventBus
|
||||
int size = pendingEvents.size();
|
||||
while (size-- > 0)
|
||||
{
|
||||
Pair<Class, Object> eventPair = pendingEvents.poll();
|
||||
Pair<Class, Event> eventPair = pendingEvents.poll();
|
||||
if (eventPair != null)
|
||||
{
|
||||
eventBus.post(eventPair.getKey(), eventPair.getValue());
|
||||
|
||||
Reference in New Issue
Block a user