HomeJavaModsRules Are Mandatory
Rules Are Mandatory
ModsJava

Rules Are Mandatory

A highly customizable 1.20-26.2 Paper plugin that forces players to accept server rules before playing, using Java clickable chat/Bedrock Geyser API.

⬇ Download on Modrinth

RulesAreMandatory (RSAM)

A Paper 1.20+ plugin that forces players to accept server rules before they can move, break blocks, chat, or interact. Features a clickable chat UI for Java Edition and a native form for Bedrock Edition via Geyser API.

(Gallery showcase will be added later)

Features Commands
Command Description Permission
/rsam List subcommands rsam.user.rules
/rsam rules Show rules (paginated) rsam.user.rules
/rsam accept Accept the rules rsam.user.rules
/rsam decline Decline the rules rsam.user.rules
/rsam reload Reload config files rsam.admin.reload
/rsam reset <player> Reset player's acceptance rsam.admin.reset
/rsam approve <player> Force-accept for a player rsam.admin.approve
/rsam player [player] Check player info rsam.admin.info

All admin commands work from console / RCon.

Aliases: /rule shows rules directly. (/rules gets intercepted by vanilla rules command)

Config, examples and permissions

Config files (in plugins/RulesAreMandatory/)

File Purpose
settings.yml Main config — menus, freeze, blocks, titles, misc
messages.yml All chat messages (prefix: [RSAM])
rules.yml Rule list + version (bump Version to force re-accept)
players.yml Player data (auto-generated)

Freeze customization (settings.ymlFreeze:)

Freeze:
  Enabled: true
  BlockMovement: true    # teleport back when moving
  BlockCamera: true      # lock yaw/pitch (can't look around)
  AllowLook: true         # allow camera when BlockCamera is false
  Blindness: false       # apply blindness effect while frozen

Permissions

Permission Default Description
rsam.user.rules true Basic player commands
rsam.user.bypass false Skip rule acceptance entirely
rsam.admin.* op All admin permissions
rsam.admin.reload op Reload config
rsam.admin.reset op Reset a player
rsam.admin.approve op Force-accept for a player
rsam.admin.info op Check player info

Config example:

# ─────────────────────────────────────────────────────────────
#  RulesAreMandatory — Settings
# ─────────────────────────────────────────────────────────────
# ConfigVersion — increment to auto-reset config on next reload.
ConfigVersion: 3

# ── Debug ──────────────────────────────────────────────────
# Set true to see freeze state in server console
Debug: false

Menu:
  BackBtn: '&3<< &2Back'
  NextBtn: '&2Next &3>>'
  AcceptBtn: '&2>> Accept <<'
  DenyBtn: '&4>> Deny <<'
  Spacer: ' '

Page:
  ItemsPerPage: 4
  Cooldown: 3

Divider:
  Top: '&6------------------[ %page% / %maxpage% ]------------------'
  Bottom: '&6---------------------------------------------'
  AcceptTop: '&6---------------------------------------------'
  AcceptBottom: '&6---------------------------------------------'
  InfoTop: '&6---------------------------------------------'
  InfoBottom: '&6---------------------------------------------'
  Default: '&6---------------------------------------------'

Actions:
  OnAccept:
    - 'say Player &6%player% &faccepted the server rules!'
  OnDecline:
    - 'say Player &3%player% &fdeclined the rules!'
    - |-
      kick %player% Hello %player%,
      please accept our rules before playing on the server!
  AllowedBeforeAccept:
    - rsam
    - rule
    - register
    - login

Greeting:
  Enabled: true
  Delay: 0

Freeze:
  Enabled: true
  MessageCooldown: 3
  AllowLook: true          # false = camera locked, true = player can look around
  BlockCamera: true        # false = can look around, true = yaw/pitch fixed
  BlockMovement: true      # false = can move (still adventure mode), true = teleport back
  Blindness: false         # true = give Blindness while frozen

Misc:
  ForceOP: true
  ForceAdventure: true
  AcceptGameMode: SURVIVAL
  SkipWorlds: []

Block:
  Chat: true
  Commands: true
  Interact: true
  MsgCooldown: 3

Reaccept:
  Enabled: false
  Days: 90

# ─────────────────────────────────────────────────────────────
#  Title / on-screen display
#  Per-section Enabled toggle
# ─────────────────────────────────────────────────────────────
Title:
  OnJoin:
    Enabled: true
    Title: '&6&lRulesAreMandatory'
    Subtitle: '&eRead the rules below'
    FadeIn: 10
    Stay: 70
    FadeOut: 20

  OnShowRules:
    Enabled: true
    Title: '&6&lServer Rules'
    Subtitle: '&ePlease read carefully'
    FadeIn: 10
    Stay: 70
    FadeOut: 20

  OnAccept:
    Enabled: true
    Title: '&a&l✔ Rules Accepted!'
    Subtitle: '&eWelcome to the server!'
    FadeIn: 10
    Stay: 60
    FadeOut: 20

  OnDecline:
    Enabled: true
    Title: '&c&l✘ Rules Declined'
    Subtitle: '&eYou will be kicked'
    FadeIn: 10
    Stay: 60
    FadeOut: 20

Dependencies

Plugin inspired by AcceptTheRules

Verified by MCModsHub

These come from our own check of the pack file, not from the source page.

Explore more