SomeFreeze

SomeFreeze

A cheat-check (freeze) plugin for Paper 1.16.5. Moderators can summon suspected players for a timed review, communicate in a private check chat, detect AnyDesk IDs, track AFK activity, and record outcomes with optional MySQL storage.

101 downloads 1 followers

SomeFreeze

A cheat-check (freeze) plugin for Paper 1.16.5. Moderators can summon suspected players for a timed review, communicate in a private check chat, detect AnyDesk IDs, track AFK activity, and record outcomes with optional MySQL storage.

Requirements

  • Paper 1.16.5 (or compatible Spigot fork)
  • Java 8+
  • ProtocolLib (optional, recommended) — improves AFK detection via client look packets. Place ProtocolLib.jar in libs/ before building, or install it on the server at runtime.

Build

mvn clean package

Output: target/SomeFreeze-1.0.1.jar

Commands

Main command: /freeze
Aliases: /sfreeze, /проверка

Command Description Permission
/freeze <player> Start a cheat check on a player somefreeze.use
/freeze End the active check with status Clean somefreeze.use
/freeze <player> (again) If you are already checking that player, ends the check as Clean somefreeze.use
/freeze checkafk [player] Check whether a player is AFK (defaults to your current check target) somefreeze.checkafk
/freeze history <player> Show the last 15 check records for a player somefreeze.history
/freeze finish <reason> End the check with a configured reason (runs associated commands) somefreeze.finish
/freeze time stop Pause the ban countdown (e.g. after AnyDesk is shared) somefreeze.time
/freeze time start Resume the ban countdown somefreeze.time

Permissions

Permission Description Default
somefreeze.use Start/end checks op
somefreeze.checkafk Use /freeze checkafk op
somefreeze.history View check history op
somefreeze.finish Finish checks with a reason op
somefreeze.time Pause/resume the timer op
somefreeze.notify Receive check notifications op
somefreeze.bypass Ignore freeze restrictions (movement, inventory, etc.) false
somefreeze.admin Grants all permissions above op

How a check works

  1. Start — A moderator runs /freeze <player>. The suspect is frozen in place, teleported to the configured check location (optional), and linked to that moderator for the session.
  2. Restrictions — While frozen, the player cannot move, open inventories, interact, drop items, take damage, or run most commands (except chat-related commands and /freeze). Players with somefreeze.bypass are unaffected.
  3. Timer — A countdown runs (default 7 minutes). The moderator sees a BossBar with time remaining. When it reaches zero, configurable commands run (e.g. ban) via on-time-expire.
  4. Reminders — On a configurable interval, the suspect receives chat instructions, an optional clickable AnyDesk link, and a title/subtitle overlay.
  5. AnyDesk — If the suspect posts a 9–10 digit ID in chat (regex-configurable), the moderator is notified and activity is recorded.
  6. Private chat — Public chat is cancelled during a check; messages between moderator and suspect are routed privately, with an optional copy-to-clipboard button.
  7. Timer control — /freeze time stop pauses the countdown (useful after screen sharing); /freeze time start resumes it.
  8. End — /freeze or /freeze <same player> marks the player Clean, restores their saved location, and saves history. /freeze finish <reason> applies a configured outcome and commands.
  9. Disconnect — If the suspect quits during an active check, reasons.left commands run automatically (e.g. ban for leaving).

AFK detection

The plugin tracks player activity globally:

  • Inventory clicks, drags, and closes
  • Hotbar slot changes
  • Camera rotation (movement without position change)
  • ProtocolLib look packets (when enabled)

Settings:

  • settings.afk-threshold-seconds — inactivity time after which /freeze checkafk reports AFK (default 30s)
  • settings.freeze-block-afk-seconds — players inactive longer than this cannot be called for a check (default 180s / 3 min)

During an active check, inactivity is tracked per session as well.

Check history

Every completed check is logged with target, moderator, status, reason, and timestamp.

  • YAML (default): plugins/SomeFreeze/history.yml
  • MySQL: enable in config; uses HikariCP (shaded into the JAR)

View with /freeze history <player> (last 15 entries).

Configuration

Settings (settings)

Key Description Default
check-duration-seconds Time until auto-action on expiry 420 (7 min)
reminder-interval-seconds Interval for chat/title reminders 5
teleport-on-freeze Teleport suspect to check coords true
world, x, y, z, yaw, pitch Check room location world @ 0.5, 100, 0.5
restore-location Return player to pre-check position when done true
execute-commands-as-moderator Run ban/commands as the moderator (fallback: console) true
anydesk-pattern Regex to detect AnyDesk ID in chat \d{9,10}
afk-threshold-seconds AFK threshold for checkafk 30
freeze-block-afk-seconds Block /freeze if player is AFK this long 180
afk.track-inventory Track inventory activity true
afk.track-hotbar Track hotbar changes true
afk.track-look Track camera rotation true
afk.look-sensitivity Minimum look delta to count as activity 2.0
afk.use-protocollib Use ProtocolLib for look packets true

Messages (messages)

All plugin messages support placeholders (see below). Notable sections:

  • freeze-chat — lines sent to the suspect on start and each reminder
  • anydesk-link — clickable link appended after the second chat line
  • freeze-title / freeze-subtitle — title overlay (supports gradients)
  • moderator-bossbar — BossBar title, color, style, and progress for the moderator
  • private-chat-format-sender / private-chat-format-receiver — private check chat
  • private-chat-copy — copy button next to private messages

Finish reasons (reasons)

Each entry under reasons defines:

  • display — shown in /freeze finish success message
  • status — saved to history
  • commands — run when that reason is chosen (placeholders supported)

Default keys: cheats, refuse, ignore, left, clean.

Time expiry (on-time-expire)

Commands executed when the timer runs out without being paused (if not already finished).

Message colors

Supported in config strings:

  • Legacy: &a, &c, …
  • Hex: &#FF5555 or #FF5555
  • Gradients: <gradient:#FF0000:#FFFF00>text</gradient>

Placeholders

{player}, {target}, {moderator}, {time_left}, {time}, {reason}, {status}, {anydesk}, {date}, {prefix}, {message}

MySQL

mysql:
  enabled: true
  host: localhost
  port: 3306
  database: minecraft
  username: root
  password: password
  table-prefix: sf_

When enabled: false, history is stored in plugins/SomeFreeze/history.yml.

Example on-time-expire / reason commands

on-time-expire:
  commands:
    - "ban {target} Failed check within 7 minutes"

reasons:
  cheats:
    display: "&cCheats"
    status: "Banned (cheats)"
    commands:
      - "ban {target} Cheats during check"
  clean:
    display: "&aClean"
    status: "Clean"
    commands: []

Commands can be prefixed with / or not; they are dispatched as the moderator (or console if offline / setting disabled).

No gallery available for this project.

Version Minecraft Loader Download

SomeFreeze 1.0.1

1.0.1

1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5
bukkit, paper, purpur, spigot
Download

SomeFreeze 1.0.0

1.0.0

1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5
bukkit, paper, spigot
Download