BigBrother

Administration v1.0.3

Player activity monitoring through command, sign, anvil, book, and portal spies with per-player toggles and filters.

monitoring logging staff
Minecraft
1.21+
Server
Paper, Purpur, Spigot
Java
21+

BigBrother

BigBrother monitors player activity through configurable spy features.

Also available on SpigotMC: https://www.spigotmc.org/resources/bigbrother.139509/


Features

  • Spy types: Command, Sign, Anvil, Book, Portal.
  • Global server toggle (global_toggle) and per-player global toggle via /bigbrother.
  • Per-player per-spy toggles.
  • Toggle other players with .toggle.others permissions.
  • Filters: excluded commands, players, worlds.
  • Notifies staff with matching spy permission, excluding the trigger player, and the console.
  • Configurable per-spy messages with placeholders.
  • Status command lists enabled spy features.
  • Runs on Spigot, Paper, and Purpur

Commands

All /bigbrother subcommands also require bigbrother.use because the command’s base permission is checked first.

Command Description Permission
/bigbrother Toggle all spy features for yourself bigbrother.use
/bigbrother help Show help bigbrother.use
/bigbrother status Show enabled spy features bigbrother.use
/bigbrother reload Reload configuration bigbrother.use + bigbrother.reload
/bigbrother commands [player] Toggle command spy bigbrother.use + bigbrother.commandspy.toggle; other player requires bigbrother.commandspy.toggle.others
/bigbrother signs [player] Toggle sign spy bigbrother.use + bigbrother.signspy.toggle; other player requires bigbrother.signspy.toggle.others
/bigbrother anvils [player] Toggle anvil spy bigbrother.use + bigbrother.anvilspy.toggle; other player requires bigbrother.anvilspy.toggle.others
/bigbrother books [player] Toggle book spy bigbrother.use + bigbrother.bookspy.toggle; other player requires bigbrother.bookspy.toggle.others
/bigbrother portals [player] Toggle portal spy bigbrother.use + bigbrother.portalspy.toggle; other player requires bigbrother.portalspy.toggle.others

Spy Details

  • Command: logs commands before execution. Respects filters.excluded_commands (matched case-insensitively against the command name, without the leading /). Placeholders: {player}, {command}.
  • Sign: logs sign edits (SignChangeEvent) and right-click sign interactions (PlayerInteractEvent). Placeholders: {player}, {sign_lines}. Only the front side of the sign is currently reported.
  • Anvil: logs taking the result from an anvil (slot 2). Placeholders: {player}, {old_name}, {new_name}. {old_name} is the input item’s display name, or its material key if it has no custom name.
  • Book: logs book edits. Placeholders: {player}, {title}, {preview}. {preview} is the first page, truncated to 50 characters.
  • Portal: logs portal travel (PlayerPortalEvent). Placeholders: {player}, {from_world}, {to_world}. End-portal teleports are not covered (they fire PlayerTeleportEvent).

Persistence

Per-player spy state is held in memory only and is not persisted across server restarts. State is also dropped when a player quits, so reconnecting players start from enabled_by_default.


Configuration

  • config-version: schema version for migration.
  • global_toggle: server-wide master switch.
  • enabled_by_default: whether new players start with all spies enabled.
  • spy.<type>.enabled: enable/disable spy type.
  • spy.<type>.message: message format.
  • filters.excluded_commands: commands ignored by command spy (case-insensitive).
  • filters.excluded_players: players ignored by all spies (case-insensitive).
  • filters.excluded_worlds: worlds ignored by all spies (case-sensitive).
  • messages: plugin command/status/help messages. Includes state_enabled / state_disabled (used as {state}), and the help_* keys that drive /bigbrother help.

Default spy keys: command, sign, anvil, book, portal.


Dependencies

Bundles Adventure (adventure-platform-bukkit) inside its JAR, relocated to com.chalwk.libs.adventure. No external dependencies.


Changelog

1.0.3

Fixed

  • Reload no longer rewrites config.yml. Previously the plugin called YamlConfiguration#save on every reload, which silently stripped every comment and reformatted the file. Comments and formatting are now preserved across reloads.

Changed

  • Adventure (adventure-platform-bukkit) is now shaded into the plugin JAR and relocated to com.chalwk.libs.adventure. Runs on Spigot, Paper, and Purpur.

Internal

  • MessageHelper is now an instance class wrapping BukkitAudiences, created in onEnable and closed in onDisable.
  • BigBrotherCommand and SpyListener now receive the MessageHelper instance via constructor rather than calling a static method.
  • Command argument parsing now uses Locale.ROOT for case-insensitive comparison, matching the collection convention.
  • ConfigManager guards against a missing embedded config.yml and no longer assumes configFile is set before reloadConfig runs.

1.0.2

  • Book spy now uses the non-deprecated BookMeta#page(int) API. No behavioural change, but the plugin no longer emits a deprecation warning at build time and is compatible with future Paper releases that remove getPages().

1.0.0

  • Internal development builds.