Coder Social home page Coder Social logo

coreprotect's Introduction

CoreProtect

Artistic License 2.0 GitHub Workflows Netlify Status CodeFactor Join us on Discord

CoreProtect

CoreProtect is a blazing fast data logging and anti-griefing tool for Minecraft servers.

For a detailed description of the plugin, please visit coreprotect.net.

Quick Links
CoreProtect Discord: discord.gg/b4DZ4jy
CoreProtect Patreon: patreon.com/coreprotect
CoreProtect Documentation: docs.coreprotect.net
Downloads for MC 1.14 - 1.20: coreprotect.net/latest
Downloads for MC 1.8 - 1.12: coreprotect.net/legacy

bStats

bStats Graph Data

API

Dependency Information

Maven

<repository>
    <id>playpro-repo</id>
    <url>https://maven.playpro.com</url>
</repository>
<dependency>
    <groupId>net.coreprotect</groupId>
    <artifactId>coreprotect</artifactId>
    <version>22.4</version>
    <scope>provided</scope>
</dependency>

Contributing

CoreProtect is an open source project, and gladly accepts community contributions.

If you'd like to contribute, please read our contributing guidelines here: CONTRIBUTING.md

Contributor Covenant

coreprotect's People

Contributors

agentoak avatar asdanjer avatar bermudalocket avatar c0nd3mnd avatar dependabot[bot] avatar div2005 avatar dkim19375 avatar dreamvoid avatar emielderckx avatar flandretw avatar ghost-chu avatar gungadean avatar herocc avatar heyxmirko avatar ianiiaannn avatar intelli avatar krazyxwolf avatar murdified avatar nahuld avatar prodpreva1l avatar radiantuwu avatar s-yh-china avatar sofianedjerbi avatar starwishsama avatar takejohn avatar telesphoreo avatar vacla avatar volandemor1 avatar whitebear13579 avatar yuanyuanowo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

coreprotect's Issues

Very strange SQL Data Truncation Error with strange sentence

When I type this in chat using CMI Hexcode formatting:

{#C32E2E>}This is a much longer test than the last ones and I just want to try the gradiants{#C32EC3<}

It comes out weird in chat, and it shows up in the console as:

[Manager] Ipod ›› This is a much longer test than the last ones and I j§xh dearst want to try the gradiants

and this error runs:

[WARNING] .... java.sql.BatchUpdateException: Data truncation: #22001
[WARNING] .... at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
[WARNING] .... at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
[WARNING] .... at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
[WARNING] .... at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Unknown Source)
[WARNING] .... at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
[WARNING] .... at com.mysql.cj.util.Util.handleNewInstance(Util.java:192)
[WARNING] .... at com.mysql.cj.util.Util.getInstance(Util.java:167)
[WARNING] .... at com.mysql.cj.util.Util.getInstance(Util.java:174)
[WARNING] .... at com.mysql.cj.jdbc.exceptions.SQLError.createBatchUpdateException(SQLError.java:224)
[WARNING] .... at com.mysql.cj.jdbc.ClientPreparedStatement.executeBatchedInserts(ClientPreparedStatement.java:755)
[WARNING] .... at com.mysql.cj.jdbc.ClientPreparedStatement.executeBatchInternal(ClientPreparedStatement.java:426)
[WARNING] .... at com.mysql.cj.jdbc.StatementImpl.executeBatch(StatementImpl.java:794)
[WARNING] .... at net.coreprotect.consumer.process.Process.commit(Process.java:313)
[WARNING] .... at net.coreprotect.consumer.process.Process.processConsumer(Process.java:268)
[WARNING] .... at net.coreprotect.consumer.Consumer.run(Consumer.java:133)
[WARNING] .... at java.base/java.lang.Thread.run(Unknown Source)
[WARNING] .... Caused by: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: #22001
[WARNING] .... at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:104)
[WARNING] .... at com.mysql.cj.jdbc.ServerPreparedStatement.serverExecute(ServerPreparedStatement.java:637)
[WARNING] .... at com.mysql.cj.jdbc.ServerPreparedStatement.executeInternal(ServerPreparedStatement.java:418)
[WARNING] .... at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1092)
[WARNING] .... at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1040)
[WARNING] .... at com.mysql.cj.jdbc.ClientPreparedStatement.executeLargeUpdate(ClientPreparedStatement.java:1347)
[WARNING] .... at com.mysql.cj.jdbc.ClientPreparedStatement.executeBatchedInserts(ClientPreparedStatement.java:716)
[WARNING] .... ... 6 more

Is this some strange accidental SQL injection code I accidentally found?

Initializing Legacy Material Support?

Build this (black concrete, red concrete, lever):
image

Now destroy the black concrete block above the lever.
See Initializing Legacy Material Support. Unless you have legacy plugins and/or data this is a bug! in server console and lag for 3-5 seconds :/

CoreProtect v19.5
git-Paper-777 (MC: 1.16.5)
Java 16

Plugins (7): CoreProtect, dynmap, Essentials, EssentialsGeoIP, EssentialsSpawn, LuckPerms, NoCheatPlus

Breaking armorstand error

Breaking an armorstand causes this error on release candidate 1 (using paperspigot 1.13.2 build 480):

[12:13:27 WARN]: java.lang.IllegalArgumentException: Cannot get data for not block ARMOR_STAND
[12:13:27 WARN]: 	at com.google.common.base.Preconditions.checkArgument(Preconditions.java:191)
[12:13:27 WARN]: 	at org.bukkit.craftbukkit.v1_13_R2.block.data.CraftBlockData.newData(CraftBlockData.java:472)
[12:13:27 WARN]: 	at org.bukkit.craftbukkit.v1_13_R2.CraftServer.createBlockData(CraftServer.java:1989)
[12:13:27 WARN]: 	at org.bukkit.craftbukkit.v1_13_R2.CraftServer.createBlockData(CraftServer.java:1964)
[12:13:27 WARN]: 	at org.bukkit.Bukkit.createBlockData(Bukkit.java:1348)
[12:13:27 WARN]: 	at org.bukkit.Material.createBlockData(Material.java:3056)
[12:13:27 WARN]: 	at net.coreprotect.Functions.createBlockData(Functions.java:1466)
[12:13:27 WARN]: 	at net.coreprotect.Functions.stringToByteData(Functions.java:303)
[12:13:27 WARN]: 	at net.coreprotect.database.Database.insertBlock(Database.java:212)
[12:13:27 WARN]: 	at net.coreprotect.database.Logger.log_break(Logger.java:224)
[12:13:27 WARN]: 	at net.coreprotect.consumer.Process.processBlockBreak(Process.java:280)
[12:13:27 WARN]: 	at net.coreprotect.consumer.Process.processConsumer(Process.java:134)
[12:13:27 WARN]: 	at net.coreprotect.consumer.Consumer.run(Consumer.java:122)
[12:13:27 WARN]: 	at java.lang.Thread.run(Thread.java:748)

coreprotect freebsd issues

Attempting to run coreprotect on freebsd gives a bunch of sqlite errors:

[18:24:14] [Server thread/INFO]: [CoreProtect] Enabling CoreProtect v19.5
[18:24:14] [Server thread/WARN]: java.sql.SQLException: no such column: 'type'
[18:24:14] [Server thread/WARN]: at org.sqlite.jdbc3.JDBC3ResultSet.findColumn(JDBC3ResultSet.java:49)
[18:24:14] [Server thread/WARN]: at org.sqlite.jdbc3.JDBC3ResultSet.getString(JDBC3ResultSet.java:444)
[18:24:14] [Server thread/WARN]: at net.coreprotect.Functions.createDatabaseTables(Functions.java:536)
[18:24:14] [Server thread/WARN]: at net.coreprotect.config.ConfigHandler.loadDatabase(ConfigHandler.java:206)
[18:24:14] [Server thread/WARN]: at net.coreprotect.config.ConfigHandler.performInitialization(ConfigHandler.java:366)
[18:24:14] [Server thread/WARN]: at net.coreprotect.CoreProtect.onEnable(CoreProtect.java:72)
[18:24:14] [Server thread/WARN]: at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:263)
[18:24:14] [Server thread/WARN]: at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:370)
[18:24:14] [Server thread/WARN]: at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:500)
[18:24:14] [Server thread/WARN]: at org.bukkit.craftbukkit.v1_16_R3.CraftServer.enablePlugin(CraftServer.java:518)
[18:24:14] [Server thread/WARN]: at org.bukkit.craftbukkit.v1_16_R3.CraftServer.enablePlugins(CraftServer.java:432)
[18:24:14] [Server thread/WARN]: at net.minecraft.server.v1_16_R3.MinecraftServer.loadWorld(MinecraftServer.java:594)
[18:24:14] [Server thread/WARN]: at net.minecraft.server.v1_16_R3.DedicatedServer.init(DedicatedServer.java:298)
[18:24:14] [Server thread/WARN]: at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:1069)
[18:24:14] [Server thread/WARN]: at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:291)
[18:24:14] [Server thread/WARN]: at java.base/java.lang.Thread.run(Unknown Source)
[18:24:14] [Server thread/WARN]: java.sql.SQLException: no such column: 'id'
[18:24:14] [Server thread/WARN]: at org.sqlite.jdbc3.JDBC3ResultSet.findColumn(JDBC3ResultSet.java:49)
[18:24:14] [Server thread/WARN]: at org.sqlite.jdbc3.JDBC3ResultSet.getInt(JDBC3ResultSet.java:400)
[18:24:14] [Server thread/WARN]: at net.coreprotect.config.ConfigHandler.loadWorlds(ConfigHandler.java:293)
[18:24:14] [Server thread/WARN]: at net.coreprotect.config.ConfigHandler.performInitialization(ConfigHandler.java:372)
[18:24:14] [Server thread/WARN]: at net.coreprotect.CoreProtect.onEnable(CoreProtect.java:72)
[18:24:14] [Server thread/WARN]: at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:263)
[18:24:14] [Server thread/WARN]: at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:370)
[18:24:14] [Server thread/WARN]: at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:500)
[18:24:14] [Server thread/WARN]: at org.bukkit.craftbukkit.v1_16_R3.CraftServer.enablePlugin(CraftServer.java:518)
[18:24:14] [Server thread/WARN]: at org.bukkit.craftbukkit.v1_16_R3.CraftServer.enablePlugins(CraftServer.java:432)
[18:24:14] [Server thread/WARN]: at net.minecraft.server.v1_16_R3.MinecraftServer.loadWorld(MinecraftServer.java:594)
[18:24:14] [Server thread/WARN]: at net.minecraft.server.v1_16_R3.DedicatedServer.init(DedicatedServer.java:298)
[18:24:14] [Server thread/WARN]: at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:1069)
[18:24:14] [Server thread/WARN]: at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:291)
[18:24:14] [Server thread/WARN]: at java.base/java.lang.Thread.run(Unknown Source)
[18:24:14] [Server thread/WARN]: java.lang.IllegalStateException: Current state = RESET, new state = FLUSHED
[18:24:14] [Server thread/WARN]: at java.base/java.nio.charset.CharsetDecoder.throwIllegalStateException(Unknown Source)
[18:24:14] [Server thread/WARN]: at java.base/java.nio.charset.CharsetDecoder.flush(Unknown Source)
[18:24:14] [Server thread/WARN]: at java.base/java.nio.charset.CharsetDecoder.decode(Unknown Source)
[18:24:14] [Server thread/WARN]: at java.base/java.nio.charset.Charset.decode(Unknown Source)
[18:24:14] [Server thread/WARN]: at org.sqlite.core.NativeDB.utf8ByteBufferToString(NativeDB.java:507)
[18:24:14] [Server thread/WARN]: at org.sqlite.core.NativeDB.column_name(NativeDB.java:239)
[18:24:14] [Server thread/WARN]: at org.sqlite.core.DB.column_names(DB.java:733)
[18:24:14] [Server thread/WARN]: at org.sqlite.jdbc3.JDBC3Statement.getResultSet(JDBC3Statement.java:131)
[18:24:14] [Server thread/WARN]: at org.sqlite.jdbc3.JDBC3Statement.executeQuery(JDBC3Statement.java:73)
[18:24:14] [Server thread/WARN]: at net.coreprotect.config.ConfigHandler.loadTypes(ConfigHandler.java:246)
[18:24:14] [Server thread/WARN]: at net.coreprotect.config.ConfigHandler.performInitialization(ConfigHandler.java:373)
[18:24:14] [Server thread/WARN]: at net.coreprotect.CoreProtect.onEnable(CoreProtect.java:72)
[18:24:14] [Server thread/WARN]: at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:263)
[18:24:14] [Server thread/WARN]: at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:370)
[18:24:14] [Server thread/WARN]: at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:500)
[18:24:14] [Server thread/WARN]: at org.bukkit.craftbukkit.v1_16_R3.CraftServer.enablePlugin(CraftServer.java:518)
[18:24:14] [Server thread/WARN]: at org.bukkit.craftbukkit.v1_16_R3.CraftServer.enablePlugins(CraftServer.java:432)
[18:24:14] [Server thread/WARN]: at net.minecraft.server.v1_16_R3.MinecraftServer.loadWorld(MinecraftServer.java:594)
[18:24:14] [Server thread/WARN]: at net.minecraft.server.v1_16_R3.DedicatedServer.init(DedicatedServer.java:298)
[18:24:14] [Server thread/WARN]: at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:1069)
[18:24:14] [Server thread/WARN]: at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:291)
[18:24:14] [Server thread/WARN]: at java.base/java.lang.Thread.run(Unknown Source)
[18:24:14] [Server thread/WARN]: java.sql.SQLException: no such column: 'version'
[18:24:14] [Server thread/WARN]: at org.sqlite.jdbc3.JDBC3ResultSet.findColumn(JDBC3ResultSet.java:49)
[18:24:14] [Server thread/WARN]: at org.sqlite.jdbc3.JDBC3ResultSet.getString(JDBC3ResultSet.java:444)
[18:24:14] [Server thread/WARN]: at net.coreprotect.patch.Patch.getDatabaseVersion(Patch.java:57)
[18:24:14] [Server thread/WARN]: at net.coreprotect.patch.Patch.versionCheck(Patch.java:235)
[18:24:14] [Server thread/WARN]: at net.coreprotect.config.ConfigHandler.performInitialization(ConfigHandler.java:388)
[18:24:14] [Server thread/WARN]: at net.coreprotect.CoreProtect.onEnable(CoreProtect.java:72)
[18:24:14] [Server thread/WARN]: at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:263)
[18:24:14] [Server thread/WARN]: at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:370)
[18:24:14] [Server thread/WARN]: at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:500)
[18:24:14] [Server thread/WARN]: at org.bukkit.craftbukkit.v1_16_R3.CraftServer.enablePlugin(CraftServer.java:518)
[18:24:14] [Server thread/WARN]: at org.bukkit.craftbukkit.v1_16_R3.CraftServer.enablePlugins(CraftServer.java:432)
[18:24:14] [Server thread/WARN]: at net.minecraft.server.v1_16_R3.MinecraftServer.loadWorld(MinecraftServer.java:594)
[18:24:14] [Server thread/WARN]: at net.minecraft.server.v1_16_R3.DedicatedServer.init(DedicatedServer.java:298)
[18:24:14] [Server thread/WARN]: at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:1069)
[18:24:14] [Server thread/WARN]: at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:291)
[18:24:14] [Server thread/WARN]: at java.base/java.lang.Thread.run(Unknown Source)
[18:24:14] [Server thread/WARN]: java.sql.SQLException: no such column: 'version'
[18:24:14] [Server thread/WARN]: at org.sqlite.jdbc3.JDBC3ResultSet.findColumn(JDBC3ResultSet.java:49)
[18:24:14] [Server thread/WARN]: at org.sqlite.jdbc3.JDBC3ResultSet.getString(JDBC3ResultSet.java:444)
[18:24:14] [Server thread/WARN]: at net.coreprotect.patch.Patch.getDatabaseVersion(Patch.java:57)
[18:24:14] [Server thread/WARN]: at net.coreprotect.patch.Patch.versionCheck(Patch.java:236)
[18:24:14] [Server thread/WARN]: at net.coreprotect.config.ConfigHandler.performInitialization(ConfigHandler.java:388)
[18:24:14] [Server thread/WARN]: at net.coreprotect.CoreProtect.onEnable(CoreProtect.java:72)
[18:24:14] [Server thread/WARN]: at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:263)
[18:24:14] [Server thread/WARN]: at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:370)
[18:24:14] [Server thread/WARN]: at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:500)
[18:24:14] [Server thread/WARN]: at org.bukkit.craftbukkit.v1_16_R3.CraftServer.enablePlugin(CraftServer.java:518)
[18:24:14] [Server thread/WARN]: at org.bukkit.craftbukkit.v1_16_R3.CraftServer.enablePlugins(CraftServer.java:432)
[18:24:14] [Server thread/WARN]: at net.minecraft.server.v1_16_R3.MinecraftServer.loadWorld(MinecraftServer.java:594)
[18:24:14] [Server thread/WARN]: at net.minecraft.server.v1_16_R3.DedicatedServer.init(DedicatedServer.java:298)
[18:24:14] [Server thread/WARN]: at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:1069)
[18:24:14] [Server thread/WARN]: at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:291)
[18:24:14] [Server thread/WARN]: at java.base/java.lang.Thread.run(Unknown Source)

Add support for PostgreSQL

Add support for PostgreSQL as a storage medium. PostgreSQL is more efficient and faster than MySQL/MariaDB in most cases.

Server DDOS when database connection cannot be established

We recently had a couple of server crashes because the plugin was not able to establish a connection with the local SQLite and in some configurations with the remote MySQL and it seems to be doing a recursive reconnection loop without any delay between the cycles.

Please add some sleeping time and a limit when you retry to connect so it would not DDOS down the server.

Errors spammed in the console:

[17:13:48] [Thread-101/WARN]: org.sqlite.SQLiteException: [SQLITE_ERROR] SQL error or missing database (near "database_lock": syntax error)
[17:13:48] [Thread-101/WARN]: 	at org.sqlite.core.DB.newSQLException(DB.java:941)
[17:13:48] [Thread-101/WARN]: 	at org.sqlite.core.DB.newSQLException(DB.java:953)
[17:13:48] [Thread-101/WARN]: 	at org.sqlite.core.DB.throwex(DB.java:918)
[17:13:48] [Thread-101/WARN]: 	at org.sqlite.core.NativeDB._exec_utf8(Native Method)
[17:13:48] [Thread-101/WARN]: 	at org.sqlite.core.NativeDB._exec(NativeDB.java:94)
[17:13:48] [Thread-101/WARN]: 	at org.sqlite.jdbc3.JDBC3Statement.executeUpdate(JDBC3Statement.java:109)
[17:13:48] [Thread-101/WARN]: 	at net.coreprotect.consumer.Process.updateLockTable(Process.java:63)
[17:13:48] [Thread-101/WARN]: 	at net.coreprotect.consumer.Process.processConsumer(Process.java:100)
[17:13:48] [Thread-101/WARN]: 	at net.coreprotect.consumer.Consumer.run(Consumer.java:123)

[Suggestion] log silverfish entering a block

CoreProtect seems to log the silverfish breaking the block (when leaving it), but the silverfish entering the block is not logged.
This may be logged with 2 entries : #silverfish breaking the stone block, then #silverfish placing the infested_stone block. The other blocks that can be infested should also be considered.

entity-change is enabled on my server.

In the following screenshot, I placed a stone block, and made a silverfish hide in this block (I spawned the silverfish next to it).
Then I spawned another silverfish and hit it, to make the other silverfish leave the stone block, breaking it at the same time.
CoreProtect logged me placing the stone block, and the silverfish breaking the infested_stone, but not the silverfish entering the stone block.
image

Licence

is the Artistic License 2.0 applied to the plugin itself, am I able to decompile CoreProtect and port it to a different platform? (or obtain the source)

Purge command with conditions

It would be a great addition and I am certain a lot of people are in need of this. Purge command should have conditions/parameters. Currently in CoreProtect2 it only purges with time based argument. It should work in the same way as rollbacks where you can specify a u: a: r: t: b: etc. This way we can do in depth purging.

1.14 players chest being emptied

Chest are being completely emptied out of no where. it happened when i updated from the 1.13 to the 1.14 version of CO. co inspect tells me that it got removed most of the time but the players never removed it. some chest say the last thing was something added to it.

Add API method to log Container#getInventory()#addItem(...)

Hello, would it be possible to add a method so that I can log what items my plugin/the player has added into a chest etc.?

Something like this:

logContainerTransaction(String user, Location loc, ItemStack item, boolean addedOrTaken)

Currently it's only possible to log whether a player has transferred something into/out of the chest, but not what exactly, or to log a placement in the world.

Rolling back a player's inventory

I would like to see the function of rolling back the player's inventory, perhaps this function will help someone who has lost an important thing on their server and cannot create or find a new one

exploit: Co lookup action: command exclusion list

Is there currently any way to create an exclusion list for the commands on the list not to be logged by co?
The plugin is currently logging /login, /l and /register, /reg commands with user's passwords visible on the /co lookup action: login to find the cords of where the command was ran then again /co lookup action: command to see user's login password.
javaw_KZbdBaZffJ

More Items Info

Add a window when you move the cursor over the item ID where any enchant and any custom name are reported as has been done for the time elapsed by an action
IMG_20210810_160011_345.jpg

Rollback causes items to lose enchants & spawners to revert to the default pig ones

On the server that I run when we roll back items that have enchants or enchanted books, they lose their enchants. Another thing happens with spawners where they roll back as the default pig spawner rather than the spawner that they were. Any help in resolving this is much appreciated!

Image of the enchanted book that was rolled back without enchants
2021-08-15_18 27 15

Rolled back a area and the items didn't return to the chests

I recently had a little bit of grief on my server. I rolled back an area and the items didn't return to the chests but on the logs, it knows the items should be there. Is there anything that could be affecting this or is there a known issue? I'm up to date with Core Protect 20.0

image

image

[Suggestion] allow filtering for purges

It would be very helpful if the same filtering parameters that are available in co lookup/rollback/restore could be used to filter what to purge, so you could for example purge only stuff by user:#piston to get rid of database spam from flying machines or purge mob drops from a radius (a specific farm).

Could not pass event PlayerArmorStandManipulateEvent to CoreProtect v2.15.1

[Mon, 8. Oct 2018 10:32:07 EDT INFO] This server is running CraftBukkit version git-Spigot-f6a273b-8ab46ff (MC: 1.13.1) (Implementing API version 1.13.1-R0.1-SNAPSHOT)

[03:49:42] [Server thread/ERROR]: Could not pass event PlayerArmorStandManipulateEvent to CoreProtect v2.15.1
org.bukkit.event.EventException: null
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:308) ~[spigot.jar:git-Spigot-f6a273b-8ab46ff]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot.jar:git-Spigot-f6a273b-8ab46ff]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:500) ~[spigot.jar:git-Spigot-f6a273b-8ab46ff]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:485) ~[spigot.jar:git-Spigot-f6a273b-8ab46ff]
at net.minecraft.server.v1_13_R2.EntityArmorStand.a(EntityArmorStand.java:385) ~[spigot.jar:git-Spigot-f6a273b-8ab46ff]
at net.minecraft.server.v1_13_R2.EntityArmorStand.a(EntityArmorStand.java:322) ~[spigot.jar:git-Spigot-f6a273b-8ab46ff]
at net.minecraft.server.v1_13_R2.PlayerConnection.a(PlayerConnection.java:1861) ~[spigot.jar:git-Spigot-f6a273b-8ab46ff]
at net.minecraft.server.v1_13_R2.PacketPlayInUseEntity.a(SourceFile:69) ~[spigot.jar:git-Spigot-f6a273b-8ab46ff]
at net.minecraft.server.v1_13_R2.PacketPlayInUseEntity.a(SourceFile:13) ~[spigot.jar:git-Spigot-f6a273b-8ab46ff]
at net.minecraft.server.v1_13_R2.PlayerConnectionUtils.a(SourceFile:10) ~[spigot.jar:git-Spigot-f6a273b-8ab46ff]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_161]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_161]
at net.minecraft.server.v1_13_R2.SystemUtils.a(SourceFile:199) [spigot.jar:git-Spigot-f6a273b-8ab46ff]
at net.minecraft.server.v1_13_R2.MinecraftServer.b(MinecraftServer.java:900) [spigot.jar:git-Spigot-f6a273b-8ab46ff]
at net.minecraft.server.v1_13_R2.DedicatedServer.b(DedicatedServer.java:417) [spigot.jar:git-Spigot-f6a273b-8ab46ff]
at net.minecraft.server.v1_13_R2.MinecraftServer.a(MinecraftServer.java:835) [spigot.jar:git-Spigot-f6a273b-8ab46ff]
at net.minecraft.server.v1_13_R2.MinecraftServer.run(MinecraftServer.java:733) [spigot.jar:git-Spigot-f6a273b-8ab46ff]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_161]
Caused by: java.lang.NullPointerException
at org.bukkit.craftbukkit.v1_13_R2.block.CraftBlockState.setType(CraftBlockState.java:125) ~[spigot.jar:git-Spigot-f6a273b-8ab46ff]
at net.coreprotect.consumer.Queue.queueContainerTransaction(Queue.java:136) ~[?:?]
at net.coreprotect.listener.PlayerListener.onPlayerArmorStandManipulateEvent(PlayerListener.java:279) ~[?:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_161]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_161]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_161]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_161]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:304) ~[spigot.jar:git-Spigot-f6a273b-8ab46ff]
... 17 more
[03:49:42] [Server thread/ERROR]: Could not pass event PlayerArmorStandManipulateEvent to CoreProtect v2.15.1
org.bukkit.event.EventException: null
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:308) ~[spigot.jar:git-Spigot-f6a273b-8ab46ff]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot.jar:git-Spigot-f6a273b-8ab46ff]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:500) ~[spigot.jar:git-Spigot-f6a273b-8ab46ff]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:485) ~[spigot.jar:git-Spigot-f6a273b-8ab46ff]
at net.minecraft.server.v1_13_R2.EntityArmorStand.a(EntityArmorStand.java:385) ~[spigot.jar:git-Spigot-f6a273b-8ab46ff]
at net.minecraft.server.v1_13_R2.EntityArmorStand.a(EntityArmorStand.java:333) ~[spigot.jar:git-Spigot-f6a273b-8ab46ff]
at net.minecraft.server.v1_13_R2.PlayerConnection.a(PlayerConnection.java:1861) ~[spigot.jar:git-Spigot-f6a273b-8ab46ff]
at net.minecraft.server.v1_13_R2.PacketPlayInUseEntity.a(SourceFile:69) ~[spigot.jar:git-Spigot-f6a273b-8ab46ff]
at net.minecraft.server.v1_13_R2.PacketPlayInUseEntity.a(SourceFile:13) ~[spigot.jar:git-Spigot-f6a273b-8ab46ff]
at net.minecraft.server.v1_13_R2.PlayerConnectionUtils.a(SourceFile:10) ~[spigot.jar:git-Spigot-f6a273b-8ab46ff]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_161]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_161]
at net.minecraft.server.v1_13_R2.SystemUtils.a(SourceFile:199) [spigot.jar:git-Spigot-f6a273b-8ab46ff]
at net.minecraft.server.v1_13_R2.MinecraftServer.b(MinecraftServer.java:900) [spigot.jar:git-Spigot-f6a273b-8ab46ff]
at net.minecraft.server.v1_13_R2.DedicatedServer.b(DedicatedServer.java:417) [spigot.jar:git-Spigot-f6a273b-8ab46ff]
at net.minecraft.server.v1_13_R2.MinecraftServer.a(MinecraftServer.java:835) [spigot.jar:git-Spigot-f6a273b-8ab46ff]
at net.minecraft.server.v1_13_R2.MinecraftServer.run(MinecraftServer.java:733) [spigot.jar:git-Spigot-f6a273b-8ab46ff]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_161]
Caused by: java.lang.NullPointerException
at org.bukkit.craftbukkit.v1_13_R2.block.CraftBlockState.setType(CraftBlockState.java:125) ~[spigot.jar:git-Spigot-f6a273b-8ab46ff]
at net.coreprotect.consumer.Queue.queueContainerTransaction(Queue.java:136) ~[?:?]
at net.coreprotect.listener.PlayerListener.onPlayerArmorStandManipulateEvent(PlayerListener.java:279) ~[?:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_161]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_161]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_161]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_161]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:304) ~[spigot.jar:git-Spigot-f6a273b-8ab46ff]
... 17 more

Itemframe Errors

Release candidate 1.

Placing/removing an item in/from an itemfram on paperspigot 1.13.2 build 480 yields this result:

[12:09:09 WARN]: java.lang.IllegalArgumentException: Cannot get data for not block ITEM_FRAME
[12:09:09 WARN]: 	at com.google.common.base.Preconditions.checkArgument(Preconditions.java:191)
[12:09:09 WARN]: 	at org.bukkit.craftbukkit.v1_13_R2.block.data.CraftBlockData.newData(CraftBlockData.java:472)
[12:09:09 WARN]: 	at org.bukkit.craftbukkit.v1_13_R2.CraftServer.createBlockData(CraftServer.java:1989)
[12:09:09 WARN]: 	at org.bukkit.craftbukkit.v1_13_R2.CraftServer.createBlockData(CraftServer.java:1964)
[12:09:09 WARN]: 	at org.bukkit.Bukkit.createBlockData(Bukkit.java:1348)
[12:09:09 WARN]: 	at org.bukkit.Material.createBlockData(Material.java:3056)
[12:09:09 WARN]: 	at net.coreprotect.Functions.createBlockData(Functions.java:1466)
[12:09:09 WARN]: 	at net.coreprotect.Functions.stringToByteData(Functions.java:303)
[12:09:09 WARN]: 	at net.coreprotect.database.Database.insertBlock(Database.java:212)
[12:09:09 WARN]: 	at net.coreprotect.database.Logger.log_break(Logger.java:224)
[12:09:09 WARN]: 	at net.coreprotect.consumer.Process.processBlockBreak(Process.java:280)
[12:09:09 WARN]: 	at net.coreprotect.consumer.Process.processConsumer(Process.java:134)
[12:09:09 WARN]: 	at net.coreprotect.consumer.Consumer.run(Consumer.java:122)
[12:09:09 WARN]: 	at java.lang.Thread.run(Thread.java:748)

[Suggestion]Make CoreProtect compatible with Fabric

This Mod is write for Bukkit and Spigot, but some servers runs with Fabric. Is it possible to make it compatible with Fabric?
(Now if I put this in the mods folder, it will say [12:07:44] [ForkJoinPool-1-worker-5/WARN]: Non-Fabric mod JAR at "D:\Peter\MinecraftServer-Fabric-1.15.2\mods\CoreProtect-19.5.jar", ignoring)

[Suggestion] Option to not log InventoryMoveEvent items if they have no metadata

Add an option to only log items in the InventoryMoveEvent if the item has any metadata such as a custom name, lore, enchantments etc.

Recently my CoreProtect purges have been taking over 2 hours and almost 75% of that is taken up by processing the container data so I checked the database and indeed pretty much a lot of the information is items transferred with hoppers and almost all of them are useless items like mob drops not anything special.

Herochat integration?

I was wondering if yall would integrate with Herochat, when I use Herochat with CoreProtect it gets logged under commands if the user uses the shortcut to talk in that channel for example global chat /g (message). I would like it to show up in the chat log instead of the command log.

Core Protect not working

I recently installed Core Protect on my SMP server to prevent grief and CP doesn't work. When I try /co or /co inspect it only says "/co "

Screenshot_1

java.io.NotSerializableException: org.bukkit.potion.PotionEffect in paper 1.14.4

Screenshot 2019-09-15 at 17 36 15

[17:29:43 WARN]: java.io.NotSerializableException: org.bukkit.potion.PotionEffect
[17:29:43 WARN]: at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.j
ava:1184)
[17:29:43 WARN]: at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1378)
[17:29:43 WARN]: at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
[17:29:43 WARN]: at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
[17:29:43 WARN]: at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
[17:29:43 WARN]: at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
[17:29:43 WARN]: at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
[17:29:43 WARN]: at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1378)
[17:29:43 WARN]: at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
[17:29:43 WARN]: at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
[17:29:43 WARN]: at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
[17:29:43 WARN]: at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
[17:29:43 WARN]: at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
[17:29:43 WARN]: at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
[17:29:43 WARN]: at java.util.ArrayList.writeObject(ArrayList.java:766)
[17:29:43 WARN]: at sun.reflect.GeneratedMethodAccessor41.invoke(Unknown Source)
[17:29:43 WARN]: at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[17:29:43 WARN]: at java.lang.reflect.Method.invoke(Method.java:498)
[17:29:43 WARN]: at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1140)
[17:29:43 WARN]: at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496)
[17:29:43 WARN]: at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
[17:29:43 WARN]: at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
[17:29:43 WARN]: at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
[17:29:43 WARN]: at java.util.ArrayList.writeObject(ArrayList.java:766)
[17:29:43 WARN]: at sun.reflect.GeneratedMethodAccessor41.invoke(Unknown Source)
[17:29:43 WARN]: at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[17:29:43 WARN]: at java.lang.reflect.Method.invoke(Method.java:498)
[17:29:43 WARN]: at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1140)
[17:29:43 WARN]: at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496)
[17:29:43 WARN]: at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
[17:29:43 WARN]: at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
[17:29:43 WARN]: at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
[17:29:43 WARN]: at net.coreprotect.Functions.convertByteData(Functions.java:372)
[17:29:43 WARN]: at net.coreprotect.database.Database.insertContainer(Database.java:281)
[17:29:43 WARN]: at net.coreprotect.database.Logger.container_logger(Logger.java:195)
[17:29:43 WARN]: at net.coreprotect.database.Logger.log_container(Logger.java:360)
[17:29:43 WARN]: at net.coreprotect.consumer.Process.processContainerTransaction(Process.java:324)
[17:29:43 WARN]: at net.coreprotect.consumer.Process.processConsumer(Process.java:153)
[17:29:43 WARN]: at net.coreprotect.consumer.Consumer.run(Consumer.java:124)
[17:29:43 WARN]: at java.lang.Thread.run(Thread.java:748)
[17:29:43 WARN]: java.io.NotSerializableException: org.bukkit.potion.PotionEffect
[17:29:43 WARN]: at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
[17:29:43 WARN]: at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1378)
[17:29:43 WARN]: at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
[17:29:43 WARN]: at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
[17:29:43 WARN]: at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
[17:29:43 WARN]: at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
[17:29:43 WARN]: at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
[17:29:43 WARN]: at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1378)
[17:29:43 WARN]: at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
[17:29:43 WARN]: at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
[17:29:43 WARN]: at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
[17:29:43 WARN]: at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
[17:29:43 WARN]: at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
[17:29:43 WARN]: at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
[17:29:43 WARN]: at java.util.ArrayList.writeObject(ArrayList.java:766)
[17:29:43 WARN]: at sun.reflect.GeneratedMethodAccessor41.invoke(Unknown Source)
[17:29:43 WARN]: at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[17:29:43 WARN]: at java.lang.reflect.Method.invoke(Method.java:498)
[17:29:43 WARN]: at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1140)
[17:29:43 WARN]: at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496)
[17:29:43 WARN]: at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
[17:29:43 WARN]: at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
[17:29:43 WARN]: at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
[17:29:43 WARN]: at java.util.ArrayList.writeObject(ArrayList.java:766)
[17:29:43 WARN]: at sun.reflect.GeneratedMethodAccessor41.invoke(Unknown Source)
[17:29:43 WARN]: at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[17:29:43 WARN]: at java.lang.reflect.Method.invoke(Method.java:498)
[17:29:43 WARN]: at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1140)
[17:29:43 WARN]: at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496)
[17:29:43 WARN]: at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
[17:29:43 WARN]: at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
[17:29:43 WARN]: at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
[17:29:43 WARN]: at net.coreprotect.Functions.convertByteData(Functions.java:372)
[17:29:43 WARN]: at net.coreprotect.database.Database.insertContainer(Database.java:281)
[17:29:43 WARN]: at net.coreprotect.database.Logger.container_logger(Logger.java:195)
[17:29:43 WARN]: at net.coreprotect.database.Logger.log_container(Logger.java:360)
[17:29:43 WARN]: at net.coreprotect.consumer.Process.processContainerTransaction(Process.java:324)
[17:29:43 WARN]: at net.coreprotect.consumer.Process.processConsumer(Process.java:153)
[17:29:43 WARN]: at net.coreprotect.consumer.Consumer.run(Consumer.java:124)
[17:29:43 WARN]: at java.lang.Thread.run(Thread.java:748)
[17:29:49 WARN]: java.io.NotSerializableException: org.bukkit.potion.PotionEffect
[17:29:49 WARN]: at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
[17:29:49 WARN]: at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1378)
[17:29:49 WARN]: at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
[17:29:49 WARN]: at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
[17:29:49 WARN]: at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
[17:29:49 WARN]: at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
[17:29:49 WARN]: at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
[17:29:49 WARN]: at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1378)
[17:29:49 WARN]: at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
[17:29:49 WARN]: at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
[17:29:49 WARN]: at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
[17:29:49 WARN]: at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
[17:29:49 WARN]: at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
[17:29:49 WARN]: at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
[17:29:49 WARN]: at java.util.ArrayList.writeObject(ArrayList.java:766)
[17:29:49 WARN]: at sun.reflect.GeneratedMethodAccessor41.invoke(Unknown Source)
[17:29:49 WARN]: at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[17:29:49 WARN]: at java.lang.reflect.Method.invoke(Method.java:498)
[17:29:49 WARN]: at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1140)
[17:29:49 WARN]: at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496)
[17:29:49 WARN]: at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
[17:29:49 WARN]: at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
[17:29:49 WARN]: at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
[17:29:49 WARN]: at java.util.ArrayList.writeObject(ArrayList.java:766)
[17:29:49 WARN]: at sun.reflect.GeneratedMethodAccessor41.invoke(Unknown Source)
[17:29:49 WARN]: at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[17:29:49 WARN]: at java.lang.reflect.Method.invoke(Method.java:498)
[17:29:49 WARN]: at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1140)
[17:29:49 WARN]: at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496)
[17:29:49 WARN]: at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
[17:29:49 WARN]: at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
[17:29:49 WARN]: at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
[17:29:49 WARN]: at net.coreprotect.Functions.convertByteData(Functions.java:372)
[17:29:49 WARN]: at net.coreprotect.database.Database.insertContainer(Database.java:281)
[17:29:49 WARN]: at net.coreprotect.database.Logger.container_logger(Logger.java:195)
[17:29:49 WARN]: at net.coreprotect.database.Logger.log_container(Logger.java:361)
[17:29:49 WARN]: at net.coreprotect.consumer.Process.processContainerTransaction(Process.java:324)
[17:29:49 WARN]: at net.coreprotect.consumer.Process.processConsumer(Process.java:153)
[17:29:49 WARN]: at net.coreprotect.consumer.Consumer.run(Consumer.java:124)
[17:29:49 WARN]: at java.lang.Thread.run(Thread.java:748)
[17:29:54 WARN]: java.io.NotSerializableException: org.bukkit.potion.PotionEffect
[17:29:54 WARN]: at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
[17:29:54 WARN]: at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1378)
[17:29:54 WARN]: at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
[17:29:54 WARN]: at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
[17:29:54 WARN]: at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
[17:29:54 WARN]: at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
[17:29:54 WARN]: at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
[17:29:54 WARN]: at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1378)
[17:29:54 WARN]: at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
[17:29:54 WARN]: at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
[17:29:54 WARN]: at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
[17:29:54 WARN]: at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
[17:29:54 WARN]: at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
[17:29:54 WARN]: at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
[17:29:54 WARN]: at java.util.ArrayList.writeObject(ArrayList.java:766)
[17:29:54 WARN]: at sun.reflect.GeneratedMethodAccessor41.invoke(Unknown Source)
[17:29:54 WARN]: at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[17:29:54 WARN]: at java.lang.reflect.Method.invoke(Method.java:498)
[17:29:54 WARN]: at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1140)
[17:29:54 WARN]: at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496)
[17:29:54 WARN]: at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
[17:29:54 WARN]: at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
[17:29:54 WARN]: at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
[17:29:54 WARN]: at java.util.ArrayList.writeObject(ArrayList.java:766)
[17:29:54 WARN]: at sun.reflect.GeneratedMethodAccessor41.invoke(Unknown Source)
[17:29:54 WARN]: at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[17:29:54 WARN]: at java.lang.reflect.Method.invoke(Method.java:498)
[17:29:54 WARN]: at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1140)
[17:29:54 WARN]: at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496)
[17:29:54 WARN]: at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
[17:29:54 WARN]: at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
[17:29:54 WARN]: at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
[17:29:54 WARN]: at net.coreprotect.Functions.convertByteData(Functions.java:372)
[17:29:54 WARN]: at net.coreprotect.database.Database.insertContainer(Database.java:281)
[17:29:54 WARN]: at net.coreprotect.database.Logger.container_logger(Logger.java:195)
[17:29:54 WARN]: at net.coreprotect.database.Logger.log_container(Logger.java:361)
[17:29:54 WARN]: at net.coreprotect.consumer.Process.processContainerTransaction(Process.java:324)
[17:29:54 WARN]: at net.coreprotect.consumer.Process.processConsumer(Process.java:153)
[17:29:54 WARN]: at net.coreprotect.consumer.Consumer.run(Consumer.java:124)
[17:29:54 WARN]: at java.lang.Thread.run(Thread.java:748)

Server don't detects plugin

Hi! I will install CoreProtect for the easier rollbacks, and when I try for install, I type the command "/co" didn't works, but it don't say "Unknown command. Try /help for a list of commands" I tried to update my Java version server (PloudOS) but I can't join with java 16, so I go to java 8 and it correctly join. If you can help I will thank you so much, thanks for listening me!

Coreprotect registers #portals placing blocks but not when it deletes them

A player placed a shulkerbox on the end obsidian platform.
Coreprotect deteced that, but it did not log how it got removed by another player coming trough. So no command can possible get it back to a state where it was placed there since there is no entry in the database that removed it that could be undone.
It correctly detected #portal placed obsidian during that but not it should also say #portal placed air or smt for the cube above that gets cleared.

Using CoreProtect v19.5 on paper 1.16.5

1.13 Update

Will this plugin be compatible with Minecraft 1.13? This update removes the whole item id structure. Blocks are defined by a name e.g. red_wool.

Add support for entry annotations, or add mutable pre-log event

Hi,

My server recently switched from LogBlock to CoreProtect. We are finding it to be much more robust and sincerely appreciate the work put into maintaining and improving this plugin.

I have encountered one problem area, namely the lack of ability to "annotate" an entry.

Consider a survival server with a plugin that allows server staff to enter "admin mode" in which moderation tasks (e.g. grief investigation) are completed. This "admin mode" gives the staff member elevated privileges including access to creative mode. In the past I have been able to hook into LogBlock's LogBlockPreLogEvent and mutate the player's name, prepending "adminmode_", which effectively separates their "staff edits" from their "player edits". I'm not finding an easy way to do that with CoreProtect.

I can think of two general solutions. Both involve creating some sort of CoreProtectPreLogEvent.

  1. Allow entries to be annotated with a short string message, i.e. event.annotation = "admin mode", which is then searchable, i.e. /co lookup p:bermudalocket t:1d annotation:"admin mode", or

  2. Allow player names to be mutable, i.e. event.player = "adminmode_" + event.player, /co lookup p:adminmode_bermudalocket t:1d.

[Suggestion] "/co inspect" Command Having Extra Filters

It could be useful to have filters in the inspect mode in the same way as the lookup mode.
An example for such a command could be "/co inspect action:container user:exampleUser". This could allow a moderator to check hoppers which are constantly getting fed items by other hoppers for interactions between it and players without scrolling through hundreds of pages.

Current Version: 20.0

Imported BukkitDev Issues

BukkitDev issues imported from https://dev.bukkit.org/projects/coreprotect/issues

Thanks to falceso and AppleMacOS for helping with the import!

Please feel free to resubmit any issues listed here.


Import logs from Hawkeye/LogBlock database

Any chance you would add a feature to convert from old Hawkeye and LogBlock databases?

https://dev.bukkit.org/projects/coreprotect/issues/34

Bug: Can't rollback stacks of signs

What steps will reproduce the problem?

  1. Get some signs
  2. Place them all on top of each other
  3. Wait a bit
  4. Break the bottom sign
  5. Rollback breaking the sign
    What is the expected output? What do you see instead?
    Expected: All the signs to be as they were before.
    Observed: Only the bottom sign that was broken and the one on top of it are rolled back.
    What version of the product are you using?
    1.52

https://dev.bukkit.org/projects/coreprotect/issues/36

Web Interface For CoreProtect

If a web interface was made for coreprotect it would be much easier to find data.
I had previously used a web interface on with hawkeye and it made it easier for me to track griefers and for my other staff.

https://dev.bukkit.org/projects/coreprotect/issues/87

Creative and Survival logging

When checking a block with the inspector, it should say whether it has been placed by a person in survival mode or creative mode. It would greatly help me check whether my staff are playing by the rules, and I think would help a lot of other servers.

https://dev.bukkit.org/projects/coreprotect/issues/132

Log pumpkin + melon + crop growth

Could CoreProtect provide logging for natural crop growth and melon and pumpkins?

https://dev.bukkit.org/projects/coreprotect/issues/147

Differentiate blocks WE'd in and blocks placed

Differentiate blocks WE'd in and blocks placed.

https://dev.bukkit.org/projects/coreprotect/issues/152

Allow CoreProtect to log Citizens Builder BlockChange Events

As the title says, Have CoreProtect log the block changes/interactions made by the Citizens Builder NPC from the plugin "Builder for Citizens2". CoreProtect currently does not support this as once the Builder/NPC from the plugin places/destroys blocks you are unable to /co inspect any changes. It only returns that there were not any blocks placed/destroyed at the location. It will be very helpful as people will be able to rollback any changes made by the NPC.
Link to the Builder for Citizens 2 Plugin: http://dev.bukkit.org/server-mods/builder-citizens2/

https://dev.bukkit.org/projects/coreprotect/issues/166

Auto Purge

Auto Purge, this would help keep the database from cluttering up.

https://dev.bukkit.org/projects/coreprotect/issues/176

write log file

Could you add a Command like this from LogBlock? So that you export all of the Lookup-Command to a file:
/lb writelogfile
Writes result of query using params specified to a log file located at /plugins/LogBlock/log/*.log where * is replaced with a friendly title. Additionally prints location of file to the user.

https://dev.bukkit.org/projects/coreprotect/issues/189

World Name Change - Lose Logs

If you change the world name, the plugin doesn't associate block changes to that world anymore. Should add a command to 'port' block change data from one world to another.

https://dev.bukkit.org/projects/coreprotect/issues/190

Auto Rollback

My server is pretty big, and i get a lot of players who come on build a little house or grief something then leave. Would it be possible to add a feature to auto rollback players who have been off the server for a while? This would be amazing:D some nice things this auto rollback could have is just maybe a line to ops that tells them who it just rolled back, as well as maybe a max block count it will rollback so people who've changed more then 2k blocks wouldn't get rolled back.

https://dev.bukkit.org/projects/coreprotect/issues/199

Tracking Moving entities

Could you please have logging of carts and movable blocks and spawnable mobs?
This plugin is extremely useful but I would love to be able to log and rollback the creation of mobs(created mobs, snow men and golems/ spawned mobs, with eggs) and carts, perhaps even as an enabled option in the config files.

https://dev.bukkit.org/projects/coreprotect/issues/203

Ability to disable/close/pause CoreProtect (to perform backups)

When a backup is performed (copying files), the coreprotect DB is very often written to During the backup.
The backup of the coreprotect DB file is therefor in a potentially unsusable state.
The idea is to have a "/co disable" command and "/co enable" command that could be run from the console and would stop/pause the coreprotect tracking and save the Database and Close the link to it. This way, I can make a backup. I know that during that time, any actions taken by players would not be tracked (unless stored in a buffer (with a cap so the buffer does not heat up all the RAM) until it's enabled again).
== Please provide any additional information below. ==
You could add a new configuration option to ENABLE The disable/enable commands. By default, those could be disabled. Only those who need them would enable them.

https://dev.bukkit.org/projects/coreprotect/issues/206

Rollback glitch involving item frames near chests.

What steps will reproduce the problem?

  1. Have creeper (explosion) detonate near item frames & chests
  2. Chests are protected by LWC from explosions, item frames not.
  3. Try to rollback the item frames
    What is the expected output? What do you see instead?
    I expected the frames to go back to their proper position. They instead rolled back 90 degrees sideways onto the chests.
    Some of the item frames did not rollback at all.
    What version of the product are you using?
    CoreProtect 2.04
    Do you have an error log of what happened?
    No error log, just an unexpected rollback operation.
    Please provide any additional information below.
    The rollback command used was "/co rollback u:#creeper t:5m" as it had just happened 10 seconds prior.
    Notice from the attached picture how the item frames are on the chests?

https://dev.bukkit.org/projects/coreprotect/issues/208

Import of Flat File to MySQL

There should be some support/ability to easily import a CoreProtect flatfile into a MySQL database.
Please provide any additional information below.
I have tried importing using basic txt importing on Navicat for MySQL, however that doesn't seem to work.

https://dev.bukkit.org/projects/coreprotect/issues/212

co restore u:#global t:12h r:#global won't work

What steps will reproduce the problem?
run the command:
co restore u:#global t:12h r:#global
What is the expected output? What do you see instead?
I expect to restore all server activity in the last 12 hours.
instead I get the message:
CoreProtect - You did not specify a restore radius.
What version of the product are you using?
CoreProtect version 2.05
Do you have an error log of what happened?
yep:

co restore u:#global t:12h r:#global
11:50:15 [INFO] CoreProtect - You did not specify a restore radius.
Please provide any additional information below.
I need to use this for when the server crashes and people's work is undone. I have to instead restore each user.
https://dev.bukkit.org/projects/coreprotect/issues/213

Logging for spawned creepers

Please add this feature in the next update of this plugin! The feature is so if someone spawned a creeper with creeper egg and made the creeper explode a building, we can't see who griefed it cause it will show a creeper exploded it, can you make so we can see who spawned the creeper that exploded it please!!!!
Something like /co l explosion *page

https://dev.bukkit.org/projects/coreprotect/issues/219

TNT and fire

U need to make it so we can detect who blew up TNT! Arrgh!

https://dev.bukkit.org/projects/coreprotect/issues/224

Suggestion for personal rollbacks

Would be cool to see a feature where someone with the right permissions (maybe coreprotect.rollback.mychanges) would be able to rollback/restore their own changes but not anyone elses.
I was thinking of having a perk for one of our donation groups be the ability to rollback changes they have made but would like a way to have it limited to only their changes by default and not allow them any other rollback/restore access.

https://dev.bukkit.org/projects/coreprotect/issues/235

WorldEdit problems

The problem is that it does not rollback signs and chest contents if they were modified by WorldEdit. Can you fix that?

https://dev.bukkit.org/projects/coreprotect/issues/237

Chat and command log filters

After someone abused /nick on my server, I realized that there is no way to filter chat logs/command logs other than by player. It'd be nice to see some options like a command parameter, for example "c:nick" to only see logs for the /nick command, or adding partial words from something for chat, for example if someone says "Hi SN4T14 here, going to shut down the server permanently tomorrow, assholes." I could add a "c:'SN4T14 here' " parameter, so I only see results for that, no matter who said it.

https://dev.bukkit.org/projects/coreprotect/issues/241

Data Size Limit

I think that if it is possible, I would like to see the ability to configure a maximum time to save database entries, or a maximum file size for database.db. I have had my file size cross into several gigabytes in size, and at that point I usually check to make sure everything is in order and then I delete the database and start over. The problem with this is that it costs me the more recent data which I would actually like to have. Along with this, it would be nice if you could configure a maximum number of entries for a single block. For instance, I have doors that have several thousand pages of data, which is really not useful at that point, but the logging of these interactions is still useful, so I don't want to disable it.
It's not critical, the plugin is extremely helpful even without this feature, but if you ever get the time and it is possible, perhaps you would consider this suggestion. Thanks.

https://dev.bukkit.org/projects/coreprotect/issues/247

Rollback all players

With the u: variable, it needs to support all players, not just a specific one. Something like: u:#allplayers - it would rollback all players in the logs with your other parameters. Something that this would be good for is: /co rollback u:#allplayers t:20m r:#world b:7

https://dev.bukkit.org/projects/coreprotect/issues/249

write log file feature

CoreProtect's biggest advantage is also it's biggest weakness. I think it's great that CoreProtect logs so many things. But when I search there are so many results. I know I can filter it but you often don't know what you're looking for until you see it. There have been a few situations where I had to page through 200 pages of CoreProtect results, even after using CoreProtect's filter features.
What I would REALLY like is something similar to Logblock's writelogfile. CoreProtect really needs a way to write history to a file the same way Logblock works. If you need to look through hundreds or thousands of results, as I end up doing with Logblock almost every day, it's a real pain having to /co page 1, /co page 2, /co page 3, /co page 4 ..... Is there any way to get it all written to a file like Logblock? I'm using a commercial server service (Beastnode) so I don't have access to a web interface.
You also need to be able to save to a file so you can document griefing and have a record of it in case it gets contested with mcBans.
It would be good if the name of the file had the command and the date and time (to make it unique). It's important that the world be included.
The contents would be coordinates in the same format that /tppos uses (spaces between numbers), otherwise the same as what is displayed on the screen.

https://dev.bukkit.org/projects/coreprotect/issues/254

Ender Chest Tracking

Please, add Ender Chest tracking.

https://dev.bukkit.org/projects/coreprotect/issues/259

Time Ranges in t: parameter

I often find myself wishing that CoreProtect had a way to add a range of times to its lookups. I would like to see this for many different reasons, the main one being more simplicity when doing lookups. CoreProtect displays lookup results in descending order, so often you find yourself looking through page after page of results that do not pertain to the time period you were looking for. Not only does that cause lots of unneeded pages, but it also causes the server to take more information than that is needed from the database.
It would be helpful for rollbacks to also work with ranges. For example, if a player gets hacked, the hacker destroys his vacation home, and the player doesn't return to his vacation home for several weeks when he discovers his home was griefed. An administrator would then have to rollback all blocks placed/broken by that player along with chest transactions since that period of time many weeks ago, then redo the block placing/destroying for that player from the time immediately after that period of time. This causes LOTS of unneeded rolling back and redoing, something that could just easily be fixed by specifying a range of time to rollback.
The time range parameter would work similarly to the time parameter, with the exception that it has two lengths of time seperated by a "-". For example:
/co rollback t:3d-2d p:x_clucky r:140
The order of the range shouldn't be static and you should be able to specify the range backwards as well, this would make the plugin easier to learn and understand. This would look like so:
/co rollback t:2d-3d p:x_clucky r:140
Thank you for your consideration, and hopefully this feature will be added in the near future, as I could see this helping many server administrators among many servers.
In addition to this, also support:
/co rollback t:-2d p:x_clucky r:140
What this would do is rollback everything by x_clucky in a radius of 140 prior to two days ago.

https://dev.bukkit.org/projects/coreprotect/issues/261

Link leaf decay to the player that destroyed the tree!

How about making leaf decay linked to the player that destroyed the tree. Your able to link tree growth to players. Why not the opposite. Then I wont mind doing global roll backs all the time and not worry about ugly trees.

https://dev.bukkit.org/projects/coreprotect/issues/264

Time interval

I would be fine, if you could see what happened or do the rollback or anything else in time interval. Something like this:
/co rollback r:10 t:2h-1h
From 2 hours ago to 1 hour ago.

https://dev.bukkit.org/projects/coreprotect/issues/269

More accurate logging options

It could really great if it could be set to only log, for example, the breakage or placement of ores or important blocks instead of all of them. (My logs are full of stone break and is really unnecessary (But hundreds of MB are only because of that, the biggest amount of logs).

https://dev.bukkit.org/projects/coreprotect/issues/274

Add perm node to put restrictions on radius limits.

Would like you to add a perm node that would restrict the RADIUS to prevent #global when I dont want staff to do global roll backs.

https://dev.bukkit.org/projects/coreprotect/issues/279

Allow API to rollback worlds

Currently, by command you can do r:#world in /co rollback. However, the API only allows you to specify an int. Instead, the "radius" could be changed to a string and parsed the same way as the command.

https://dev.bukkit.org/projects/coreprotect/issues/281

Specific Purges

Well most logging plugins allow you to use parameters in the purges to allow you to be more specific, say I want to delete all of X players creation logs in the past day,
/co purge p:X t:1d r:#global a:+block
I feel like it's a necessary step for CoreProtect to take as it tends to be a very important command at times and will help many servers.

https://dev.bukkit.org/projects/coreprotect/issues/297

Determining how the block was changed

What is the enhancement in mind? How should it look and feel?:
I was thinking, what if when inspecting a block it showed you how it was changes, such as with world edit, in survival or creative mode, etc. It would be useful in detecting admin abuse and such.

https://dev.bukkit.org/projects/coreprotect/issues/300

Water mechanic bug

The bug involves the new water mechanic that will let the water regenerate even if there is no surface directly under it and that it has four water source blocks surrounding it. I now remove a water block from the surface of a lake and when I do a look up CoreProtect tells me "Player removed #9 (Water)" and then "#Water placed #9 (Water)" like it should. Now the bug takes place when I do a restore of this action. I execute the command "/co restore u:Player t:5m r:10" and now this appears. It is totally logical that CoreProtect removes the water block that the player took but shouldn't it also update the block or the surrounding blocks to refill the spot if all the requirements for the mechanic is filled?
Version of CoreProtect: 2.0.7

https://dev.bukkit.org/projects/coreprotect/issues/302

Rollbacking of mule inventories

The current build if CoreProtect does not support rollbacking of mule inventories as well as horses upon kill and has been causing some trouble on my server and some other ones. I strongly suggest adding support for this as many CoreProtect powered servers have needed to turn off any obtaining method of the pack mule and horses in some cases. Best regards. / SharpMelon

https://dev.bukkit.org/projects/coreprotect/issues/303

Parameter Handling Improvement

What is the enhancement in mind? How should it look and feel?
I would like to suggest that if you specify an incorrect parameter it gives you an error, as some of my staff are doing rollbacks thinking they specified parameters correctly when they didn't.
Example: If you made a typo:
/co lookup usre:notch t:1d r:3
It would alert you with an "Incorrect parameter: usre! "
And also maybe when making a rollback/lookup that it gives you feedback as to what parameters you specified,
So that way you know your parameters were entered correctly!

https://dev.bukkit.org/projects/coreprotect/issues/309

Cancel Command

I believe there should be a /co cancel command, which cancels the current operation. This would be very useful if you messed up syntax, or realized that the operation was too large.

https://dev.bukkit.org/projects/coreprotect/issues/324

VoxelSniper logging

What steps will reproduce the problem?
1.using any part of VoxelSniper

What is the expected output? What do you see instead?
I expect: ' removed '
I see: 'No block data found for this location.'

What version of the product are you using?
2.0.8

Do you have an error log of what happened?
none is created

Please provide any additional information below.
CoreProtect does not log the VoxelSniper plugin at all. If there is a way to display changes made with VoxelSniper it should display that it was changed by someone using VoxelSniper. This is a major fault and an accidental VoxelSniper "discharge" could be devastating because it would have to fixed manually.
I am using VoxelSniper version 5.168.6

https://dev.bukkit.org/projects/coreprotect/issues/327

Remove world logs

World purge feature
Problem
I currently have loaded/unloaded some 15 worlds on my server, and CoreProtect is keeping logs for them that don't mean anything. I would like to be able to remove these records from the MySQL database and save space.

Suggestion
Wondering if you could add a 'purge-world' command to remove all entries that are about a given world.

Additional info
I am currently using CoreProtect v2.0.8, if it matters for this.

https://dev.bukkit.org/projects/coreprotect/issues/328

Z Axix on Rollback not working???

Hi guys, I have a bit of a show stopping problem that I was wondering if anyone else has experienced.

I have a parkour course that is multi-level in height. I have a tall tree that somehow, despite leaf-decay flags in Worldguard, had lost most of its leaves. I used a rollback command thinking to fix the problem and defined a rather small radius to insure that only the top of the tree would be affected. Unfortunately, it appears that while Coreprotect respected the Radius on the X and Y axis it did NOT on the Z axis. Because of this, as I restored the top of the tree everything below was impacted all the way down to the bottom of the world. I then had to start playing with rollback of specific block types to try to work around this apparent bug.

I'm using the latest versions of Spigot if that has any bearing (it shouldn't) and all of my other plugins are up to date. If this is not a 2.0.8 Core Protect bug, can anyone think of a reason why this might happen? It's making it very difficult for me to use Core Protect which is a plugin I happen to love!

https://dev.bukkit.org/projects/coreprotect/issues/331

Automated Rollback

What is the enhancement in mind? How should it look and feel?

Since CoreProtect already logs block breaks and placement via MySQL so effectively and efficiently, would it be possible to add an option in the config or a permission that would prevent players from breaking blocks another player had placed?

In essence, a check, occurring at a logged break, to see if the block was placed by another player. If the block was placed by another player, then automatically roll back the breakage.

I imagine it wouldn't need to query every player name, just check if the block location was logged, and if the player name was /= to the player who placed it.

Please provide any additional information below.

This is by far one of the best, most efficient MySQL plugins I've ever used. We're dealing with hundreds of players and tens of thousands of blocks breaking daily without any noticeable impact on performance. I think adding something like automated rollback support would just further cement CoreProtect's awesomeness.

https://dev.bukkit.org/projects/coreprotect/issues/334

A Permission That Makes a Player "Untrackable" by Other Players

Enhancement Idea
I would like to request a feature which will add a permission to CoreProtect which will enable the user to be "invisible" to block lookups. For example, say an Admin is building a spawn and doesn't want the Moderators to check the blocks to see that that specific admin built or destroyed the spawn. Maybe there could be a permission that the Admin gives themself which will block other users from tracking their block placements and have it just say "No block interactions here". Only the Admin themself can see their own block placements/destroys.

I would really like this feature for my server. Thanks.

https://dev.bukkit.org/projects/coreprotect/issues/338

A Config File Option That Sets A Chance of Successfully Identifying Griefer

Hello, I would like to request an option in a config file that will let you set a chance percentage of how likely a player will be to identify who broke or placed a block or who placed/removed items from a chest.
Also, maybe a permission that you can give to certain people which will let them override the chance, making their chance %100 at all times (as long as they have the permission).

Thanks for listening!

https://dev.bukkit.org/projects/coreprotect/issues/339

Recording All Item transfers

What is the enhancement in mind? How should it look and feel?
I would like to see all items that enter and exit a players inventory record, this is to better integrate with modded severs :)

https://dev.bukkit.org/projects/coreprotect/issues/351

Horse Logging

What is the enhancement in mind? How should it look and feel?

It would be great to be able to check player interactions with horses etc. eg check if a horse was mounted or right clicked on with the inspect tool or lookup horse "actions" in an area similar to the kill action that is currently in lookup.

Please provide any additional information below.

Just an idea as horses seem to be prime targets for theft.

https://dev.bukkit.org/projects/coreprotect/issues/359

Better Decay Logging and Rolling Back

When a player chops down a tree, the leaves will decay due to natural cause. However when we rollback a player who decided to go rampant destroying things all over the place it will rollback the logs of all the trees he has chopped down and not the leaves that decayed from this leaving random pillars of logs all over the forests. I would like that when leaves decay due to a player removing the logs attached that they are logged as a player causing the decay so when trees get mixed in the rollbacks that they are put back to their natural state and not as pillars.

https://dev.bukkit.org/projects/coreprotect/issues/360

Tracking lead usage on fences

When leads are attached or removed from a fence, there are no logs of the interaction.

This would be really convenient because most players tend to leash up their favorite horses, etc. Doesn't need to be capable of a rollback really, I just wish I knew who to punish >.>

https://dev.bukkit.org/projects/coreprotect/issues/362

Translate your plugin to Russian

What does the provided patch do?

Please provide any additional information below.

https://dev.bukkit.org/projects/coreprotect/issues/366

Minimum Time

What is the enhancement in mind? How should it look and feel?

I was hoping that you could implement a Minimum Time before allowing a rollback/restore command to go through.

Please provide any additional information below.

The reason i was wanting this is because people with the proper permissions such as staff have the ability to duplicate items by rolling themselves or a friends items back. Now i know that the argument is don't have staff you don't trust but I don't want to have the possibility of a staff going AWOL for some reason and not be able to duplicate things as easily. ( Such as setting the variable to be only able to rollback/restore things 4 hours after change) I know this is a bit of an odd request but would love to see it as a future feature and i wouldn't think it would be hard to implement an additional check upon rolling/restoring

https://dev.bukkit.org/projects/coreprotect/issues/377

API - Log interaction accept an additional string.

Would it be possible for you to slightly modify Core's API for Logging Interactions to accept an addition string for custom interactions.

I have features in my plugin that I would like logged.

Actually, maybe a hole new method would be better? For plugins to log custom information.

Like you could do CoreProtect.logCustomInfo(String user, String type, String info, Location loc);

If you did this, Core would be the ultimate block logging plugin there is!

https://dev.bukkit.org/projects/coreprotect/issues/378

Log Gamemodes

What is the enhancement in mind? How should it look and feel?
When you log a block or something, can you also log the gamemode the player was in when they placed/destoried the block.
I was thinking maybe the /co inspect, - green for survival, red for creative, or maybe a prefix before the rest of the message.

Please provide any additional information below.

https://dev.bukkit.org/projects/coreprotect/issues/381

cant rollback minecart with chest?

What steps will reproduce the problem?

  1. place a minecart with chest
  2. do /co i to enable
  3. click minecart with chest

What is the expected output? What do you see instead?
logged data is expected but instead the minecart breaks and all the items lay around

What version of the product are you using?
2.0.8

Do you have an error log of what happened?
no error is shown

Please provide any additional information below

https://dev.bukkit.org/projects/coreprotect/issues/383

Command Filter

What is the issue?

Please provide any additional information below.

Hello,

My core is logging commands, but is there a filter like dont filter login, register and changepassword commands.
If yes, this will be the great plugin ever! <3

I am using a web interface, but I don't know how or where I can filter these commands, is it possible to filter them in the plugin it-self?
If no, do you know how I can filter this in the interface?

Very Best Regards,
Daniel

https://dev.bukkit.org/projects/coreprotect/issues/386

More Purge Controll

Is it possible to improve the /co purge command by enabling you to purge between time frames and specific players. I do a lot of worldediting and my database gets huge. The only way I could make it smaller would be deleting it, therefore, deleting other players who were logged. I would like to be able to purge just my building over a certain time frame. (yes I know theres a way to disable worldedit, but I want to be able to roll back if I don't like it.)

EX: /co purge t:1h-1d, /co purge Machinemania3, and /co purge Machinemania3 t:1h-1d

https://dev.bukkit.org/projects/coreprotect/issues/390

Request to Add Chunk Selections

What is the enhancement in mind? How should it look and feel?

I was wondering... Since most protection systems are moving in the direction of chunk-based areas, can you add a feature to rollback the chunk you are in (and/or a specified chunk) as well as the current radius-based rollback?

Please provide any additional information below.

There would be many advantages to this...

1.) Staff would be able to know for sure that a player's changes were rolled back from bedrock up.
2.) Staff would have the ability to rollback a square area, as well as a round one
3.) Protection systems could run rollback commands to undo changes, rather than having to rely on resource-intensive regens that could crash the server or worse... Regens replace ores that have already been mined, which is a big no-no for economy servers.

If you already have this as a feature, what is the command, and can it be run from the console by a plugin (by specifying the chunk) or through the API?

https://dev.bukkit.org/projects/coreprotect/issues/393

File Size of Database

What is the enhancement in mind? How should it look and feel?

Please provide any additional information below.

I had made a ticket in the past about core protect database. Because its growing fast every day, is it possible to contain the coreprotect database in the amount of time i want? for example only 1 month, and the previous days database it will be deleted automatically. That would stabilize the file size of the coreprotect database.
If there is not, please create a custom amount of time of the database in the config file

https://dev.bukkit.org/projects/coreprotect/issues/394

Switching between flatfile and MySQL loses rollback data

What steps will reproduce the problem?

  1. Run CoreProtect with the flatfile SQLite database for awhile.
  2. Switch to using a MySQL database by setting the login options in the config file.
  3. Data recorded in the flatfile is no longer available to roll back to.

What is the expected output? What do you see instead?
CoreProtect should either let you import data between mysql and the flatfile, or it should use both when both are present. Instead, it only uses one or the other, meaning you have to manually switch between MySQL and the flatfile to inspect blocks and rollback griefs depending on how long ago it happened.

What version of the product are you using?
CoreProtect v2.0.9

https://dev.bukkit.org/projects/coreprotect/issues/415

Not Completely Rolling Back Worldedit Doors

What steps will reproduce the problem?
1.I'm Using A Pre-made Map
2.Use Command "/removenear irondoor"
3.Use Command "/co rollback t:1m r:50

What is the expected output? What do you see instead?
I Expected the entire door to be their. Instead only the bottom half was there.

What version of the product are you using?
2.0.9

Do you have an error log of what happened?
No

Please provide any additional information below.
Spigot Bukkit Server

https://dev.bukkit.org/projects/coreprotect/issues/416

Bonemeal doesn't get logged.

What steps will reproduce the problem?
1.Place bonemeal on grass

What is the expected output? What do you see instead?
The expected output is that the blocks placed by the bonemeal will be logged.

What version of the product are you using?
2.0.9

Do you have an error log of what happened?

Please provide any additional information below.
This is really annoying because there's bonemeal all over my world from griefers.

https://dev.bukkit.org/projects/coreprotect/issues/422

Configure auto-purge

It should be possible to configure a "max-age" for logging, ensuring the coreprotect database doesn't "run wild".
Please provide any additional information below.
Add configuration options for specifying:

  • max-age
  • purge-interval (possibly a cron exp).
    Possibly on a per-world basis.
    And simply execute /co purge at the fixed intervals.
    Currently the coreprotect logging will create quite large databases - if this config option isn't implemented.

https://dev.bukkit.org/projects/coreprotect/issues/423

Log spawning of entities

Imperfection! :D
What steps will reproduce the problem?

  1. Find a mob in your creative world
  2. Notice it's named something offensive
  3. Try to figure out who spawned it.
    What is the expected output? What do you see instead?
    That I somehow can get the spawning information from CoreProtect.
    What version of the product are you using?
    v2.0.9
    Do you have an error log of what happened?
    N/A
    Please provide any additional information below.
    Please provide a way to see who spawns what where.

https://dev.bukkit.org/projects/coreprotect/issues/424

Improvements to /CO Purge

My biggest issue with this plugin is that the database gets really huge real fast. And I know there is the purge command. But it undermines the reason of the plugin.
Think of it like this. Some one builds a house, 3 months later he's still active and playing using the same house, then I start to purge data older than 30 days. The data that showed he placed it is gone. Now if some one griefs him we have no idea who's it really is.
I think should be able to decide what to purge. Like purge all of a specific type of log. Like chat history, or command history, or clear certain players out. We would like to keep the recent players info in there while they are here.

https://dev.bukkit.org/projects/coreprotect/issues/440

Database autopurge

What steps will reproduce the problem?
A database 9GB
Unable to set autopurge
What is the expected output? What do you see instead?
Without a system of self-purging this plugin becomes a monster when about 4/5 months been working on a server. It is impossible to maintain for long periods of time as this may become a huge database
What version of the product are you using?
v2.10.0
Do you have an error log of what happened?
Yes, get errors all plugins that need to store data,(There is not enough space on the disk)
Please provide any additional information below.
Other plugin's such Authme, have the ability to delete old data that can not be cumulative and come to monstrous sizes.
You can set eg always save data from 2 previous months but everything is later to be erased.
I think this is what is lacking in your plugin and would be great to facilitarais any way to do it.
thank you for your attention

https://dev.bukkit.org/projects/coreprotect/issues/461

Track creative spawned blocks

I think it would be great if CoreProtect would log blocks that were spawned in through creative so that server owners can track these blocks.

https://dev.bukkit.org/projects/coreprotect/issues/475

Listener API

Add to the API a listener class so other plugins can listen when CoreProtect preforms an action like a rollback for instance.

https://dev.bukkit.org/projects/coreprotect/issues/479

Custom events for the actions

Could you add custom events to each individual log action so that we could use it in the API to cancel logging for specific things. Like me and my co-owner have our own personal chat command it Core logs it despite the event being canceled and being handled manually.

https://dev.bukkit.org/projects/coreprotect/issues/497

Add ability to filter results so only rolled back items show

Would love the ability to filter the results to only show rolled back items. There has been many times when I am going over a ban appeal and trying to find what was the cause of their ban by looking for what ever was rolled back.
And also an option to clear logs of certain players in a certain radius and certain time to free up the size of the database. The purge command is just so limited we just dont use it.

https://dev.bukkit.org/projects/coreprotect/issues/508

Add support for sharing DB between multiple servers

CoreProtect should support sharing MySQL databases between multiple servers.
Currently, if multiple servers attempt to share the same database, the co_material_map table ends up being corrupted.

https://dev.bukkit.org/projects/coreprotect/issues/511

Economy logs

Add logging for any economy related plugins and transactions like essentials, vault, etc........... I dont like the one essentials provides, its unorganized.

https://dev.bukkit.org/projects/coreprotect/issues/514

/Co inspect on a tool

Can u add an item into the config that will be used as a replacement tool for /co inspect? I dont like to toggle /co inspect all the time and it tends to get kinda annoying... LogBlock has this feature with bedrock, i wish it can be added here :D

https://dev.bukkit.org/projects/coreprotect/issues/515

Minecart rails broken after rollback/restore

What steps will reproduce the problem?

  1. Create a 4 rail circle of minecart rails
  2. Rollback this area
  3. Restore this area
    What is the expected output? What do you see instead?
    I expected the rails to be in the same shape they were in before the rollback, but instead two of the rails form a straight line instead of connecting with the other rails.
    What version of the product are you using?
    CraftBukkit version git-Spigot-0359393-9cd1111 (MC: 1.8.8) (Implementing API version 1.8.8-R0.1-SNAPSHOT)

https://dev.bukkit.org/projects/coreprotect/issues/516

Index by Keywords (Chat & Commands)

I would like to suggest a feature where staff members can look up small phrases in chat and command logs. My proposed syntax would be an additional, but optional, argument, f. The staff member can use the f argument to provide any filters to look for, such as; f:"this server sux","i am a certified quantum physicist" Hell, you could just go wild and allow filters to be regular expressions. That'd encourage people to learn it!

I feel like this kind of feature would greatly help in moderation and discerning who said what.

https://dev.bukkit.org/projects/coreprotect/issues/522

Purge parameters

It may be helpful, if instead of purging all data over a period of time, to purge certain data, like all stone, dirt or netherack removed over a period of time. I assume that these would take up a lot of data in the database, and wouldn't need to be kept. If we could pass parameters to remove only certain data, it would help keep our database stay small, and keep information we felt was important.
Just a thought :)

https://dev.bukkit.org/projects/coreprotect/issues/528

Suggestion - Log Options

When reviewing griefer activities over a 2 hour period, there were 54 pages of stuff I had to go through.
So, instead of having to type /co l 1 ... /co l 2 ... / col 54 (54 times) :-) It would make things so much easier if I could either:
a) save the results in an output file where I can just go local operating system file explorer and open the file in notepad or something
b) e-mail myself all the results

https://dev.bukkit.org/projects/coreprotect/issues/546

Inspecter on tool

I belive there should be a tool that the command /co inspect is assigned to. It would be better than having the inspecter tool assigned to every item ingame.

https://dev.bukkit.org/projects/coreprotect/issues/548

Players Merge

What is the enhancement in mind? How should it look and feel? I would like a new feature with which you can make a player only appear once in records. For example, say a server doesn't allow automatic cactus farming, and on a regular basis I do /co l a:+block b:cactus t:48h. I'd like multiple records for one player merged down to just one record. It saves the painstaking process of going through the process of checking each page, on by one.
Please provide any additional information below. Here is an example:
Without this feature:
---- Coreprotect lookup results ----
2h ago abc123 placed cactus
2h ago abc123 placed cactus
2h ago abc123 placed cactus
2h ago abc123 placed cactus
2h ago abc123 placed cactus
Page 1/500
With this feature:
---- Coreprotect lookup results ----
2h ago abc123 placed cactus
4h ago def456 placed cactus
6h ago ghi789 placed cactus
8h ago jkl000 placed cactus
10h ago mnopqr placed cactus
Page 1/5
Can you think of the pleasure of just going through 5 pages, which only takes 10 seconds, than going through those five hundred pages, one by one by one. It will make an admin's life far easier!

https://dev.bukkit.org/projects/coreprotect/issues/549

Per user purge - Suggestion

/co purge u:name r:
This would give the option to clear out garbage in the database of users which you have already banned and made a rollback on.

https://dev.bukkit.org/projects/coreprotect/issues/551

ArmorStand hand slots not tracked

Give an ArmorStand arms using the command "/entitydata @e[type=ArmorStand] {ShowArms:1b}"
Place an item in either hand of previously edited ArmorStand.
Take item from ArmorStand
Do a lookup on the ArmorStand
Should see that took from ArmorStand

https://dev.bukkit.org/projects/coreprotect/issues/746

Voxel Sniper Support

Voxel Sniper is a popular terraforming plugin, I have seen in other places the problem that if a block is changed with it, it will not be logged. This problem leads many including me to limit use of the plugin extremely.

https://dev.bukkit.org/projects/coreprotect/issues/748

Armorstand: See Enchantments / Color value

When you have armor on an armorstand and people steal it, you can see the colorcode with /co i (for custom colored armor without dyes) and see the enchantments.

https://dev.bukkit.org/projects/coreprotect/issues/752

Add player rollback for inventory

What is the enhancement in mind? How should it look and feel?
Please provide any additional information below.
He is it possible to add an player inventory track so if something happen to player I can rollback players inventory to previews?

https://dev.bukkit.org/projects/coreprotect/issues/771

Add nametag tracking

This is a formal feature request.

I have had users use a nametag on a mob and then later have that mob griefed. Finding the right location and radius to check who killed what mob type is a bit inconvenient. It would be nice to be able to just do a search based on the name of the nametag. Something like:

/co nametag
/co nt

e.g. /co nametag Bob

would then return a list of mobs who are named Bob, their locations, and who last interacted with them.

It would make sense to also have an option to only check for those which are now dead and what killed them.

/co nametag [dead]
/co nt [d]

Thank you for all your great work.

https://dev.bukkit.org/projects/coreprotect/issues/785

Do you plan a port on Sponge?

As title says. A lot of plugins have been ported but seems like are missing the most important ones.

https://dev.bukkit.org/projects/coreprotect/issues/788

Inaccurate logging on Item Frames

Item frames don't seem to log correctly.

When hanging a frame, it does log 'placed item_frame'. When putting something INTO an item frame, it logs a removal, then place of an item frame.
When removing something FROM an item frame, it just logs 'removed item_frame'.

This is with all default settings on v2.14.2.

https://dev.bukkit.org/projects/coreprotect/issues/793

Log creeper explosion target

I've been using CoreProtect for years, and the one thing I've always been disappointed about, the one thing I always wished was logged was the target of the creeper which blew up the blocks.
Currently players can get away with grief unnoticed just by having creepers do all their dirty work. Blowing up beacons, creating trenches around bases, destroying anything and everything they can.
It's absolutely infuriating.
And CoreProtect is useless because of that one little piece of data it doesn't log about the creeper explosion. Who the creeper was targeting.
While you're at it, the mob ID would also be appreciated, so one can tell how many creepers were involved in the blowing up of a place. (Makes it more obvious if it was intentional)

https://dev.bukkit.org/projects/coreprotect/issues/794

CoreProtect radius "r:#global" doesn't work!

Hello there,

I was trying to do a global rollback "/co t:10m r:#global" but that gives me an error,
it says that the radius is invalid but when I try to go over a radius of 100 it tells me to use "r:#global".

You should probably check the argument String for "if (radius.startsWith("#")) " that should solve the problem :)

https://dev.bukkit.org/projects/coreprotect/issues/796

Inventory Rollback?

I think it would be a cool idea to have a feature such as rollback u: a:death so that you can rollback someones inventory

https://dev.bukkit.org/projects/coreprotect/issues/798

Donkey Mule container not logging.

For some reason coreprotect doesn't log container interactions to donkeys and mules. Support for this is needed.

https://dev.bukkit.org/projects/coreprotect/issues/816

coreprotect.inspect.own to inspect only blocks placed by owner

I'd like to give the inspect command to users to check for steals or griefs on their own but I'd like to prevent exploits so I guess the only way to do so is to add a .own permission in order to let them see only logs about blocks placed by them. What do you think?

https://dev.bukkit.org/projects/coreprotect/issues/818

Improving Upon Command Lookup

In this plugin, there's the useful feature of looking up a command, and I feel that it could be expanded upon to be able to have a function to narrow it down to improve upon time spent looking for that one measly command that you just can't seem to find because you're staring at about 100 pages worth of commands.

My proposal is something as simple as (c:<command/command alias>) (Oh hey, would you look at that. It's a lil ol' smiley face c:)
If combined with a specific user, it'll show the command specified and when the user executed it, if there's no user provided, it'll show everyone who used the command.

Perhaps if you've made a global server mistake, or if there's just a command you want to monitor the usage of, this would be very much useful.
Example:
/co l u:I_Am_The_Diamond a:command c:ban,eban,mbban
17.20/h ago - I_Am_The_Diamond : /ban FilthyNingen KISAMA
29.04/h ago - I_Am_The_Diamond : /ban BejitaSama SUBARASHII

/co l a:command c:meep
1.02/h ago - Sp3ccy : /meep
2.01/h ago - J3RKP4UL : /meep everyday bro
4.12/h ago - SmartGardenGnome: /meep into the news

https://dev.bukkit.org/projects/coreprotect/issues/822

Add support for Fast Async WorldEdit (FAWE)

Hi, Not only I want to know this, I suppose also others that use the plugin, so that's why I ask, in a future update can support the Fast Async WorldEdit plugin (FAWE) please? If I did I would be grateful, and not only I, but also many other users

Link: https://www.spigotmc.org/resources/fast-async-worldedit-voxelsniper.13932/

https://dev.bukkit.org/projects/coreprotect/issues/824

Purge Parameters

Purge needs the ability to specify optional parameters. e.g. /co purge u:ssshhhhh t:4w a:chat or even /co purge a:+block t:8w. This will be a great enhancement to coreprotect and will be very useful.

https://dev.bukkit.org/projects/coreprotect/issues/830

Missing (important?) logging features.

We have been using LogBlock for the past 6 years, but recently have been getting bad MySQL errors so have decided to change to Core Protect.
Done a lot of heavy testing last night, and the only two things It doesn't seem to log (from what we could tell) was:

  • Damage done by Wither Bosses
  • Items taken out of a Mule/Donkey or off a Llama.

In addition to this, is there -any way- of importing data from LogBlock? I know it probably could be done with a very, very long query, but It's strange how a plugin as advanced as CoreProtect doens't have something as necessary as a feature to move LogBlock Data -> Core Protect?

Cheers! :)

https://dev.bukkit.org/projects/coreprotect/issues/831

Configuration option for which blocks the inspection wand can activate while active

Would be useful for redstone servers in particular, which prefer creations to not be activated when using CoreProtect to see who spammed them.

https://dev.bukkit.org/projects/coreprotect/issues/853

API: Make logCommand() and logChat() not require Player interface

Would it be possible to require just String user for chat and command logging like how everything else works?

Or maybe even UUID user... There are times when I want to log the chat while an offline player chats with server players through a plugin. I've been going around this requirement by using a dummy Player class with all required fields implemented to make CoreProtect log chat and commands.

Thank you!

https://dev.bukkit.org/projects/coreprotect/issues/854

Death by fire tick.

Animals killed by fire ticks from fire aspect swords are logged as #fire and not the player that actually killed the animal.

Haven't tested this, but is fair to assume it's probably the same with bow flame too.

https://dev.bukkit.org/projects/coreprotect/issues/855

Duplication of items on specific rollbacks.

I've tagged this as a defect and an enhancment as I believe this should be basic funcitonality of a rollback, and i'm unsure whether or not it's deliberatly left out.

When player1 steals from player2's chest(s), upon rolling back player1's actions yes, the items are returned to the chest(s), but they're also still in player1's inventory (or wherever they stored them the stolen items). This causes duplication of the items and doesn't actually solve the grief.

https://dev.bukkit.org/projects/coreprotect/issues/858

Logging of Pressure plates.

Add logging to pressure plates similar to how buttons and levers work. Currently, you can see who placed/remove pressure plates, but cannot see who triggered them.

https://dev.bukkit.org/projects/coreprotect/issues/860

Additional command - lookup results

This was a feature in a previous logging plugin I was using, and it's one of the few features that CoreProtect doesn't offer that it did, and it's very handy and vital to have.

/co sum [n<one>|b<locks>|p<layers>]

To sum up the result of a search, none means all single block changes are listed, block means to group by block types and players to group by players.

https://dev.bukkit.org/projects/coreprotect/issues/861

Configurable time for inspect tool

It would be great for staff (or even just a node in the config) if the /co i tool had a timeout, so after 'x' amount of time it would turn off and you'd just have to enable it again.

Cheers

https://dev.bukkit.org/projects/coreprotect/issues/862

Jukebox interaction is not logged

Jukebox interaction (play disc and remove disc)is not logged,also beacon effect change,minecart hopper and minecart chest item change, chorus fruit growth,armor stand interaction

https://dev.bukkit.org/projects/coreprotect/issues/864

Nether portal spawn due to no portal nearby is not logged

Nether portal spawn due to no portal nearby is not logged

https://dev.bukkit.org/projects/coreprotect/issues/866

block blacklist

Machine translation, please forgive.

If I want to stop logging a block,Such as 'stone'.what should I do?

https://dev.bukkit.org/projects/coreprotect/issues/886

Item frames and map not rollback/restoring properly in 1.15.1

When I try to restore map, they do not restore with the proper map ID. When restoring item frames (on the ground), they don't get rolled back unless the item frame is attached to the western wall.

https://dev.bukkit.org/projects/coreprotect/issues/888

Feature Suggestions [Tiippex]

Right now (2.15.1) I have only a few things I would like ;D

  • /co l a:command="/kick Tiippex" //looking for specified commands
  • logging for placing spawneggs
  • logging for hitting an entitiy //not killing
  • rollback does not rollback itemframes (entities) correctly. e.g. the direction and the items in the frame lose the nbt data
  • something like command wich gets executed when clicking on the coordinates e.g. /tppos x y z...
  • execlude:Tiippex works but I would like to execute more then one player like execlude:Tiippex,Tiippex2,block_break,.....

https://dev.bukkit.org/projects/coreprotect/issues/915

The movement of falling blocks created by Worldedit does not get logged

To reproduce, make a Worldedit selection in the air, and set it as sand.

Inspection mode shows it logs me as placing it in the air, but it does not log the result of it dropping(No block data found at sand), even though I have block-movement: true in my config. It does, however, log where it was originally placed.

When I normally place it in the air, it shows the block(After having fallen) was placed by me.

I'm using Worldedit version 7.0.0-beta-05, and Coreprotect version 2.16.1.

No error log is produced, and Coreprotect says integration is enabled for worldedit when I do /co status.

https://dev.bukkit.org/projects/coreprotect/issues/916

[Suggestion] Log "target player" from creeper when it explodes

I already had problems on my server because CoreProtect does not save the "target player" from creeper when it exploded (or who ignited it with flint and steel).
My suggestion is log the "target player" from a creeper (or who ignited it) when it explodes, on the affected blocks.
When i say "target player" i mean like who it was pathfinding to when it exploded.

https://dev.bukkit.org/projects/coreprotect/issues/926

[Tau - SpigotMC] Feature Suggestions

Suggestion:

/co lookup <user> action:(chat | command | kill) regex:"<My regex filter>"
For better filtering for specific chat messages, for the kill filter, it would regex the mobs customname, if none, the mobs name.

/co lookup <user> time:10h20h
Max and Min time (to find specific entries)

/co lookup action:container item:<specific item> regex:<Regex for custom name/lore>
...

But i think the best possible feature would be just a "next page" and "previous page" button on the
/co l
as well as being able to click coords and it enters the tp command in chat for you, That would be a huge time saver.

https://dev.bukkit.org/projects/coreprotect/issues/933

Core Protect 1.8 Feature request - Custom Spawner Types

Basically, I was wondering if you could add support for more than just the vanilla spawners? On my factions server players have irongolem spawners, witches, etc. And sometimes I need to rollback their base and it turns them into the default spawner(pig) unless its a blaze spawner.

https://dev.bukkit.org/projects/coreprotect/issues/938

Suport Sponge?

Good, I wanted to ask, if you thought about putting this mod also for Sponge?
Because the truth is a very good mod and I did not find another one.

Thank you.

https://dev.bukkit.org/projects/coreprotect/issues/955

Command doesn't work with @p and @A

Hi, Just wondering if my issue is intentional or not,
I am currently trying to set up a 'hardcore' server for some friends that will use CoreProtect to rollback users upon Death, I have attempted to use command blocks and the ingame scoreboard along with the following commands(or similar),

  • /coreprotect:co rollback @p time:9w radius:#global

  • /coreprotect:co rollback @A[score_DEATHS_min=1] time:9w radius:#global

However it seems that while rollback is working is not doing it for the near player or the player that matches the criteria,
I know this is a very specific Issue But i figured id ask nonetheless.

https://dev.bukkit.org/projects/coreprotect/issues/956

api perform inventory rollbacks

Currently while utilising the api method "performRollback" player and world inventories are not rolled back.
it would be useful to have this option if at all possible.

https://dev.bukkit.org/projects/coreprotect/issues/961

Creeper bombings

Could you please consider adding a way to detect who creepers where trying to blow up when they detonate? A common problem on my server that relies on this plugin is players leading a creeper to a building they want to grief :/

Co Inspect reveals nothing due to the nature of the explosion aside from that a creeper was responsible.

https://dev.bukkit.org/projects/coreprotect/issues/969

Permissions for radius

There should be a permission to avoid staff doing rollback with r:#global or r:#world ecc. for security reasons.

https://dev.bukkit.org/projects/coreprotect/issues/971

Lookup output to a file

I k ow this isn't an issue, so apologies for submitting it as an issue, I couldn't find a place for suggestions....

Would it be possible that in a future release, when the lookup command is used, it could have an option to output the log to a file stored in the config folders? It would make our lives as administrators a lot easier when we have to deal with multiple pages of logs in game.

https://dev.bukkit.org/projects/coreprotect/issues/972

Log who brought Bad Omen and starated raid

It can be useful to know who brought Bad Omen.
An action like "started raid" or smth.

https://dev.bukkit.org/projects/coreprotect/issues/983

Rollback block modifications made with vanilla Minecraft commands. (/setblock /fill...etc)

CoreProtect is a fairly extensive plugin, with the ability to log block editing via even other plugins like WorldEdit.

I was surprised to find that no rollback type would affect blocks set with commands like /setblock, or /fill.

While not nearly as popular of a feature to use for construction or anti-construction, I think it would be a neat addition to append to the list of logged actions.

https://dev.bukkit.org/projects/coreprotect/issues/1012

Chat messages won't be recorded if contains emoji.

(Sorry for my poor English)
Thanks for reading the ticket.
I use a MySQL database(utf8mb4) to store CoreProtect data.
If I send a message that contains emoji, I can only get a stacktrace on console.
The message can't be stored in the table.
All info is in the images below.

Error Log:
[11:34:13 WARN]: java.sql.BatchUpdateException: Data truncation: Incorrect string value: '\xF0\x9F\x90\x8D' for column survival1_main1_coreprotect.chat.message at row 1
[11:34:13 WARN]: at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
[11:34:13 WARN]: at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
[11:34:13 WARN]: at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
[11:34:13 WARN]: at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
[11:34:13 WARN]: at com.mysql.jdbc.Util.handleNewInstance(Util.java:403)
[11:34:13 WARN]: at com.mysql.jdbc.Util.getInstance(Util.java:386)
[11:34:13 WARN]: at com.mysql.jdbc.SQLError.createBatchUpdateException(SQLError.java:1154)
[11:34:13 WARN]: at com.mysql.jdbc.PreparedStatement.executeBatchedInserts(PreparedStatement.java:1644)
[11:34:13 WARN]: at com.mysql.jdbc.PreparedStatement.executeBatchInternal(PreparedStatement.java:1310)
[11:34:13 WARN]: at com.mysql.jdbc.StatementImpl.executeBatch(StatementImpl.java:954)
[11:34:13 WARN]: at net.coreprotect.consumer.process.Process.processConsumer(Process.java:267)
[11:34:13 WARN]: at net.coreprotect.consumer.Consumer.run(Consumer.java:132)
[11:34:13 WARN]: at java.lang.Thread.run(Thread.java:821)
[11:34:13 WARN]: Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect string value: '\xF0\x9F\x90\x8D' for column survival1_main1_coreprotect.chat.message at row 1
[11:34:13 WARN]: at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3931)
[11:34:13 WARN]: at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3869)
[11:34:13 WARN]: at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2524)
[11:34:13 WARN]: at com.mysql.jdbc.ServerPreparedStatement.serverExecute(ServerPreparedStatement.java:1281)
[11:34:13 WARN]: at com.mysql.jdbc.ServerPreparedStatement.executeInternal(ServerPreparedStatement.java:787)
[11:34:13 WARN]: at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2136)
[11:34:13 WARN]: at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2070)
[11:34:13 WARN]: at com.mysql.jdbc.PreparedStatement.executeLargeUpdate(PreparedStatement.java:5187)
[11:34:13 WARN]: at com.mysql.jdbc.PreparedStatement.executeBatchedInserts(PreparedStatement.java:1605)
[11:34:13 WARN]: ... 5 more





https://dev.bukkit.org/projects/coreprotect/issues/1015

Maps do not get rolled back correctly

When rolling back a map using a simple /co rollback command, the map that gets rolled back is in the same position of the original map but if the scale is let's say 1:1 and the level is 0/4, it changes to 1:8 and a level of 3/4.

https://dev.bukkit.org/projects/coreprotect/issues/1016

FAWE 1.16 not logged by coreprotect

Fast Async World Edit on version 1.16 is not logged by WorldEdit.
Steps to reproduce:
Use fawe.
Check block history or attempt rollback.

https://dev.bukkit.org/projects/coreprotect/issues/1018

Search for user who died in kill action

Currently, I don't know/there isn't a way to search for a user who died when looking up action:kill. It would be very useful to be able to do this, maybe in the block: parameter.

https://dev.bukkit.org/projects/coreprotect/issues/1019

Blocks falling on/through e.g. torches are not handled properly

Even with block-movement: true, falling blocks are erroneously logged as having been placed right above blocks they fall through (if nothing below) or are broken by (if something below).

To reproduce: Place dirt at y=1, torch at y=2 and gravel at y=4. Gravel will be logged as having been placed at y=3, but actually it is broken by the torch. Similarly, wall torches with air below them will make CP log gravel as placed above them.

There are a lot of different blocks that can destroy falling blocks and/or let the falling blocks pass through. Lecterns will for example only destroy gravel placed 2 blocks above them. Tall grass and grass, however, are simply destroyed, but the gravel is nonetheless logged as having been placed on top.

Runnig git-Spigot-57bbdd8-4ef13f9 (MC: 1.16.3) (Implementing API version 1.16.3-R0.1-SNAPSHOT) with CoreProtect v19.2. Using MySQL (Initial DB: 18.2)

https://dev.bukkit.org/projects/coreprotect/issues/1021

Blocks attached to stacks of falling blocks not handled

If a block falls because a user destroys a block below it, any blocks attached to the north, south, east or west faces are not logged as having been broken.

To reproduce: 1) make a stack of e.g. gravel blocks more than one block high and place torches on any gravel block (on the side or on top) that is not the gravel block you break in the next step. 2) break a gravel block not at the top. The attached blocks (excluding gravel directly above the block you broke) will not be logged as having been broken.

This can potentially go wild if you place a torch with a gravel on it and then place torches on the sides of that gravel. Placing gravel on top of those four torches allows you to place more torches with gravel on top, etc. Some maximum search range for attached blocks might help.

Runnig git-Spigot-57bbdd8-4ef13f9 (MC: 1.16.3) (Implementing API version 1.16.3-R0.1-SNAPSHOT) with CoreProtect v19.2. Using MySQL (Initial DB: 18.2)

https://dev.bukkit.org/projects/coreprotect/issues/1022

action:kill by target

I needed to look up specific entity kills such as "playername killed #hoglin".
I have no idea what the "playername" would be, there are A LOT of unique players joined in.
After I found out there was no way to filter by kill targets, I thought it would be way better to have them.
Please consider adding this feature, thank you.

https://dev.bukkit.org/projects/coreprotect/issues/1026

API support for custom entries.

The ability to log and search custom actions within the API. This would allow plugin developers to log things such as custom item creations (Brewery) or log other vanilla interactions that everyone might not want.

https://dev.bukkit.org/projects/coreprotect/issues/1031

Inspect does not cancel events for door interactions

Being in /co inspect does not stop you from opening doors, fence gates, etc. This is particularly tricky when in vanish and trying to check a door or similar when there is a nearby player. I don't know if this is intended functionality, if so, could you put it under a config option?

https://dev.bukkit.org/projects/coreprotect/issues/1032

Feature Request

Request to have a lookup for specific commands.
i.e. /co l user:FuzzNuggettt action:command command:pay

So people can see all uses of FuzzNuggettt's /pay command logs.

https://dev.bukkit.org/projects/coreprotect/issues/1033

Bungee Commands aren't logged

Any command handled by BungeeCord is never sent to the individual server, and thus never logged by CoreProtect. Could you possibly develop a BungeeCord side plugin that would log these commands?

https://dev.bukkit.org/projects/coreprotect/issues/1037

Color codes preventing proper logging

Since updating to 19.4, CoreProtect has stopped logging the placement and breakage of shulkers that contain items with color codes in their lores and names. This did not occur on 19.3 or any previous version I have used in the last 4 years. It seems that just 5 lored items, such as the one below, in a shulker are enough for the plugin to not log the shulker.

To clarify, this only happens when you place the shulker. It will log properly when stored inside a chest.

Error: java.sql.BatchUpdateException: Data truncation: Data too long for column 'meta' at row 2 (Process.java:308) (v19.4)

https://dev.bukkit.org/projects/coreprotect/issues/1038

Item Frames Rollbacks/Inspect

When removing or placing an item in an item frame, in /co inspect it logs as a break then a place of the itemframe, it does not tell you the actual item added/removed.

When doing a rollback, it completely strips all lore, name, durability, and enchantments from the item in the itemframe.

https://dev.bukkit.org/projects/coreprotect/issues/1039

Migrate from SQLite to MySQL

Is there a way to migrate from the SQLite File to MySQL?
I tried several programs but it didn't worked. I thought i finnaly got it working, but the locations are completely wrong. It says for example i mined sand in the air over an ocean but i never was at this place before and there is no way that there was sand. And if i do inspect sometimes it says NULL.
Could you add something that i can migrate it directly with this plugin?

https://dev.bukkit.org/projects/coreprotect/issues/1061

/co lookup action:command [command]

Is it possible to search not "what command use this guy" but search "who use this command?"
Like "Who use /money set" or smth like this

https://dev.bukkit.org/projects/coreprotect/issues/1062

Armorstand Interactions

It isn't logging Armorstand interactions. Therefore it is impossible to rollback basic Minecraft method of stealing.

How to check the removal of an item from the chest using the API?

Hi, I need to somehow use the API to check when a certain player takes someone else's items from the chests. How to do it? I have read the documentation but still haven't figured it out. I figured out only how to check for broken blocks, but not removing items from chests.

Donkey Chest

Chests on donkeys and llamas are not logged as container interactions. Therefore if an item is put into the entities container it is impossible to rollback or locate.

Make co purge availabe for less than 30 days

"You can only purge data older than 30 days".
In our case this produces way too much data and we need to purge every 14 days at latest.
Do you think you can add an option for that? I see no reason why not make this configurable to less than 30 days.

What is the problem, tell me?

[06:03:33 ERROR]: Error occurred while enabling CoreProtect v19.5 (Is it up to date?)
java.lang.UnsatisfiedLinkError: Can't load library: /usr/lib/jvm/java-16-openjdk-amd64/lib/libawt_xawt.so
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:2387) ~[?:?]
at java.lang.Runtime.load0(Runtime.java:746) ~[?:?]
at java.lang.System.load(System.java:1857) ~[?:?]
at jdk.internal.loader.NativeLibraries.load(Native Method) ~[?:?]
at jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(NativeLibraries.java:383) ~[?:?]
at jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:227) ~[?:?]
at jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:169) ~[?:?]
at jdk.internal.loader.NativeLibraries.findFromPaths(NativeLibraries.java:310) ~[?:?]
at jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:280) ~[?:?]
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:2392) ~[?:?]
at java.lang.Runtime.loadLibrary0(Runtime.java:808) ~[?:?]
at java.lang.System.loadLibrary(System.java:1893) ~[?:?]
at java.awt.Toolkit$2.run(Toolkit.java:1389) ~[?:?]
at java.awt.Toolkit$2.run(Toolkit.java:1387) ~[?:?]
at java.security.AccessController.doPrivileged(AccessController.java:312) ~[?:?]
at java.awt.Toolkit.loadLibraries(Toolkit.java:1386) ~[?:?]
at java.awt.Toolkit.(Toolkit.java:1419) ~[?:?]
at java.awt.Color.(Color.java:275) ~[?:?]
at net.md_5.bungee.api.ChatColor.(ChatColor.java:39) ~[patched_1.17.jar:git-Paper-79]
at net.coreprotect.bukkit.Bukkit_v1_16.(Bukkit_v1_16.java:29) ~[?:?]
at net.coreprotect.bukkit.BukkitAdapter.loadAdapter(BukkitAdapter.java:39) ~[?:?]
at net.coreprotect.config.ConfigHandler.performInitialization(ConfigHandler.java:362) ~[?:?]
at net.coreprotect.CoreProtect.onEnable(CoreProtect.java:72) ~[?:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:263) ~[patched_1.17.jar:git-Paper-79]
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:370) ~[patched_1.17.jar:git-Paper-79]
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:500) ~[patched_1.17.jar:git-Paper-79]
at org.bukkit.craftbukkit.v1_17_R1.CraftServer.enablePlugin(CraftServer.java:518) ~[patched_1.17.jar:git-Paper-79]
at org.bukkit.craftbukkit.v1_17_R1.CraftServer.enablePlugins(CraftServer.java:432) ~[patched_1.17.jar:git-Paper-79]
at net.minecraft.server.MinecraftServer.loadWorld(MinecraftServer.java:643) ~[patched_1.17.jar:git-Paper-79]
at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:304) ~[patched_1.17.jar:git-Paper-79]
at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1118) ~[patched_1.17.jar:git-Paper-79]
at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:320) ~[patched_1.17.jar:git-Paper-79]
at java.lang.Thread.run(Thread.java:831) [?:?]

Skull rollbacks

Skulls aren't logged with skullowner attribute. Therefore, rolling back with the plugin yields a steve head.

Command /co 1 <page> not working

Whenever I try to run the paging command, I get the error "Command /co 1 not found" even though this is listed as the log pagination command.
grafik

[Suggestion] log spawning of entities

As stated in the issue #26, I’m resubmitting a suggestion that was originally on BukkitDev. My suggestion is based on the following BukkitDev issues :

  • Tracking Moving entities
  • Logging for spawned creepers
  • Log spawning of entities
  • Feature Suggestions [Tiippex] (part of this one)

The suggestion is to be able to log the spawn of a mob. The plugin could try to figure out which player spawned the entity, or if it’s a natural / command triggered spawn.

Why?
I have regular complains on my server involving blocs infested with silverfish, in a location where there is no naturally infested block around. We are trying to find if someone tried to spawn silverfish around the player’s building, but the CoreProtect doesn’t seems to log that information.

[Request] Translate fix and reprint authorization

Hi,
First of all, thanks for open source!
I noticed that Simplified Chinese translate has some problems, so I made a PR to fix. Hope that the author agreed to merge.
In addition, can I reprint CoreProtect to MCBBS(A Minecraft forum in China, which can also release original or reprinted plugin)? I believe that server owners from China will like your plugin. Also, I will mark you as the author, link to your SpigotMC and Github and never profit from them. I hope you can agree to my request.
Best regard <3

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.