Grief Prevention
AUTOMATICALLY PREVENTS ALL FORMS OF GRIEF, including build/break, theft, spam, fire, spawn camping, lava dumping, chat trolling, advertising and more, so you don't have to undo any damage after the fact. It even teaches players how to use it so you don't have to! No configuration or database required. Stop responding to grief and prevent it instead. Grief Prevention will solve your grief problems without requiring you to manage a roster of trained administrators, juggle 10 different anti-grief plugins, take away cool standard game features, publish a training manual / tutorial for players, or add explanatory signs to your world. You can also choose to integrate PvP elements into build design to finally get a PvP experience befitting a sandbox game about creative building.
Grief Prevention stops grief before it starts automatically without any effort from administrators, and with very little (self service) effort from players. Solve all your grief problems with a single download, no database, and no configuration step.
Got a question or found some random bug? Check the documentation!
Got a problem or bug you can reliably reproduce? Or a feature request? Report it on the issue tracker!
Also, you might be able to catch me/others on the #GriefPrevention IRC channel for help (please state your question and exercise patience if you use this option).
Downloads for older Minecraft Versions
You may also view recent update notes on Github
The Manual
Feature List
Yes, everything is customizable.
- No database or world backups required.
- Extremely efficient CPU / RAM usage.
- Land claims are easy to manage.
- Players create and manage their own land claims, so you don't have to do it for them.
- New players get automatic claims around their first chests so they're protected even if they don't know how to create land claims yet.
- Players who ask for help in chat get an instant link to a demonstration video.
- Resizing claims and creating new claims is done with ONLY the mouse, no slash commands (slash commands are also available).
- When a player appears to be building something nice outside his claim, he's warned and shown his claim boundaries.
- Claim boundaries are easy to see, and don't require any client-side mod installation.
- Extremely easy-to-remember, single-parameter slash commands for giving other players permissions.
- Claim subdivision and granular permissions are available to organize towns and cities. Watch this video.
- It's IMPOSSIBLE to grief a land claim. Watch this video.
- No building or breaking.
- No stealing from ANY containers.
- No sleeping in beds.
- No button/lever usage.
- No adjusting redstone repeaters or other configurable blocks.
- No pushing blocks in with pistons.
- No pulling blocks out with pistons.
- No TNT damage (including cannons).
- No creeper damage.
- No explosive damage from other plugins, like Extra Hard Mode or Magic Spells.
- No enderman/silverfish block changes.
- All doors may be automatically locked (optional, see config file).
- No killing or luring animals away.
- No stealing water (e.g. buckets).
- No trampling crops by players, animals, or monsters.
- No building overtop, all claims reach to the max build height.
- No placing or breaking paintings / item frames / armor stands, etc.
- Fluids will not flow into a claim from outside.
- No placing blocks via TNT/Sand/Gravel cannon.
- Pets and death loot are protected.
- Players can't pick up what another player dropped on death without permission.
- All types of pets are protected everywhere, even outside of land claims (can be configured per-world).
- Excellent anti-spam protection
- Warns, then mutes, then may kick or ban spammers (configurable - you choose).
- Most spammers get only one message out before they're muted.
- Blocks server advertising (IP addresses).
- Blocks repeat message spam.
- Blocks ASCII art (ex. Nyan Cats) spam.
- Blocks similar message spam.
- Blocks unreadable (gibberish) message spam.
- Blocks CAPS.
- Blocks macro spam (very different messages in quick succession).
- Blocks login/logout spam, even when the spammer has multiple accounts.
- Blocks death spam.
- Blocks bot team spam.
- Blocks slash command spam, including /tell, /emote, and any more you add.
- Wilderness Protection and Rollback
- Fire doesn't spread or destroy blocks.
- Creepers and other explosions don't destroy blocks above sea level.
- TNT doesn't destroy blocks above sea level.
- No planting trees on platforms in the sky ("tree grief").
- Instant, point and click nature restoration for not-claimed areas. Watch this video.
- Insanely easy and fast fixes for penises, swastikas, and anything else unsightly.
- Point at what you don't like and click, and it's fixed. Even from far away.
- Never accidentally changes blocks inside land claims.
- No need to investigate who built it, who broke it, or when they did it.
- Doesn't matter if the griefer built with "natural" blocks, it will still be fixed.
- No database.
- No backups.
- No chunk regeneration (it's dangerous for technical reasons).
- Fixes bad chunk generations, like floating islands. It will be better than new.
- Fills holes, even next to water to correct big spills.
- Smooths noisy terrain.
- No griefer construction is safe. If it's unnatural enough to be noticeable by players, it will be removed or filled-in.
- Land claims can't be used as a griefing tool.
- It's impossible to get a player "stuck" inside a land claim.
- Land claims beyond the first require a golden shovel.
- Minimum claim size prevents sprinkling small claims to annoy other players.
- Max claim allowance grows with time played on the server, and can't be cheated by idling.
- A simple administrative slash command will instantly remove all of a griefer's claims, no matter where they are.
- Catches clever griefers.
- Enhances the /ban command to ban ALL a griefer's accounts (not just his IP address).
- Logs sign placements.
- /SoftMute command to shut down chat trolls without them knowing they're beaten.
- Abridged chat logs make reviewing what happened while you were away super-quick and easy.
- Automatically mutes new-to-server players who use racial or homophobic slurs.
- PvP Protections.
- When PvP is off, no setting fire or dumping lava near other players.
- Absolutely bullet-proof anti-spawn-camping protection including bed respawns, which requires no configuration.
- No logging out, stashing items, or using plugin teleportation to escape combat.
- Optional siege mode, to answer players who hide in their claimed houses to avoid combat.
- Supports your server growth.
- Permit players to exchange server currency for claim blocks (requires configuration and other plugins).
- Grant claim blocks automatically for votes, donations, etc (console command provided, other plugins required).
Please Vote for Grief Prevention
I've also posted Grief Prevention on the Spigot site, where plugins are ranked based on reviews. If you love GP, please take a couple of minutes to give GP your rating and leave a short review. Better rating and positive reviews will help server owners who look for plugins on the Spigot site make the safe choice (GP) instead of downloading something sketchy or incomplete. :) Thanks so much for all your support!
http://www.spigotmc.org/resources/griefprevention.1884/
Got a question or found some random bug? Check the documentation!
Got a problem or bug you can reliably reproduce? Or a feature request? Report it on the issue tracker!
Also, you might be able to catch me/others on the #GriefPrevention IRC chat channel for help (please state your question and exercise patience if you use this option).
@bigscary
Thank you for adding my siege requests! These will be much appreciated, I will be testing the "During a siege, TNT will now destroy soft block types" with the cannons plugin to see if cannons can break these soft blocks now, my players have been wanting this for ages!
Few outstanding issues:
Update 12.3 is here! GriefPrevention is rated #2 on the Spigot site. Please help it reach #1 by leaving a 5-star review. :) Thanks!
@TheSupaSmiley
You have to update your server to a modern 1.8 version. Older versions of 1.8 have a problem with armor stands.
@RockStarTragedy
Sorry, there isn't yet. I have it on my todo list to add.
@atvar8
I'm only guessing wildly here - make sure your server is 1.8, and you got it from the spigotmc.org site by running their buildtools.jar app. Also after you install any plugin, you have to either reboot your server or run the /reload command to make it start working. If none of this helps, go to your latest server log file and look for details about the problem.
@Isiah59
Buying/selling/renting land claims isn't part of the base plugin. There MAY be a working extension plugin out there to do it, but if there is, I don't have a link. Maybe someone else who reads these comments can help you better. :)
@ilikecorn500
To grant access to buttons/levers for ALL players in a land claim, stand in that land claim and execute /accesstrust public.
Great plugin! I'm having a problem. None of my default users can press buttons for a command block in an admin claim, but I can. Is there a way I can fix this? I'm running the latest Spigot and bPerms.
@RockStarTragedy
you could use my plugin to find 'unused' claims 1.) via Dynmap or 2.) csv file export https://www.spigotmc.org/resources/jdynmapgriefprevention.818/
@bigscary Hello. First of all, congratulations on creating such an amazing and successful plugin!
I co-own a private economy server that's going to be up soon, and we were planning on making cities, some where players cant build but can buy homes, and some where they can build their own homes, Admins are going to be controlling most of the claims and giving these areas to new players on the server, in plots. Kind of like selling land or houses in real life.
Is this possible?
Thanks again.
@bigscary I've played on several servers that use Grief Prevention, so I can definitely say it's a wonderful product..
I'm recently getting into the Administrator side of things (my own server! Woohoo!) and I decided upon Grief Prevention to hassle my players the least and to keep server resource usage to a minimum to keep lag down...
The issue I'm experiencing (I haven't been able to find any cause or fix for this anywhere..) is that the plugin loads, but doesn't FUNCTION. All commands receive an "An internal error has occurred" error... Any ideas?
Loving the plugin! Really helps to keep the griefers off our tail!
One problem we've been experiencing is 1.8's Armor Stands not being protected. People are free to take armor or even the stand without being given any permissions in the claim. Is there a way to change that or is it a bug?
Thanks for taking the time to look at this! ^-^
Hi there! I really enjoy the plugin it has been a huge help to the server. I just want to ask one question.
Is there a permission node that I can give to my moderators that show the "last login" line for users claims? We have a system that after 60 days claims expire, and mods check up on existing claims to prepare for claim expiration. I don't want the mods getting any power or ability other than just being able to see the last login time. If this is currently not do-able, may I offer this as a suggestion? Thanks for your help in advance!
@user_413872
Update to the latest. Looks like McMyAdmin is installing an outdated version. :(
@FrankTheProGamer
The auto-complete for commands isn't controlled by any plugins. Consider complaining to the spigot team or disabling the autocomplete (I think it's in the server config file).
@AriKira
Yes. Each server can specify a different database on the same database server in its GP config file.
@CloakedAlien
It could be that it's my fault and there's something I should fix on my end, but it only occurs on atypical database setups like yours. I'd have to totally replicate your whole setup to be sure (plugins, database software and settings, possibly hardware...). It's just too much. :(
WT a nice plugin! And i have a question... Could i use this plugin for multiple servers with the same mysql... Just like server A connect to MySql 10.88.88.3:3306, Database is GriefPrevention. And server B also connect to MySql 10.88.88.3:3306, Database is Grief Prevention. But every server's world name is different! server A is survival-1, Server B is survival-2
Im having a problem when a user types /ab for (/abandonclaims) and then presses tab to autofill the word it crashes the server
@bigscary
I'm using 10.5. I installed it through McMyAdmin.
@bigscary
It should be noted that I've got several plugins that uses a MySQL connection without hiccups so it shouldn't be the servers fault =)
Then again it might just be that GP is the first plugin to access it after a long idle time so I can't fully rule it out =)
But it was working fine up until a few weeks ago I think. Well, before the previous issues we had that is (with the accrued block reset issue)
@cicatrice74
Permission is griefprevention.eavesdropsigns.
@LuiSinhuUu
Make sure you're using a version of GP which was made for your version of Minecraft. If that doesn't clear it up, then check your boot logs for more hints on what could be the issue.
@user_413872
What GP version are you using?
@CloakedAlien
I'm sorry, but I don't know how to troubleshoot a SQL connection issue. I wonder if anyone else is having a similar problem?
Updated to the latest version a couple of days ago, still seeing a lot of these. Does NOT seem to be the same issue as the accrued block reversal (people first logging in after a while, mysql errors resulting in users not found and thus them being reverted to 100 blocks). This error makes his latest accrued block disappear, so next days login he's back at 0 available blocks =S
-8<- 22:11 a14828b9-073d-465c-b772-597776971b0e com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failureThe last packet successfully received from the server was 31,718,345 milliseconds ago. The last packet sent successfully to the server was 2 milliseconds ago. 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:526) at com.mysql.jdbc.Util.handleNewInstance(Util.java:407) at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116) at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3082) at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2968) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3516) 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.executeQuery(StatementImpl.java:1474) at me.ryanhamshire.GriefPrevention.DatabaseDataStore.getPlayerDataFromStorage(DatabaseDataStore.java:507) at me.ryanhamshire.GriefPrevention.PlayerData.loadDataFromSecondaryStorage(PlayerData.java:237) at me.ryanhamshire.GriefPrevention.PlayerData.getClaims(PlayerData.java:309) at me.ryanhamshire.GriefPrevention.GriefPrevention.onCommand(GriefPrevention.java:1672) at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:641) at net.minecraft.server.v1_8_R3.PlayerConnection.handleCommand(PlayerConnection.java:1162) at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:997) at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:45) at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:1) at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:714) at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:653) at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:556) at java.lang.Thread.run(Thread.java:745) Caused by: java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost. at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2529) at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2979) ... 27 more
-8<-Hi there
I'm fairly new to setting up servers, but I'm having the problem that GriefPrevention is spamming my logs with
And it's sort of frustration when I'm tryin to look through my logs. It does it even though noone is online. Any idea if it's something I've done wrong or what's the cause of this?
i amateur on thos things '-' i know the basic i guess, i using ( 8.1.3 Release Semi-normal Sep 25, 2014 CB 1.7.2-R0.3 )
and don't know about mysql . is there something we can chat better to try help me ? i have 3 friends actually playing with me and more coming, so this plugin will be perfect... BUT not working to buy new blocks =( if someone can help me from skype, facebook, or another place '-' i will be happy \o\
Seems like we're having a weird claim block reset issue again, if you recall it being a weird mysql-connection issue?
Not sure it's the same, but a player is reporting consistent claim block resets.
It's running Grief Prevention v11.9 and Git-Spigot-6c9b0a1-de5c261 (MC: 1.8.8) (Implementing API version 1.8.8-R0.1-SNAPSHOT). Gonna do a update right now and see if it persists =)
-8<-[09:02:57] [User Authenticator #71/INFO]: UUID of player [PLAYER] is [UUID] [09:02:57] [Server thread/INFO]: [PLAYER}[/[IP]:4478] logged in with entity id 996958 at ([kolariko]83.5, 55.0, -59.5) [09:06:39] [Server thread/INFO]: GriefPrevention: [UUID] com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet successfully received from the server was 34,132,992 milliseconds ago. The last packet sent successfully to the server was 1 milliseconds ago. at sun.reflect.GeneratedConstructorAccessor221.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:526) at com.mysql.jdbc.Util.handleNewInstance(Util.java:407) at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116) at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3082) at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2968) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3516) 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.executeQuery(StatementImpl.java:1474) at me.ryanhamshire.GriefPrevention.DatabaseDataStore.getPlayerDataFromStorage(DatabaseDataStore.java:507) at me.ryanhamshire.GriefPrevention.PlayerData.loadDataFromSecondaryStorage(PlayerData.java:237) at me.ryanhamshire.GriefPrevention.PlayerData.getClaims(PlayerData.java:309) at me.ryanhamshire.GriefPrevention.BlockEventHandler.onBlockPlace(BlockEventHandler.java:327) at sun.reflect.GeneratedMethodAccessor137.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) at org.bukkit.craftbukkit.v1_8_R3.event.CraftEventFactory.callBlockPlaceEvent(CraftEventFactory.java:126) at net.minecraft.server.v1_8_R3.ItemStack.placeItem(ItemStack.java:158) at net.minecraft.server.v1_8_R3.PlayerInteractManager.interact(PlayerInteractManager.java:503) at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:759) at net.minecraft.server.v1_8_R3.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:52) at net.minecraft.server.v1_8_R3.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:1) at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:714) at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:653) at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:556) at java.lang.Thread.run(Thread.java:745) Caused by: java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost. at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2529) at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2979) ... 33 more
-8<-Hello, i have minecraft server 1.7.2 R0.3 ... i put the plugin , but when go buy says is disabled... so i go in the price there , but show a " internar error ....something.... while use this command " =( what to do ?