By continuing to use this site, you agree to the Terms of Service of this website, including usage of cookies.

OK, Don't show this again

BedcoreProtect is a fast, efficient, data logging and anti-griefing tool. Rollback and restore any amount of damage
version 0.9.0
Direct Download How to install?
Switch version
672 Downloads / 11070 Total
13 Reviews
Plugin Description §


BedcoreProtect is a fast, efficient, data logging and anti-griefing tool for PocketMine servers. Rollback and restore any amount of damage.


  • Fast efficient data logging.
  • Fast rollbacks.
  • No configuration required. Put the plugin on your server, and you're good to go.
  • Multi-language support.
  • User interface (UI) support.
  • SQLite based data storage.
  • Optional MySQL support.
  • Easy to use commands.
  • Perform rollbacks AND restores. Undo any rollback, anytime.
  • Easy to use block inspector
  • Advanced search-based lookup tool.
  • Paginated logs.
  • Automatic update checker.
  • Multi-world support.
  • Enable or disable any aspect of logging in the configuration file.
  • Rollback per-player all damage around you.
  • Specify certain block types to skip in rollbacks/restores.
  • Restrict rollbacks/restores to specific block types
  • Log basic player actions (such as when a player opens a door)
  • Liquid tracking. Associate liquid flow with players
  • Restrict rollbacks/restores to a radius area.
  • Able to track blocks that fall off of other blocks. If a player breaks a block that had a sign on it, both the block and the sign can be rolled back.
  • Easily delete old log data.
  • Safe default parameters. Rollback or restore multiple players at once.
  • Lookup, rollback, or restore by a specific action.
  • Exclude multiple blocks.

...and much more!!

What does it log?

  • Log blocks broken by players
  • Log blocks placed by players
  • Log natural block breakage (ex: if a sign pops off a dirt block that was broken)
  • Log bucket usage
  • Log liquid flow
  • Log explosions
  • Log flint & steel
  • Log fire igniting blocks
  • Log blocks burning up in fires
  • Log block movement (Falling sand/gravel)
  • Log leaves decay
  • Log player interactions
  • Log items taken or placed in chests, furnaces, dispensers, etc.
  • Log paintings and item frames. (With rollback support!)
  • Log entities killed by players (animals/monsters)

...and the list is still expanding!

Database Minimum Requirements

  • SQLite version must be >= 3.28.0 (not tested with older versions)


  • MySQL version must be >= 5.6.4


The main command is /bedcoreprotect but it accepts the folllowing aliases: /bcp, /core, /co (Main permission: bcp.command.bedcoreprotect)

Quick command overview:

  • /bcp help - Display a list of commands (Permission:
  • /bcp inspect - Toggle the inspector mode (Permission: bcp.subcommand.inspect)
  • /bcp menu - Display a graphic interface to use the plugin (UI). (Permission:
  • /bcp rollback <params> - Rollback block data (Permission: bcp.subcommand.rollback)
  • /bcp restore <params> - Restore block data (Permission: bcp.subcommand.restore)
  • /bcp lookup <params> - Advanced block data lookup (Permission: bcp.subcommand.lookup)
  • /bcp show <params> - Allows to show a specific page of logs. (Permission:
  • /bcp purge <params> - Delete old block data (Permission: bcp.subcommand.purge)
  • /bcp reload - Reload the configuration file (Permission: bcp.subcommand.reload)
  • /bcp status - View the plugin status (Permission: bcp.subcommand.status)

Shortcut commands:

  • /bcp near [value]: Performs a lookup with radius (default 5) (Permission: bcp.subcommand.near)
  • /bcp undo: Revert a rollback/restore via the opposite action (Permission: bcp.subcommand.undo)

Advanced command overview:

/bcp help
Diplay a list of commands in-game

/bpc inspect
Enable the inspector. Type the command again to disable it. You can also use just "/bcp i"

/bpc menu
Display a graphic interface to simplify the plugin commands usage. You can also use just "/bcp ui"

/bcp rollback u=<user> t=<time> r=<radius> a=<action> b=<blocks> e=<exclude>
Nearly all of the parameters are optional. Shortcut: "/bcp rb".

u=<user> - Specify a user to rollback.
Example: u=Shoghi u=Shoghi,#zombie

t=<time> - Specify the amount of time to rollback.
You can specify weeks,days,hours,minutes, and seconds.

Example: t=4w5d2h7m20s

You can pick and choose time amounts.
Example: t=5d2h

r=<radius> - Specify a radius.
You can use this to only rollback blocks near you.

For example, the following would only rollback damage within 10 blocks of where you are standing: r=10

a=<action> - Restrict the lookup to a certain action.
For example, if you wanted to only rollback blocks placed, you would use a:+block

Here's a list of all the actions:
• a=block (blocks placed/broken)
• a=+block (blocks placed)
• a=-block (blocks broken)
• a=click (player interactions)
• a=container (items taken from or put in chests, etc.)
• a=+container (items put in chests, etc.)
• a=-container (items taken from chests, etc.)
• a=kill (mobs/animals killed)

b=<blocks> - Restrict the rollback to certain block types.
For example, if you wanted to only rollback stone, you would use b=1
You can specify multiple items, such as b=1,5,7
or b=stone,planks,bedrock

You can find a list of block type IDs at

e=<exclude> - Exclude certain block types from the rollback.
For example, if you don't want TNT to come back during a rollback, you would type e:46

/bpc restore u=<user> t=<time> r=<radius> a=<action> b=<blocks> e=<exclude>
Same parameters as /bcp rollback. Shortcut: "/bcp rs".

Restoring can be used to undo rollbacks.

/bcp lookup u=<user> t=<time> r=<radius> a=<action> b=<blocks> e=<exclude>
Search through block data using the same parameters as /bcp rollback. Shortcut: "/bcp l".

/bcp show <page>:[lines]
Allow to switch pages of /bcp lookup command. Shortcut: "/bcp s".

When multiple pages returned from lookup command, use the command "/bcp show <page>" to switch pages.
To change the number of lines displayed on a page, use the command "/bcp show <page>:<lines>".

For example, "/bcp show 1:10" will return 10 lines of data, starting at the first page.

/bcp purge t=<time>
Purge old block data. Useful for freeing up space on your HDD if you don't need the older data.

For example, "/bcp purge t=30d" will delete all data older than one month, and only keep the last 30 days of data.


I found a bug, where can I report it?

  • You can report here by clicking button "Get Started" on Bug report.

Where can I request a new feature?

  • You can ask a new feature here by clicking button "Get Started" on Feature request.

What's new §
  • BedcoreProtect now only supports PocketMine with API >= v3.21.0 (PHP v7.4).
    This version does not contain any new feature or bug fix, so if are not using the last PocketMine version, you can continue to use an older version.
  • Internal plugin changes and improvements.
  • Fixed database version updating everytime the plugin changes version.
  • Plugin internal changes
  • Minor improvements
  • Possibly fixed #47
  • Fixed ConfigUpdater not updating the config-version.
  • Fixed log timings that were not accurate.
  • Added initial database version to know since which version the user is using the plugin.

Introductory notes

  • This update is recommended because it contains many improvements and bug fixes.
  • The update is backward compatible with previous versions.
  • If you are already using BedcoreProtect and you upgrade to v0.8.0, you will notice a message of database upgrading. Don't worry, that's normal. It's the patch manager process that updates the database tables for the new version. If during the process you got a crash, please open a issue here!


New Features

  • Configuration updater now maintains the previous settings when they are compatible.
  • Configuration updater now shows in console which options went added, changed or removed.
  • Lookup command now accepts the radius value (only when in-game)


  • Improved some queries, this will give more performance.


  • The timezone is not required anymore, the plugin will use the current unix time. This fixes the common problem of a wrong time when showing the logs.
  • Changed database structure:
    • Added support for negative Y coordinate (for future Minecraft update)
    • Allow negative block and item IDs (for future PocketMine update)
  • Plugin is now compatible with rule B8 of Poggit.
  • Other minor plugin API changes.

Bug fixes

  • Fixed entities restriction not working (e.g. /bcp rb t=10h user=#Zombie)
  • Fixed crash occured when meta value is out of range (#44)
  • Fixed crash occured when a block kills an entity (#37)
  • Fixed crash occured when using user restriction in MySQL.
  • Fixed user restriction not working when using the UI menu.
  • Added support for PHP 7.4 (updated libasynsql to v3.3.1)


If you have NOT previously updated the plugin from an older version to v0.7.0, ignore the following message.
To resolve the v0.7.0 crash, before starting the server with v0.7.1, rename the database backup file in the data folder of the plugin as shown in the following example: logs.db.0.6.2.bak to logs.db.
Once this is done you can start the server.


  • Fixed crash due to wrong database SQLite patches (blame SQLite). Thanks @Muqsit!
  • Fixed crash when getting null lang in ConfigUpdater before using the ConfigParser.
  • Updated UpdateNotifier version.

Introductory notes

  • PocketMine-MP API >= 3.13.0 is required!
  • This update is recommended because it contains many improvements and bug fixes.
  • The update is backward compatible with previous versions.
  • If you are already using BedcoreProtect and you upgrade to v0.7.0, you will notice a message of database upgrading. Don't worry, that's normal. It's the patch manager process that updates the database tables for the new version. If during the process you got a crash, please open a issue here!



  • Added basic configuration updater for next releases.
  • Farmland and Grasspath are now logged.
  • Liquids flow is now tracked


  • Minor improvements


  • Performance boost during log process, serialize classes only on multiple blocks logging.
  • Removed address column from entities table because not used.
  • The log time is now calculated from the plugin instead of database, so it avoids to get some stupid logs due to concurrency.
  • It is not possible to launch more than one rollback in the same area or by the same player.
  • Dropped BlockSniper support.
  • Improved Painting logging.
  • SpawnEgg are not logged anymore
  • When entity dies due to fire, they will not rollback with the fire.

Bug fixes

  • Fixed #19
  • Fixed FenceGate and Levers not logged when clicked.
  • Fixed important bug introduced in v0.6.2: when rollback some falling blocks it causes a log recursion due to block update.
  • Fixed restore logs not correctly ordered.
  • Fixed Fallable blocks not logged when placed.
  • Fixed lily pad not logged when placed.
  • Fixed double plant not logged when placed.
  • Fixed ItemFrame not correctly logged.
  • Fixed flint and steel not logging correctly TNT ignites.
  • Do not log click action when player is sneaking.
  • Fixed IronDoor not logged when clicked.
  • Fixed liquids tracking when breaking blocks.
  • Fixed trapped chest not rollback correctly.
  • Fixed crash while running /co undo to restore inventory rollback.
  • Fixed logging sign text when placed.
  • Fixed cake not logged when eaten.
  • Fixed wrong action while placing/breaking paintings
  • Minor fixes
  • Replaced the command /bcp lookup <page>:<lines> with /bcp show <page>:<lines> (Permission
  • Using PRIMARY KEYS in logs tables instead of UNIQUE and NOT NULL.
  • Fixed #29: allow database patches when the plugin version is major of db version.
  • Fixed crash and enhanced /bcp lookup command, see description
    • Not allows duplicated users.
    • The parameter "blocks" is now called "inclusions" (shortcut param will be "i")
    • The inclusions/exclusions now handle also the items
    • The inclusions/exclusions now got a "no-strict mode" with allow to select all blocks with the same ID when no meta is specified
    • Example:
    • include=5 --> includes all blocks with ID 5 (no strict)
    • include=5:0 --> includes only block with ID 5 and meta 0 (strict)
  • Fixed invalid parameter message showing actions instead of parameters.
  • Fixed parsing whitespaced player names on forms.
  • Fixed possible crash in case of player disconnection.
  • Fixed possible spamming logs using filled buckets.
  • Fixed rollback not sorting by time the logs. (This was a bug since first versions, I always forgot to fix it 💀)
  • Improved the PatchManager!
    • It now backups the SQLite database.
    • It correctly handles the case of no patches for a single database and it updates the database version only to the last patch added.
  • Improved the error message during the parsing of inclusions/exclusions
  • Rollback now update all the blocks. (e.g. rollback the water will also remove the other parts, not only the first)
    • Little performance cost but good result for liquids and lights.
  • Set synchronous mode to NORMAL in SQLite. It should increase performance with WAL mode
  • Throwing exception when using PluginQueries::onRollback()
  • Updated russian language (#28)
  • Fixed #20: item frame transactions are now logged.
  • Removed bed from clickable blocks because it's useless. It prevents query spam when players click the bed during the day.
  • Fixed #21: crash related to a missing still-lava block on database table.
  • Fixed #22: removed SQLite transactions (causing crash due to concurrency) and using WAL mode.
  • Fixed crash during plugin disabling in case of missing database.
  • Added russian language (thanks @MaksPV)

Introductory notes

  • This update is recommended because it contains many improvements and bug fixes.
  • The update is backward compatible with v0.5.x
  • If you are already using BedcoreProtect v0.5.x and you upgrade to v0.6.0, you will notice a message of database upgrading. Don't worry, that's normal. It's the patch manager process that updates the database tables for the new version. If during the process you got a crash, please open a issue here!



  • Added /bcp undo command (Permission: bcp.subcommand.undo). Allows to undo the last rollback/restore.
  • Now block restrictions works. So, is now possible to include/exclude certain blocks during a rollback or a lookup.
  • When a player spawn an entity through a spawn egg is now logged.
  • When a entity dies due to a block (e.g. fire, lava, etc...) is now logged.
  • When a player ignites a TNT is now logged.
  • Code analyzed with PHPStan level 8.


  • With SQLite the data will be saved every 5 minutes (same as worlds) instead of 5 hours.
  • Re-wrote query execution code getting a speed up!
  • Most of queries when executed are now scheduled in order by preventing missing or wrong logs.
  • Improved the QueryGenerator execution.
  • Improved painting break tracking.
  • Removed tiles when rollback placed blocks.
  • General minor improvements.


  • The patch manager is now able to patch a different numbers of patches for each database type.
  • From now in the database version of status command (/bcp status) will be applied a suffix indicating if the current database version is backward compatible.
    (e.g. - Database version: v0.6.1 (Backward Compatible))
  • Default SQLite database file name is now logs.db. (This change is backward compatible)

Bug fixes

  • Fixed #9
  • Fixed #12
  • Fixed an issue not allowing inspector to getting logs of the replaced block.
  • Fixed crash during the rollback of entities.
  • Fixed possible issue with command permission check order.
  • Fixed order of plugin data folder creation.
  • Fixed wrong position calculation of liquid tracking.
  • Fixed correct meta value (damage) when placing block.
  • Fixed wrong restore of bed and doors when placed.
  • Fixed duplicated door log when breaking.
  • Fixed block burning rollback not correctly working some times.
  • Fixed purge command not correctly working on SQLite.
  • Fixed excessive log during inventory transaction.
  • Fixed database file creation on start-up not taking the choosed file name in the config.
  • Fixed possibles crashes relative to null values while tracking.
  • When rollback an area containing blocks with light source, the light will try to be updated. (This avoid empty light areas)
  • Don't log anymore players when they die. It causes a crash while rollback.
  • Analyzed code with PHPStan (Level 7)
  • Fixed missing records not found when inspecting a double chest (issue #16)
  • Fixed minor issue
  • Fixed crash while rollback.
  • Fixed crash when falling block fell in "moving" liquid.
  • Fixed crash when damager entity is null.
  • Small UI update:
    • Added "near" command.
    • Don't force the user to set a radius when using advanced lookup.
    • Re-ordered menu buttons.
    • When closing a sub-menu, will be opened the main menu.
    • Updated translations.
  • Code micro-optimized!
  • Fixed crash while logging "fake" inventory transaction.
  • Minor fixes.
  • Added database minimum requirements in README file. (Issue #13)
  • Fixed #14: ItemFrame does not decrease item count when adding.
  • Fixed throwing UnexpectedValueException when running "/co lookup" command.
  • Fixed missing error message when inserting a not valid parameter.
  • Minor code improvements.
  • Fixed possible start-up crash when the plugin's patcher starts.
  • Fixed crash occured when running /bcp status.

First official release.

using v0.8.2
11 Jun 21
using v0.8.1
16 May 21
using v0.8.0
10 May 21
Very good plugin
using v0.7.2
30 Mar 21
using v0.7.2
24 Mar 21
using v0.7.2
16 Mar 21
Amazing plugin. I remember using this back when it hogged resources, but it's so much better now. Completely configurable as to what gets logged, and the ability to rollback small areas is one of the best things I've ever seen.
using v0.6.2
11 Jun 20
Amazing plugin
using v0.6.0
11 May 20
using v0.5.7
21 Apr 20
Why can I not place down any redstone?
22 Apr 20
Hi, don't negatively evaluate the plugin, because it may be because of the redstone plugin. Anyway, open a issue here:
using v0.5.6
18 Mar 20
Great job, much better than WhatTheServer
06 Apr 20
Thank you!
using v0.5.6
12 Feb 20
Can i make so that only ops have access to claiming?
12 Feb 20
I don't understand what you asked, you can't claim with this plugin.
using v0.5.3
17 Jan 20
This is amazing ! Tysm!
19 Jan 20
You're welcome! :)
using v0.5.1
04 Oct 19
Amazing tool for any server. Long awaited for many server owners. Great Job!
19 Jan 20
Thank you! :)
using v0.4.1
16 Aug 19
What a great Anti-Grief plugin!!

Reply to review by :

Supported API versions
Producers §
  • Contributors:
    • @KadTheHunter
    • @MaksPV
License §
Anti-Griefing Tools
Admin Tools
World Editing and Management
Other files
Edit world
Asynchronous tasks

You can leave one review per plugin release, and delete or update your review at any time