nineMinecraft is a joke site.
nineMinecraft is in no way affiliated with Modrinth or 9minecraft. (And frankly, who wants to be affiliated with the latter?)

RegionRestore

Plugin

Restore world regions/chunks to their original state at fast speeds, maintaining performance even during massive operations. Use it for PvP arenas and mini-games that need instant, lag-free resets.

Server Game MechanicsManagementUtility

111 downloads
2 followers

RegionRestore

High-Performance World Region Restoration for Paper/Folia Servers

RegionRestore is a powerful, performance-focused plugin designed to restore parts of your world back to their original state at exceptional speeds. Whether you're managing PvP arenas, mini-game lobbies, or need reliable world state resets, RegionRestore delivers sub-10ms restoration for small regions while maintaining server stability even for massive operations.


Why RegionRestore?

Lightning-Fast Restores

Small regions (like duels arenas) restore in under 10 milliseconds, ensuring minimal disruption to gameplay.

Chunk Streaming Technology

Large restores use intelligent chunk-by-chunk streaming that progressively loads and restores chunks rather than loading everything at once. This prevents overloading Minecraft's chunk system and maintains consistent TPS even during extensive restoration operations.

Instant Light Restoration

Unlike other solutions that trigger expensive light recalculation, RegionRestore features instant light restore technology. This dramatically reduces CPU usage during restoration operations and eliminates the lag spikes commonly associated with lighting updates.

Perfect for Arena Management

Ideal for:

  • PvP Duels Arenas - Instant reset between matches
  • Mini-Game Lobbies - Restore lobby state after each game
  • Event Arenas - Reset builds, terrain, and structures
  • Practice Arenas - Fast environment resets
  • Plot Worlds - Mass plot regeneration

Supported Versions

Platform Supported Versions
Paper 1.21.4 - 26.1.1
Folia 1.21.4 - 26.1.1

Minecraft Version Support

RegionRestore uses NMS adapters for maximum performance on specific versions:

  • 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1-26.1.1

Note: The plugin requires a matching NMS adapter for your server version. Updates are released shortly after new Minecraft versions.


Dependencies

A PaperMC based server (eg Paper, Purpur)

Optional

  • PlaceholderAPI - Access RegionRestore data via %regionrestore_*% placeholders
  • MiniPlaceholders - Use <regionrestore_*> placeholders in MiniMessage-formatted text

Placeholders

PlaceholderAPI Placeholders
Placeholder Description
%regionrestore_instance_count% Total number of instances
%regionrestore_instance_count_pooled% Count of pooled instances
%regionrestore_instance_count_manual% Count of manual instances
%regionrestore_instance_count_<world>% Instance count for a specific world
%regionrestore_template_count% Total number of templates
%regionrestore_template_<name>_versions% Number of versions for a template
%regionrestore_template_<name>_active_version% Active version ID for a template
%regionrestore_pool_count% Total number of configured pools
%regionrestore_pool_<world>_<template>_count% Instance count for a specific pool
%regionrestore_pool_<world>_<template>_target% Target instance count for a pool
%regionrestore_pool_<world>_<template>_occupied% Occupied instance count for a pool
%regionrestore_instance_<uuid>_world% World name of an instance
%regionrestore_instance_<uuid>_template% Template name of an instance
%regionrestore_instance_<uuid>_occupancy% Occupancy count of an instance
%regionrestore_instance_<uuid>_type% Instance type (pooled/manual)
%regionrestore_instance_<uuid>_originx% Origin chunk X coordinate
%regionrestore_instance_<uuid>_originz% Origin chunk Z coordinate
%regionrestore_instance_<uuid>_sizex% Size in chunks (X)
%regionrestore_instance_<uuid>_sizez% Size in chunks (Z)
%regionrestore_instance_<uuid>_minblockx% Minimum block X coordinate
%regionrestore_instance_<uuid>_maxblockx% Maximum block X coordinate
%regionrestore_instance_<uuid>_minblockz% Minimum block Z coordinate
%regionrestore_instance_<uuid>_maxblockz% Maximum block Z coordinate
MiniPlaceholders Placeholders
Placeholder Description
<regionrestore_instance_count> Total number of instances
<regionrestore_instance_count_pooled> Count of pooled instances
<regionrestore_instance_count_manual> Count of manual instances
<regionrestore_template_count> Total number of templates
<regionrestore_pool_count> Total number of pools
<regionrestore_instance_count_world:'world_name'> Instance count for a world
<regionrestore_pool_instance_count:'world':'template'> Instance count for a pool
<regionrestore_pool_target:'world':'template'> Target count for a pool
<regionrestore_pool_occupied:'world':'template'> Occupied count for a pool
<regionrestore_template_versions:'template_name'> Version count for a template
<regionrestore_template_active_version:'template_name'> Active version for a template

Commands

All commands use /regionrestore (or aliases /rr, /arena, /arenas).

GUI Command
Command Description Permission
/rr gui Open the interactive management GUI regionrestore.gui

The GUI provides visual management of templates, instances, pools, and timers with intuitive menu navigation.

Template Commands
Command Description Permission
/rr template create <name> <minX> <minZ> <maxX> <maxZ> [world] Create a new template from world coordinates regionrestore.template.create
/rr template list List all saved templates regionrestore.template.list
/rr template info <name> View template details and versions regionrestore.template.info
/rr template setactive <name> <versionId> Set the active version for a template regionrestore.template.setactive
/rr template delete <name> Delete a template regionrestore.template.delete

Versioning System: Templates support multiple versions, allowing you to maintain different snapshots of the same region. The "active" version is used by default for restores.

Restore Commands
Command Description Permission
/rr restore <template> [version/active] [scope] Restore template at its original position regionrestore.restore
/rr restore at <template> <world> <x> <z> [version] Restore template at specific coordinates regionrestore.restore
/rr restore in <template> <seconds> [version] [scope] Schedule restore with countdown regionrestore.restorein
/rr restore version <template> [version/active] [scope] Restore specific version regionrestore.restore

Audience Scopes:

  • NEARBY - Notify players within configured radius
  • WORLD - Notify all players in the world
  • SERVER - Notify all online players
  • NONE - Silent restore
Instance Commands
Command Description Permission
/rr instance create <template> <chunkX> <chunkZ> [world] [version] [boot] [vacate] [interval] Create a tracked region instance regionrestore.instance.create
/rr instance list all List all instances regionrestore.instance.list
/rr instance list world <world> [type] List instances in a world regionrestore.instance.list
/rr instance info <instanceId> View instance details regionrestore.instance.info
/rr instance delete <instanceId> Delete an instance regionrestore.instance.delete
/rr instance restore <instanceId> Trigger restore for an instance regionrestore.instance.restore

Instance Types:

  • Pooled - Auto-managed instances for mass cloning
  • Manual - Individually created and managed instances

Instance Options:

  • boot - Restore on server startup
  • vacate - Restore when all players leave
  • interval - Auto-restore interval in seconds
Cloner (Pool) Commands
Command Description Permission
/rr cloner status [world] View pool status and configuration regionrestore.cloner.status
/rr cloner restore [world] [template] Trigger restore for pool instances regionrestore.cloner.restore
/rr cloner regen [world] [--force] Regenerate all pool instances regionrestore.cloner.regen

Mass Cloner: Automatically manages multiple copies (instances) of a template across configured worlds. Perfect for duels servers that need dozens or hundreds of identical arenas.

Timer Commands
Command Description Permission
/rr timer set instance <instanceId> <intervalSeconds> [scope] Set repeating restore timer for instance regionrestore.timer.set
/rr timer set template <templateName> <intervalSeconds> [scope] Set timer for template at original position regionrestore.timer.set
/rr timer cancel id <instanceId> Cancel timer by instance ID regionrestore.timer.cancel
/rr timer cancel template-all <templateName> Cancel all timers for a template regionrestore.timer.cancel
Selection Commands
Command Description Permission
/rr selection wand Get the selection wand item regionrestore.wand
/rr selection View current selection info regionrestore.selection
/rr selection clear Clear your selection regionrestore.selection
/rr selection create <name> Create template from current selection regionrestore.template.create

Using the Selection Wand:

  • Right-click to set positions (alternates between pos1 and pos2)
  • Left-click to view current selection info
  • Supports cross-world selection detection

Scheduling Features

RegionRestore provides a comprehensive scheduling system that allows you to automate restores based on various triggers and conditions.

Countdown Scheduling (Delayed/Scheduled Restores)

Schedule restores to happen after a countdown delay with automatic player notifications. This allows you to schedule restores for a future time and warn players before restoration occurs.

/rr restore in <template> <seconds> [version] [scope]

Features:

  • Scheduled Restore - Delay restoration by specified seconds
  • Configurable Announce Points - Notify players at specific intervals (default: 60, 30, 10, 5, 4, 3, 2, 1 seconds)
  • Audience Scope Control - Choose who receives countdown notifications:
    • NEARBY - Players within configured radius
    • WORLD - All players in the world
    • SERVER - All online players
    • NONE - Silent countdown
  • Plurality-Aware Messages - Automatic "second/seconds" grammar

Example - Schedule arena restore in 30 seconds:

/rr restore in my_arena 30 WORLD

Announces to all players: "Restoring region in 30 seconds..." counting down to "Restoring region in 1 second..."

Tip: Use this for scheduled maintenance, event endings, or to give players time to finish their current activity before the restore.

Repeating/Interval Scheduling

Set up automatic periodic restores for instances or templates.

/rr timer set instance <instanceId> <intervalSeconds> [scope]
/rr timer set template <templateName> <intervalSeconds> [scope]

Features:

  • Instance-Based - Timer follows a specific region instance
  • Template-Based - Creates a hidden instance at template's original location
  • Persistent - Timers survive server restarts
  • Configurable Scope - Per-timer audience notification settings

Use Cases:

  • Event arenas that reset every 5 minutes
  • Practice arenas that auto-reset every 60 seconds
  • Lobby areas that refresh periodically

Cancellation:

/rr timer cancel id <instanceId>        # Cancel specific instance timer
/rr timer cancel template-all <name>    # Cancel all timers for a template
Boot Restoration

Automatically restore regions when the server starts.

Configuration:

mass-cloner {
    worlds=[
        {
            name="duels_world"
            pools=[
                {
                    template-name="classic_arena"
                    restore-on-boot=true
                }
            ]
        }
    ]
}

Instance-Level:

/rr instance create <template> <x> <z> [world] [version] true false [interval]

(5th parameter true enables boot restore)

Use Cases:

  • Reset all arenas on server restart
  • Ensure plots are clean after maintenance
  • Restore event areas to known state
Vacate Restoration

Automatically restore a region when all players leave it.

How It Works:

  • Tracks player occupancy in real-time
  • Monitors chunk movements, teleports, world changes, joins, and quits
  • Triggers restore after all players have left + configurable delay

Configuration:

mass-cloner {
    worlds=[
        {
            name="duels_world"
            pools=[
                {
                    template-name="classic_arena"
                    restore-on-vacate=true
                }
            ]
        }
    ]
}

Instance-Level:

/rr instance create <template> <x> <z> [world] [version] [boot] true [interval]

(6th parameter true enables vacate restore)

Configuration Options:

mass-cloner {
    vacate-delay-seconds=5  # Delay after last player leaves before restoring
}

Use Cases:

  • Duels/PvP arenas that auto-reset after matches
  • Mini-game instances that clean up when finished
  • Private arenas that refresh between uses
Concurrent Restore Management

Prevent server overload with intelligent concurrent restore limiting.

Configuration:

restore {
    max-concurrent-restores=5  # Maximum simultaneous restores
}

Behavior:

  • When limit is reached, new restores are skipped with configurable notification
  • Prevents TPS drops from too many simultaneous chunk operations
  • Restores automatically queue and execute when slots become available

Notification: Players receive a message explaining why the restore was skipped:

"Region restore skipped: maximum concurrent restores (5) reached"

Scheduling Configuration Examples

Example 1: Duels Arena with Vacate

mass-cloner {
    vacate-delay-seconds=3  # 3 second delay after last player leaves
    worlds=[
        {
            name="duels"
            pools=[
                {
                    template-name="1v1_arena"
                    count=20
                    restore-on-vacate=true
                    restore-on-boot=false
                }
            ]
        }
    ]
}

Example 2: Event Arena with Repeating Timer

# Create instance at specific location
/rr instance create event_arena 100 100 events 0 false false

# Set 5-minute repeating timer with WORLD notifications
/rr timer set instance <instance-id> 300 WORLD

Example 3: Lobby with Boot + Timer

mass-cloner {
    worlds=[
        {
            name="lobby"
            pools=[
                {
                    template-name="main_lobby"
                    count=1
                    restore-on-boot=true
                    restore-interval-seconds=3600  # Restore every hour
                }
            ]
        }
    ]
}

Example 4: Silent Background Restore

# Restore with no notifications
/rr restore in silent_arena 10 NONE

Permissions

Complete Permission List
Permission Description Default
regionrestore.* Grants all RegionRestore permissions OP
regionrestore.gui Open the management GUI OP
regionrestore.template.create Create templates OP
regionrestore.template.list List templates OP
regionrestore.template.info View template info OP
regionrestore.template.setactive Set active version OP
regionrestore.template.delete Delete templates OP
regionrestore.restore Restore templates OP
regionrestore.restorein Schedule timed restores OP
regionrestore.instance.create Create instances OP
regionrestore.instance.list List instances OP
regionrestore.instance.info View instance info OP
regionrestore.instance.delete Delete instances OP
regionrestore.instance.restore Trigger instance restore OP
regionrestore.cloner.status View cloner status OP
regionrestore.cloner.restore Trigger pool restores OP
regionrestore.cloner.regen Regenerate pools OP
regionrestore.timer.set Set restore timers OP
regionrestore.timer.cancel Cancel timers OP
regionrestore.wand Use selection wand OP
regionrestore.selection Manage selections OP

Use Cases

Duels Server

Create a pool of 50 identical PvP arenas that auto-restore when players leave:

Example Configuration
mass-cloner {
    worlds=[
        {
            name="duels_world"
            pools=[
                {
                    template-name="classic_arena"
                    count=50
                    separation-chunks=10
                    restore-on-vacate=true
                }
            ]
        }
    ]
}

Event Arena

Restore an arena on a timer with countdown announcements:

/rr timer set template event_arena 300 SERVER

Practice Server

Instantly reset practice arenas between rounds:

/rr restore template my_arena

Plot World

Mass regenerate all plots on server restart:

Example Configuration ```hocon mass-cloner { worlds=[ { name="plot_world" pools=[ { template-name="default_plot" count=100 restore-on-boot=true } ] } ] } ```

Performance Notes

  • Small Regions (< 100 chunks): Sub-10ms restore times
  • Large Regions: Uses chunk streaming to maintain TPS
  • Light Updates: Restore original light by default (instant light restore)
  • Async Operations: Optional fully async restoration
  • Chunk Unloading: Automatic cleanup prevents memory leaks

Support

For support, feature requests, or bug reports, please use the GitHub issue tracker.

Website: https://github.com/bruhmomen69/OpenProjects Discord: https://discord.gg/A6NG8DaAb7


RegionRestore - Restore your worlds at the speed of gameplay.

External resources


Project members

bruhmoment69

Member


Technical information

License
AGPL-3.0-or-later
Project ID