LogBlock
Works 100% with 1.7 / 1.8
The best block logging and rollback solution for the savvy server administrator.
LogBlock is the best block logging plugin for Bukkit server. Not only is it awesomely powerful, it’s blazing fast! Everything is logged into a MySQL database, allowing developers to hook in and produce things such as player stats and even administrative panels. Every loggable action can be logged with LogBlock: WorldEdit, leave decay, fire, sign changes, explosions, chest changes, player and animal deaths, chat, commands and more!
Development builds of this project can be acquired at the provided continuous integration server. These builds have not been approved by the BukkitDev staff. Use them at your own risk.
LogBlock will very rarely break between Minecraft / Bukkit updates, however if you find it does, please be sure to try a development build from above, as we generally test new releases there until deemed stable.
What is LogBlock?
LogBlock is a tool which allows you to keep track of almost everything on your server, while also giving you the ability to rollback (revert) or redo changes made by users and natural occurrences such as liquid flow or leaf decay. Additionally, LogBlock is able to log and rollback chest contents, sign text and more! LogBlock was originally created by bootswithdefer for HMod, ported to Bukkit by DiddiZ and is now actively maintained by md_5, ammar2 and the community of developers on Bukkit. We accept pull requests on GitHub frequently which means that community developers can add features they wish to see quicker than LogBlock developers are able to from tickets. All database actions are run not only in their own threads, but are queued into a consumer to minimize lag on the main thread. This is great for larger servers! All optional features (not dependencies below) are enabled and disabled from within the config file allowing complete control over what is logged thus ensuring database size is kept to a minimum.
Notices
Most virtual chest plugins are not compatible with LogBlock. Because they do not set the player who is opening the “chest”, LogBlock can’t do what it’s meant to be able to do, thus, making errors in your console. Please report these issues to the fake-chest plugin developer, NOT LogBlock developers.
Issues are read more frequently on the GitHub Issues page as compared to the comments below. When updating to LB1.57, if you already have a large database and have changed your columns to MEDIUMINT, INT or LARGEINT, you do not need the updater to fix this for you automatically. To stop this behaviour, simply change “version” in the configuration to ‘1.57’.
If you are experiencing an error such as this please read the FAQ for answers.
If you're receiving errors regarding players from the consumer such as "[Consumer] Failed to add player <playername>" then change all `playerid` columns to MEDIUMINT or INT in each table that contains them. This may take a long time if you have a lot of rows.
Optional Dependencies
- WorldEdit (Recommended)
- Permissions plugin
- LogBlock Questioner
Need help?
Found a bug or an issue? Please report it (and attach code if you know how to squash it) on our ticket manager.
Just need help in general or have an urgent, more private bug? Join us on IRC at irc.esper.net #LogBlock and ping a +o or +v for faster help. Webchat is available here if you don't have a client, or prefer to use it.
As always, check if your question is on the FAQ before asking!
Installation
More Information
- FAQ (read me first!)
- Command reference
- Configuration
- Helpful Commands
- MySQL Connection Problems
- MySQL Schema
- SQL Queries
- Parameters
Are you a Developer?
If you wish to contribute to the LogBlock project, head on over to the GitHub page, fork the project and submit your pull request(s).
If you wish to develop a plugin that interacts with LogBlock in some way, read up on the API here. Support for API and more can be found in the IRC channel, which is listed above.
Developer builds can be found here. (These builds have not been approved by the BukkitDev staff. Use them at your own risk.)
Still need help? Join us on IRC at irc.esper.net #LogBlock and ping a +o or +v for faster help.
Please do not post comments requesting support. Report bugs here or, alternatively, talk to a real person. Commenting below is a surefire way to not receive help.
What is lb-main for? It seems to be the same as lb-world...
Does this just log block ID's, also ones that were not in Minecraft by default (for example IndustrialCraft)?
HawkEyE doesn't log those, does this one?
would it be possible to add a flatfile database?
i cant get Mysql (yea i got other problems DEAL WITH IT)
Hi, is it possible to check more than one world through the api? Perhaps s.th. similar to
It's about the Xray-Informer (http://dev.bukkit.org/server-mods/xray-informer/)
Thanks
@chaseoes
you did not get ChrisKnyfe's message at all.
@chrisknyfe
As far as I know you only need Spout for the chest logging feature. If you have that disabled, it should work fine without it.
@Infuscu
I don't think you can do this with LogBlock, but WorldEdit has the
command that does this.
This might not be a feature of LogBlock but it is somehow possible to regenerate certain chunks to its original state?
@chrisknyfe
I feel the same way. I am completely capable of installing/updating the plugins I need when I need them. Im glad that there is spout support for this (chest loggin omg), but the config should not default to auto-update/download.
All asking for a 1.0.0 version check out: http://forums.bukkit.org/threads/info-admin-logblock-v1-50-enderdragon-logging-tree-grow-logging-1-0-1-r1.4543/
This will probably be the 10305th post about an ETA for a 1.0.0 build, but hey, we admins are impatient creatures.
Hi guys,
I noticed that recently LogBlock can download Spout automatically. I found out because LB stopped working for a period of time on my server, when it had downloaded a version of Spout that was incompatable with my CB version. I have disabled the automatic download in the config, but I still had a short period without LB coverage, during which several untraceable griefs happened.
In general, I think automatically downloading a plugin behind the server owner's back is a questionable practice (see ShowCase, which is notorious for this,) though it's useful if the server owner intends for the plugin to do this. May I suggest leaving the automatic downloads off in the default config file? I think it's a bit more of an honest practice.
Thanks, CK
My Moderators can't use the LB tools anymore, they have the permission nodes from the Github page so I think something changed?
@RaesWolf
CB#1573
I am having the same problem with not only the latest stable Logblock 1.41, but also latest Dev build 76. Could you please update LB to the new changes? Also gives a bunch of errors in the failed.txt in the import folder.
I have downloaded the dev builds on my server and it will run fine and then logblock will out of no where just spew out all sorts of stuff (not really errors) but it overloads the console and crashes the server on a 1.0.0 cb 1550
@Double_0_negative
You'll want to look in the terminal to see what the actual exception thrown is and where. That just gives the statement that's causing the exception, but not the exception itself. (Syntax, bad values, etc.)
I had a problem with a java interface I created to view lb-players. Whenever the onlinetime is over 24 hours, it throws a java.sql error with illegal argument exception for that column. I resolved this by changing the column type to LONGTEXT in the DB and modifying the getInserts method in the PlayerJoinRow class to include
since you cannot set a default value for text columns and a null value throws exception on PlayerLeaveRow() when using TIMEDIFF. Updates properly and is viewable after modifications.
Edit: Love the plugin by the way. A must have for any server. Many thanks for all your hard work. Still wasn't creating values properly after further testing. Some updated, some didn't. Modified the INSERT statement as well this time.
Hi there. Any chance of PostgreSQL support (using JDBC preferrably so more than one database backend is supported?)
http://diddiz.insane-architects.net:8080/job/LogBlock/ is the link for dev builds. Would be nice if you guys could add it to this page as well. :)
Im getting lots of these errors on logblock dev build and bukkit #1537
[LogBlock Consumer] SQL exception on UPDATE `lb-players` SET lastlogin = FROM_UNIXTIME(1322707033), firstlogin = IF(firstlogin = 0, FROM_UNIXTIME(1322707033), firstlogin), ip = '/..99.48:55729' WHERE playerid = 38;:
Did anyone gets this error when bukkit starts ( ver 1.0 )
2011-11-26 13:01:48 [SEVERE] [LogBlock Updater] Error: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Duplicate column name 'lastlogin' at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:525) at com.mysql.jdbc.Util.handleNewInstance(Util.java:407) at com.mysql.jdbc.Util.getInstance(Util.java:382) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3593) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3525) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1986) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2140) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2620) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2570) at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:779) at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:622) at de.diddiz.LogBlock.Updater.update(Updater.java:63) at de.diddiz.LogBlock.LogBlock.onLoad(LogBlock.java:83) at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:144) at org.bukkit.craftbukkit.CraftServer.<init>(CraftServer.java:117) at net.minecraft.server.ServerConfigurationManager.<init>(ServerConfigurationManager.java:52) at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:141) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:388) at net.minecraft.server.ThreadServerApplication.run(SourceFile:457)