# 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