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.7.1
Direct Download How to install?
Switch version
1564 Downloads / 4441 Total
7 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, "/co 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 §


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.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 §
  • 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