GriefLogger Rollback Addon (GLRA)

GriefLogger Rollback Addon (GLRA)

Addon for GriefLogger by DAQUEM to use Rollback Command + Webinterface

by
2.2K Downloads
neoforgemanagementutility
Rent Server with this Mod

Screenshots

Webinterface in German Locale
Rollback Message

About this Mod

Grieflogger Rollback Addon

This NeoForge addon reads GriefLogger data from SQLite (default) or MySQL/MariaDB and reverts block actions in-game via command. It targets NeoForge 21.1.213 / Minecraft 1.21.1 and is server-side only: any logged block placements or breaks can be undone selectively. Its like CoreProtect, but for Modded Server.

Features

  • Rollback of block changes and container/inventory changes from the GriefLogger database (blocks + containers tables with joins to materials, users, levels).
  • Filters by time window, optional player name, and optional radius around the command executor.
  • Ensures target chunks are loaded before changing blocks.
  • Progress logging and batch processing per tick to keep the server responsive.
  • Permission nodes for all commands and notifications (LuckPerms/permission mods supported, default op-level fallback 3).
  • Broadcast notifications for rollbacks started in-game, rollbacks triggered via web UI/API, and blocked/unauthorized web access attempts.
  • Automatically disables itself on startup if no database connection is available.
  • Highly configurable via griefloggerrollbackaddon-common.toml: database backend/credentials, web UI/API bind/port/token, rollback batch size, progress interval, and unauthorized-access logging options.

Requirements

  • NeoForge 21.1.213 / Minecraft 1.21.1.
  • A GriefLogger database (either the SQLite DB file GriefLogger writes, or a MySQL/MariaDB database with the GriefLogger schema).
  • Database credentials with read access (for MySQL/MariaDB).
  • Config file config/grieflogger/griefloggerrollbackaddon-common.toml generated by first server start (set DB type/connection, web options, and batch sizes).
  • If the web UI/API is enabled: a free TCP port (default 8765) on the bind address (webApiBindAddress, default 0.0.0.0) and, if exposed beyond localhost, a configured token (webApiToken) and appropriate firewall/forwarding.
  • Permission mod (e.g., LuckPerms) optional; without one, only operators (op-level 3) can run commands/receive notifications.

Installation

  1. Place the mod JAR and the JDBC driver for your backend (SQLite, MySQL, or MariaDB) into the server mods/ folder.
  2. Start the server once to generate config/grieflogger/griefloggerrollbackaddon-common.toml.
  3. Choose the backend via dbType (case-insensitive, default SQLITE). For SQLite set dbFile; for MySQL/MariaDB set host/port/name/user/password.
  4. Check the log for [griefloggerrollbackaddon] Database connection succeeded. If it fails, the addon remains disabled until the connection works.

Configuration (config/grieflogger/griefloggerrollbackaddon-common.toml)

  • dbType (Enum, default SQLITE): Choose SQLITE, MYSQL, or MARIADB (case-insensitive).
  • dbFile (String, default config/grieflogger/grieflogger.sqlite): SQLite database file path when dbType=SQLITE.
  • dbHost (String, default localhost): MySQL/MariaDB host.
  • dbPort (Int, default 3306): MySQL/MariaDB port.
  • dbName (String, default grieflogger): Database name for MySQL/MariaDB.
  • dbUser (String, default root): Database user for MySQL/MariaDB.
  • dbPassword (String, default empty): Database password for MySQL/MariaDB.
  • rollbackBatchSize (Int, default 200): Number of actions processed per tick.
  • progressTickInterval (Int, default 20): How many ticks between progress log messages.
  • webApiEnabled (Boolean, default false): Start a small HTTP server with a web UI to trigger rollbacks.
  • requireApiToken (Boolean, default false): If true and webApiToken is empty, the web UI/API is disabled; otherwise every request must include the token.
  • webApiBindAddress (String, default 0.0.0.0): Bind address for the web UI/API.
  • webApiPort (Int, default 8765): Port for the web UI/API.
  • webApiToken (String, default empty): Optional shared secret required for web requests. Leave empty only on localhost.
  • logUnauthorizedWebAccess.enabled (Boolean, default false): Log unauthorized web requests to DB table glra_web_unauthorized (keeps the latest 1000 entries).
  • logUnauthorizedWebAccess.logHeaders (Boolean, default false): Store request headers for unauthorized web requests.
  • logUnauthorizedWebAccess.logBody (Boolean, default false): Store request body for unauthorized web requests (may include tokens).
  • logUnauthorizedWebAccess.logQuery (Boolean, default true): Store query string for unauthorized web requests.

Command: /gl rollback

Syntax: /gl rollback t:<time> [u:<player>] [r:<radius|c<chunks>>] [i|b]

  • t: Required time window to roll back. Supported units: s, m, h, d, M (30 days), y. Examples: t:30m, t:12h, t:90s.
  • u: Optional exact player name (matches the users table).
  • r: Optional radius. Default uses blocks (r:25). Prefix c switches to chunks (r:c4 = radius of 4 chunks). Prefix b forces blocks (r:b40).
  • i Optional flag: only roll back inventory/container changes (items).
  • b Optional flag: only roll back block changes. If neither i nor b is given, both are rolled back.

Examples

  • /gl rollback t:2h - Roll back all actions from the last 2 hours.
  • /gl rollback t:1d u:Griefer123 - Only that player's actions in the last 24h.
  • /gl rollback t:30m r:c2 - Within 2 chunks around the executor.
  • /gl rollback t:10m u:User r:20 - Player filter plus 20-block radius.
  • /gl rollback t:45m i - Only inventory/container changes from the last 45 minutes.
  • /gl rollback t:10m b r:15 - Only block changes within 15 blocks from the last 10 minutes.

Additional Commands

  • /gl web token add <player> — Create/replace a web API token for a player (copyable in chat).
  • /gl web token remove <player> — Delete a player's web API token.
  • /gl web token list [page] — List tokens with copy-to-clipboard hints.
  • /gl web start / /gl web stop — Start/stop the built-in web UI/API (honors config toggles and token requirements).
  • /gl config reload — Reload the addon config (griefloggerrollbackaddon-common.toml) without restarting.

Web UI / HTTP API

  • Enable in config with webApiEnabled=true. Defaults to 0.0.0.0:8765; change webApiBindAddress/webApiPort as needed.
  • Optional security: set webApiToken and pass it as header X-Auth-Token or form field token.
  • Open http://<bind>:<port>/ for a minimal form: time window (e.g., 30m), optional player, checkboxes for blocks/items, optional radius plus center X/Z/Y and dimension. The form POSTs to /api/rollback.
  • The API endpoint /api/rollback accepts application/x-www-form-urlencoded with the same fields and returns a small JSON status.
  • Unauthorized requests can be logged to the database (configurable) and will notify eligible players/ops with a readable message.

Permissions

  • Default fallback: op-level 3 if no permission mod is present.
  • Nodes (namespace griefloggerrollbackaddon):
    • command.rollback
    • command.web.token
    • command.web.server
    • command.config.reload
    • notify.rollback (in-game rollback command)
    • notify.web.rollback (web-triggered rollback)
    • notify.web.unauthorized (blocked web requests)
      Use your permission mod (e.g., LuckPerms) to grant/deny; otherwise only operators (level 3) can run commands and receive notifications.

How it works

  1. Server start: immediately tests a DB connection. On failure, the addon disables itself (no commands/events).
  2. Command: /gl rollback ... starts a job:
    • Loads matching entries from blocks and containers since the given time in a background thread, optionally filtered by player and/or radius.
  • Reconstructs the previous block state per coordinate (oldMaterialName) so placements and breaks can be inverted correctly.
  • Enqueues all actions (blocks + inventory operations) for processing, newest first so the latest change is undone first.
  1. Server ticks: up to rollbackBatchSize actions are processed each tick:
    • BREAK logs restore the broken block from the DB entry.
    • PLACE logs restore the previous block state.
    • Container logs remove items that were inserted and add back items (including stored NBT) that were taken. If a container is full, overflow is dropped at the container position.
    • Unknown/other codes fall back to restoring the previous state (or air).
    • The target chunk is loaded before setting the block.
  2. Progress: every progressTickInterval ticks, the queue size and processed count are logged. When the queue is empty, the job finishes.

Notes and limitations

  • If a container has no space while items are restored, the overflow is dropped as item entities next to the container.
  • Dimension mapping uses levels.name (ResourceLocation) or falls back for IDs 1/2/3 (Overworld/End/Nether).
  • Invalid or unknown block names default to minecraft:air with a warning.
  • The JDBC driver is not bundled in the mod JAR; it must be provided separately.
  • Large time windows can produce big queues. Adjust rollbackBatchSize and radius to control server load.

Development/Building

  • Java 21, Gradle wrapper included. Build locally with ./gradlew build (or gradlew.bat build on Windows).
  • MariaDB, MySQL, and SQLite drivers are declared as localRuntime; provide the driver JAR separately for production.

Available Versions

GriefLogger Rollback Addon (GLRA) 1.0.0release
MC 1.21.1neoforge
November 29, 2025

How to Install GriefLogger Rollback Addon (GLRA) on Your Server

1

Order Server

Order a Minecraft Java server with at least 3 GB RAM (4 GB recommended).

2

Set neoforge Loader

In the panel under "Egg", select the neoforge loader and matching Minecraft version (1.21.1).

3

Install Mod

Open the mod browser in the dashboard and search for "GriefLogger Rollback Addon (GLRA)". Click "Install" – done! Alternatively, upload the .jar via SFTP to the /mods folder.

Compatibility

Mod Loaders

neoforge

Minecraft Versions

1.21.1

Server-side

Required

Recommended RAM

4 GB(min. 3 GB)

Frequently Asked Questions

GriefLogger Rollback Addon (GLRA) server crashes on startup – what to do?

Most common cause: wrong neoforge version or insufficient RAM. Check the server log (latest.log) for "OutOfMemoryError" or "Mixin" errors. With Mado Hosting: ensure at least 3 GB RAM is allocated and the loader matches the mod version (1.21.1). You can switch loaders with one click in the panel.

Is GriefLogger Rollback Addon (GLRA) compatible with neoforge?

GriefLogger Rollback Addon (GLRA) officially supports neoforge for Minecraft 1.21.1. The Mado dashboard automatically detects incompatible loader combinations.

Server lagging with GriefLogger Rollback Addon (GLRA) – how to optimize performance?

Recommended RAM: 4 GB (per 8 players). Use /spark profiler to check if GriefLogger Rollback Addon (GLRA) consumes the most tick time. Common fixes: reduce server view-distance to 8-10, install "performant" or "starlight" as supplementary mods on Forge. With Mado Hosting, your server runs on NVMe SSDs with dedicated CPU cores for minimal latency.

Rent Modded Server

Install GriefLogger Rollback Addon (GLRA) with just one click on your server.

Recommended RAM
4 GBab €8/mo
Min. 3 GB | +1 GB pro 8 Spieler
Create Server Now
1-Click Mod Install
NVMe SSD Storage
DDoS Protection included

Details

License
GNU Lesser General Public License v2.1 only
Server-side
Required

Supported Versions

1.21.1