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 1.0.1
Direct Download How to install?
Switch version
3128 Downloads / 18358 Total
18 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

In case of MySQL as storage, the minimum required version must be >= 5.6.4


You can access the following commands by using /bedcoreprotect, /bcp, /core or /co. Running this command without arguments and with the configuration option enable-ui-menu: true, it will display a graphic interface to simplify the plugin usage.

The command permission is bcp.command.bedcoreprotect (default: operator).

Command overview

Command Description Permission Permission default
/bcp help Display a list of commands Operator
/bcp lookup Lookup block data bcp.subcommand.lookup Operator
/bcp purge Delete old block data bcp.subcommand.purge Operator
/bcp reload Reload the configuration file bcp.subcommand.reload Operator
/bcp inspect Toggle the inspector bcp.subcommand.inspect Operator
/bcp restore Restore block data bcp.subcommand.restore Operator
/bcp rollback Rollback block data bcp.subcommand.rollback Operator
/bcp show View the plugin status Operator
/bcp status View the plugin status bcp.subcommand.status Operator

Command shortcuts

Command Description Permission Permission default
/bcp near Performs a lookup with radius 10 bcp.subcommand.near Operator
/bcp undo Revert a rollback/restore via the opposite action bcp.subcommand.undo Operator

Command details

Detailed commands information are listed below.

/bcp help

Display a list of commands available in-game.

/bcp lookup <parameters>

Perform a lookup returning a page with all blocks data fetched. If multiple pages are returned, see the command /bcp show to switch pages.

Alias: /bcp l <parameters>

Parameter Mandatory
time YES
world YES (only console)
radius NO
users NO
actions NO
include NO
exclude NO

/bcp purge <parameters>

Purge old block data. Useful for freeing up space on your HDD if you don't need the older data.

Parameter Mandatory
time YES
world NO

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

Purging Worlds

You can also optionally specify a world where delete the data. For example, /bcp purge t=30d w=faction_world will delete all data older than one month in the Faction world, without deleting data in any other worlds.

You can also add #optimize to the end of the command (e.g. /bcp purge t=30d #optimize) will also optimize your tables and reclaim disk space.

/bcp reload

Reloads the configuration file.

/bcp inspect

Enable the inspector. Type the command again to disable it.

Alias: /bcp i

/bcp restore <parameters>

Perform a rollback. Rollbacks can be used to revert player actions.

Alias: /bcp rs <parameters>

Parameter Mandatory
time YES
world YES (only console)
radius YES
users NO
actions NO
include NO
exclude NO

/bcp rollback <parameters>

Perform a restore. Restoring can be used to undo rollbacks or to restore player actions.

Alias: /bcp rb <parameters>

Parameter Mandatory
time YES
world YES (only console)
radius YES
users NO
actions NO
include NO
exclude NO

/bcp show <page>:<lines>

Allow switching page when multiple pages are returned from the /bcp lookup command. To change the number of lines displayed on a page, use the command /bcp show <page>:<lines>.

Alias: /bcp s

For example, /bcp s 2:10 will return 10 lines of data, starting from the second page.

/bcp status

Displays the plugin status and version information.

Parameters overview

Parameter Aliases Description
users user, u Specify the user(s).
time t Specify the amount of time.
radius r Specify a radius area.
world w Specify the world.
actions action, a Restrict to a certain actions.
include i Include specific blocks.
exclude e Exclude specific blocks.

Parameter details

Detailed commands parameters information are listed below.


You can specify a single or multiple users or entities.


  • u=Notch
  • u=Notch,shoghicp
  • u=matcracker,#Zombie


You can specify weeks, days, hours, minutes, and seconds.


  • t=4w5d2h7m20s
  • t=5d2h


A numeric radius targets within that many blocks of your player location.


  • r=20 (target within 20 blocks of your location)
  • r=#global (target the entire server)


You can specify a single world.


  • w=faction
  • w="my world" (if your world name has whitespaces use double quotes)


Restrict the command to a specific action.

Action Description
block Placed/Broken blocks
+block Placed blocks
-block Broken blocks
click Player interactions
container Items taken from or put in chests
+container Items put in chests
-container Items taken from chests
kill Mobs killed

For example, if you want to only rollback blocks placed, you would use a=+block


Can be used to specify a blocks/items.


  • i=stone (only includes stone)
  • w=stone,oak_wood,bedrock (specify multiple blocks)

You can find a list of blocks at


Can be used to exclude a blocks/items.


  • e=tnt (only excludes TNT)


You can contribute to the development and maintenance of BedcoreProtect through the following payment methods:

  • Bitcoin (BTC): 37BCe87gveKRNPzbcLLyAk2kLVqE53MSZc
  • Ethereum (ETH): 0x6C5c009d5EC990dA2bCFb7A7aeDD369E21C78087

Your help can make a difference. Thank you.


  • 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 §
  • Fixed crash when interacting with ItemFrame without item in hand (#61)

Introductory notes

This version of plugin only supports PocketMine-MP API 4.0.0. The update is recommended in order to use it with the new PocketMine version. Also, the update does not contain any new features, it's just a compatibility update (with improvements certainly).

NOTE: The update is backward compatible with the previous versions.



  • Minor improvements.


  • Supported PocketMine-MP API 4.0.0 (Closed #49)
  • Dropped support for PocketMine-MP API 3.X
  • The version mandatory of PHP is now >= 8.0.0
  • Added debug-mode in the configuration file.
  • Fix action value for "container" not working correctly (thanks @HadVSC)
  • Fixed crash occurred when rollback a double chest inventory (#56)
  • Fixed crash "Unable to execute statement: cannot start a transaction within a transaction" (#47)
  • Fixed tiles (chests, signs, etc...) data not correctly rollback.
  • Added missing world and optimize elements in the "purge" form
  • Fixed crash when using /bcp purge command with the world parameter.
  • Other minor changes.

Introductory notes

  • This update is recommended because it contains new features, many improvements and bug fixes.
  • The update is backward compatible with the previous version.


New Features

  • Added support for global radius by using r=#global. With this option you can rollback an entire world.
  • Added possibility to rollback/restore a world from Console.
  • Added new command parameter world. With this option you can choose which world you want to interact with. Example: /bcp rollback t=15d r=#global w=Faction.
  • Added possibility to purge only a specific world (e.g /bcp purge t=30d w=world)
  • Added additional parameter to optimize database space when deleting data. It can be accessed via /bcp purge t=30d #optimize


  • Supported PHP 8
  • Reorganized plugin subcommands for greater flexibility.
  • Minor improvements.
  • Improved README


  • Added new option enable-ui-menu in the configuration file. If enabled, you can run "/bcp" to show the plugin UI
  • Removed /bcp menu command.

Bug fixes

  • Fixed Fatal error: Allowed memory size of N bytes exhausted when fetching a lot of data.
  • Minor bug fixes.
  • 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 v1.2.0
20 Jul 23
There is no optimization if there are more than > 20 players on the server - 15 tps.
20 Jul 23
Please submit an issue on the plugin repository with the timings. In this way I can try to improve the performance. Thank you.
using v1.0.1
31 Jan 23
using v1.0.1
20 Dec 22
using v0.10.2
17 Aug 21
Good plugin.
17 Aug 21
using v0.10.2
13 Aug 21
using v0.8.2
11 Jun 21
using v0.8.1
16 May 21
using v0.8.0
10 May 21
Very good plugin
13 Aug 21
Thank you!
using v0.7.2
30 Mar 21
13 Aug 21
Thank you!
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.
13 Aug 21
Thank you!
using v0.6.2
11 Jun 20
Amazing plugin
13 Aug 21
Thank you!
using v0.6.0
11 May 20
13 Aug 21
Thank you!
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 :

/ 5
Supported API versions
Producers §
  • Collaborators:
    • @matcracker
  • Contributors:
    • @HadVSC
    • @KadTheHunter
  • Translators:
    • @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

/ 5