promotional bannermobile promotional banner
premium banner
Solution to disconnect users with unwanted mods. You can: blacklist, allow or require mods

Description

โš ๏ธ This project requires to be set up on both sides, client and server side โš ๏ธ

You can get plugin for Paper/Purpur there

๐Ÿค HandShaker 6.0.0 (Beta)

Modrinth CurseForge Paper Purpur Wiki Ko-fi Fabric API Neo Forge


๐Ÿ“‹ What is HandShaker?

HandShaker is a cross-platform mod/plugin verification system for Minecraft servers and clients. It enables servers to detect which mods players are running and enforce mod restrictions with customizable policies.

๐ŸŽฏ Core Functionality

  • Fabric/Neoforge Client โ†’ Sends your active mod list to the server upon join
  • Paper/Fabric/NeoForge Server โ†’ Validates mod lists against configured rules and enforces restrictions
  • Multi-platform Support โ†’ Works across Fabric, Paper, and NeoForge
  • Cryptographic Integrity โ†’ Prevents tampered or self-compiled HandShaker mods
  • Flexible Configuration โ†’ Per-mod rules: Required, Allowed, or Blacklisted

โœจ Key Features

Feature Description
๐Ÿ” Per-Mod Configuration Individually set mod allowance to Required, Allowed, or Blacklisted
๐Ÿšซ Customizable Enforcement Configurable kick messages and auto-ban capabilities
๐Ÿ“Š Player History Database Store and query player mod histories
๐Ÿ‘€ Player Mod Viewing Administrators can see other players' mod lists
โœ”๏ธ Integrity Verification Cryptographic signatures prevent spoofed mod reports
๐Ÿ” Custom Actions Allows to setup custom events (commands) for triggered mods

๐Ÿ—๏ธ Platform Comparison

โœ… Supported/Working โš ๏ธ Issues/Unsupported โŒ Unsupported/Broken

Features Paper (1.x - 6.x) Fabric (2.x - 6.x) NeoForge (6.x+)
Integrity Checking โœ… 6.x+
โš ๏ธ 3.x - 5.x
โœ… 6.x+
โš ๏ธ 3.x - 5.x
โœ… 6.0.0+
Configurable Rules โœ… 6.0.0+ โœ… 6.0.0+ โœ… 6.0.0+
Database Storage โœ… 5.0.0+ โœ… 5.0.0+ โœ… 6.0.0+
GeyserMC/Floodgate โœ… 5.2.0+ โœ… 5.2.0+ โŒ
Permissions โœ… 5.0.0+ โœ… 5.0.0+ โŒ
Folia Compatibility โœ… 6.0.0+ โŒ โŒ
Clickable text in chat โœ… โŒ โŒ

๐Ÿš€ Quick Start

Commands

Installation

  1. Download the appropriate mod/plugin for your platform:

    • Fabric Client: Place JAR in mods/ folder
    • Paper Server: Place JAR in plugins/ folder
    • NeoForge Client: Place JAR in mods/ folder
  2. Configure the mod/plugin

Basic Configuration

config: v4

# Behavior: "strict" - Force requires client-side mod or "vanilla" allow also non-mod clients
behavior: strict

# Integrity Mode: "signed" or "dev" - allow unsigned mods (if you are building own client/server fork)
integrity-mode: signed

# Whitelist mode: true = only allowed mods (inside whitelisted.yml), false = allowed by default.
# To work properly set "mods-whitelisted-enabled" must be true
whitelist: false

# Allow Bedrock players
allow-bedrock-players: false

# Player Database: Store and track player mod history (requires playerdb to be enabled)
playerdb-enabled: false

# Mod List Toggles: Enable/disable each mod list without losing configuration
mods-required-enabled: true
mods-blacklisted-enabled: true
mods-whitelisted-enabled: true

# Kick Messages - customize as needed (use {mod} for mod name)
messages:
  kick: "You are using a blacklisted mod: {mod}. Please remove it to join this server."
  no-handshake: "To connect to this server please download 'Hand-shaker' mod."
  missing-whitelist: "You are missing required mods: {mod}. Please install them to join this server."
  invalid-signature: "Invalid client signature. Please use the official HandShaker client mod."

  ban: "You have been banned for using a blacklisted mod: {mod}."
  bedrock: "Bedrock players are not allowed on this server."
  # custom messages for actions can be added here
  # placeholders are {mod} - mod which triggered, {player}
  test_action: "Hi, {player}! You are using {mod}! Thanks for using it!"
actions:
# System actions (Uses hardcoded functions, not recomended to copy these)
  kick:
    commands:
      - "kick {player} {messages.kick}"

  ban:
    commands:
      - "ban {player} {messages.ban}"
    log: true

  log:
    missing: "{player} tried to join but missing required mod/mods: {mod}"
    blacklisted: "{player} tried to join with blacklisted mod/mods: {mod}"

# Examples of custom actions
# placeholders are {mod} - mod which triggered, {player}, {messages.name_from_config.yml}

  test_action:
    commands:
      - "msg {player} {messages.test_action}"
      - "give {player} minecraft:diamond 1"
      - "say Say Hello to {player}, who is using {mod}!"

  watchdog:
    commands:
      - "ac increase_alert_level {player} 1000"

๐Ÿ“ Permissions

Permission Description Default
handshaker.admin Access to admin commands Operator
handshaker.bypass Bypass mod restrictions False

๐ŸŽฎ Supported Versions

Loader Versions Status Versions Status
Fabric 1.21 - 1.21.10, 1.21.11 โœ… Supported N/A N/A
Paper 1.21+ โœ… Supported N/A N/A
NeoForge 1.21 - 1.21.10, 1.21.11 โœ… Supported 1.20.1 Planned

๐Ÿ“š Documentation


๐Ÿค Contributing

Issues, pull requests, and suggestions are welcome! Check the GitHub repository for contribution guidelines.