# IRecap
Core interface for the Recap plugin. Implemented by the main `Recap` plugin class and registered via `RecapAPI.register()`.
---
## Source
```java
package gg.lode.recap.api;
import gg.lode.recap.api.recording.IRecordingManager;
import gg.lode.recap.api.scene.ISceneManager;
import java.util.Set;
public interface IRecap {
IRecordingManager getRecordingManager();
ISceneManager getSceneManager();
// ─── Captured-packet allowlist ─────────────────────────────
/** Allowlist a packet type name (PacketEvents PacketType constant). */
void capturePacketType(String packetTypeName);
/** Remove a packet type from the allowlist. */
void uncapturePacketType(String packetTypeName);
/** Read-only view of every allowlisted packet type. */
Set<String> getCapturedPacketTypes();
/** Allowlist a plugin-message channel name (e.g. "yourplugin:effect"). */
void capturePluginMessageChannel(String channel);
/** Remove a channel from the allowlist. */
void uncapturePluginMessageChannel(String channel);
/** Read-only view of every allowlisted channel. */
Set<String> getCapturedPluginMessageChannels();
}
```
---
## When to use the allowlist
If your plugin sends server→client packets that represent visible effects (sounds, lightning, plugin-message effect calls to a client mod), allowlist them at plugin enable. During an active recording the bytes are captured and replayed at the same tick on playback.
See [[Recap/Developers/Packet Capture]] for replay semantics and gotchas.
---
## Related Pages
- [[Recap/API/RecapAPI]] — static accessor that delegates to this interface
- [[Recap/API/IRecordingManager]] — recording management
- [[Recap/API/ISceneManager]] — scene and playback management
- [[Recap/API/IRecordingSession]] — completed recording handle
- [[Recap/Developers/Packet Capture]] — allowlist semantics