Language

SomeFreeze

SomeFreeze

Modrinth

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.

39 downloads 1 followers updated 1mo ago
Modrinth
Bukkit Paper Purpur Spigot 1.16 – 1.16.5 AdventureGame-mechanicsManagement

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).

Versions

No version history available. Use the Download button to get the latest from the source.

Comments 0

No comments yet. Be the first to share your thoughts.

Download SomeFreeze

Files are served directly from the original source. Modgrid does not host or modify them.