Grief Prevention

Grief Prevention

AUTOMATICALLY PREVENTS ALL FORMS OF GRIEF, including build/break, theft, spam, fire, spawn camping, lava and more, so you don't have to undo any damage after the fact. 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 creativity.

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.

http://dev.bukkit.org/media/images/81/403/pseudoEmbed.png

Official Servers (Try it for yourself!)

You can experience this plugin for yourself (as a player) by joining any of these public servers. :) We maintain these servers personally, which helps us catch bugs and spot opportunities for new features and improvements. Have fun!

Downloads by Minecraft Version

Please choose the version that matches your Minecraft server version! :)

The Manual

Feature List

Yes, everything is customizable. See Setup and Configuration.

  • No database or world backups required.
  • Extremely efficient CPU / RAM usage.
  • Land claims are easy to manage.
    • New players get automatic claims around their first chests.
    • 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.
    • 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.
    • No pushing blocks in with pistons.
    • No pulling blocks out with pistons.
    • No TNT damage.
    • No creeper damage.
    • No damage from TNT cannons.
    • No explosive damage from other plugins, like Extra Hard Mode or Magic Spells.
    • No enderman 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.
    • Fluids will not flow into a claim from outside.
    • No placing blocks via TNT/Sand/Gravel cannon.
    • No placing portals without build permission (even by walking through a portal in another world).
  • 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.
  • 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).

More Great Plugins!

  • Anti-XRay
    • Limits how quickly players can mine valuables, based on their play time / values mined ratio.
    • Keeps your valuables in the ground, so non-cheating players can find them (unlike ore loggers).
    • Practically free to run, unlike the tremendously expensive Orebfuscator.
    • Most legit players won't notice, but xrayers will ragequit and move on.
  • Population Density
    • Automatically assigns new players to wilderness where they'll find other new players and plenty of space, wood, and ore.
    • Optional teleportation system which can't be abused by players to escape combat or save them from being lost.
    • Login queue to guarantee fairness when the server is full.
    • Optional reserved spots for administrators.
    • Automatically removes idle players when the server is nearly full.
    • Smart, multi-layered anti-lag feature set.

Coming Soon

These are my top priorities right now. It's not a complete list of everything I plan to do. :)

  • More performance tweaks.
  • Update /RestoreNature for new block types in 1.8.
  • Update /RestoreNature to handle water better.
  • Update /RestoreNature to regrow trees.
  • Fix killer bunnies not being damageable in other players' land claims (because Bukkit labels them "animals", not "monsters").
  • Add an abridged, easy-to-read chat log which auto-deletes its old data.
  • A /ignore command for players.
  • A /separate command to force two players to ignore each other.

Please Vote for Grief Prevention

I've just posted Grief Prevention on the Spigot site. 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/

You must login to post a comment. Don't have an account? Register to get one!

  • Avatar of GodsDead GodsDead Feb 24, 2014 at 19:56 UTC - 0 likes

    This GriefPrevention MYSQL adaptation is absolutly awful, I managed to MANUALLY add all the claims, since the migration from flatfile wouldnt work at all, This fainlly works without problems, There isnt even any unique ID's set for the table columns. But player data cannot be saved at all, I emptied the playerdata table, so there can be no conflicts and when I join I get this Error message: It apears to be trying to save to a Column called count, count does not exist in the playerdata table. http://pastebin.com/whFKAaEW

    [20:51:41] [Server thread/INFO]: [GriefPrevention] Unable to save data for player GodsDead. Details:
    [20:51:41] [Server thread/WARN]: java.sql.SQLException: Column count doesn't match value count at row 1
    [20:51:41] [Server thread/WARN]: at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
    [20:51:41] [Server thread/WARN]: at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3593)
    [20:51:41] [Server thread/WARN]: at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3525)
    [20:51:41] [Server thread/WARN]: at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1986)
    [20:51:41] [Server thread/WARN]: at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2140)
    [20:51:41] [Server thread/WARN]: at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2620)
    [20:51:41] [Server thread/WARN]: at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2570)
    [20:51:41] [Server thread/WARN]: at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:779)
    [20:51:41] [Server thread/WARN]: at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:622)
    [20:51:41] [Server thread/WARN]: at me.ryanhamshire.GriefPrevention.DatabaseDataStore.savePlayerData(DatabaseDataStore.java:343)
    [20:51:41] [Server thread/WARN]: at me.ryanhamshire.GriefPrevention.DatabaseDataStore.getPlayerDataFromStorage(DatabaseDataStore.java:145)
    [20:51:41] [Server thread/WARN]: at me.ryanhamshire.GriefPrevention.DataStore.getPlayerData(DataStore.java:978)
    [20:51:41] [Server thread/WARN]: at me.ryanhamshire.GriefPrevention.PlayerEventHandler.onPlayerLogin(PlayerEventHandler.java:2414)
    [20:51:41] [Server thread/WARN]: at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    [20:51:41] [Server thread/WARN]: at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    [20:51:41] [Server thread/WARN]: at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    [20:51:41] [Server thread/WARN]: at java.lang.reflect.Method.invoke(Method.java:601)
    [20:51:41] [Server thread/WARN]: at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425)
    [20:51:41] [Server thread/WARN]: at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
    [20:51:41] [Server thread/WARN]: at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:481)
    [20:51:41] [Server thread/WARN]: at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:466)
    [20:51:41] [Server thread/WARN]: at net.minecraft.server.v1_7_R1.PlayerList.attemptLogin(PlayerList.java:362)
    [20:51:41] [Server thread/WARN]: at net.minecraft.server.v1_7_R1.LoginListener.c(LoginListener.java:70)
    [20:51:41] [Server thread/WARN]: at net.minecraft.server.v1_7_R1.LoginListener.a(LoginListener.java:42)
    [20:51:41] [Server thread/WARN]: at net.minecraft.server.v1_7_R1.NetworkManager.a(NetworkManager.java:149)
    [20:51:41] [Server thread/WARN]: at net.minecraft.server.v1_7_R1.ServerConnection.c(SourceFile:134)
    [20:51:41] [Server thread/WARN]: at net.minecraft.server.v1_7_R1.MinecraftServer.u(MinecraftServer.java:655)
    [20:51:41] [Server thread/WARN]: at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:250)
    [20:51:41] [Server thread/WARN]: at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:545)
    [20:51:41] [Server thread/WARN]: at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java:457)
    [20:51:41] [Server thread/WARN]: at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:617)
    [20:51:41] [Server thread/INFO]: GodsDead[/176.27.220.172:50188] logged in with entity id 598 at ([PirateCraft_1] -702.5919985491571, 71.0, -1356.2201994041986)
    [20:51:41] [Server thread/INFO]: [GriefPrevention] Unable to save data for player GodsDead. Details:
    [20:51:41] [Server thread/WARN]: java.sql.SQLException: Column count doesn't match value count at row 1
    [20:51:41] [Server thread/WARN]: at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
    [20:51:41] [Server thread/WARN]: at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3593)
    [20:51:41] [Server thread/WARN]: at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3525)
    [20:51:41] [Server thread/WARN]: at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1986)
    [20:51:41] [Server thread/WARN]: at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2140)
    [20:51:41] [Server thread/WARN]: at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2620)
    [20:51:41] [Server thread/WARN]: at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2570)
    [20:51:41] [Server thread/WARN]: at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:779)
    [20:51:41] [Server thread/WARN]: at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:622)
    [20:51:41] [Server thread/WARN]: at me.ryanhamshire.GriefPrevention.DatabaseDataStore.savePlayerData(DatabaseDataStore.java:343)
    [20:51:41] [Server thread/WARN]: at me.ryanhamshire.GriefPrevention.PlayerEventHandler.onPlayerJoin(PlayerEventHandler.java:2316)
    [20:51:41] [Server thread/WARN]: at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    [20:51:41] [Server thread/WARN]: at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    [20:51:41] [Server thread/WARN]: at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    [20:51:41] [Server thread/WARN]: at java.lang.reflect.Method.invoke(Method.java:601)
    [20:51:41] [Server thread/WARN]: at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425)
    [20:51:41] [Server thread/WARN]: at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
    [20:51:41] [Server thread/WARN]: at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:481)
    [20:51:41] [Server thread/WARN]: at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:466)
    [20:51:41] [Server thread/WARN]: at net.minecraft.server.v1_7_R1.PlayerList.c(PlayerList.java:225)
    [20:51:41] [Server thread/WARN]: at net.minecraft.server.v1_7_R1.PlayerList.a(PlayerList.java:116)
    [20:51:41] [Server thread/WARN]: at net.minecraft.server.v1_7_R1.LoginListener.c(LoginListener.java:78)
    [20:51:41] [Server thread/WARN]: at net.minecraft.server.v1_7_R1.LoginListener.a(LoginListener.java:42)
    [20:51:41] [Server thread/WARN]: at net.minecraft.server.v1_7_R1.NetworkManager.a(NetworkManager.java:149)
    [20:51:41] [Server thread/WARN]: at net.minecraft.server.v1_7_R1.ServerConnection.c(SourceFile:134)
    [20:51:41] [Server thread/WARN]: at net.minecraft.server.v1_7_R1.MinecraftServer.u(MinecraftServer.java:655)
    [20:51:41] [Server thread/WARN]: at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:250)
    [20:51:41] [Server thread/WARN]: at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:545)
    [20:51:41] [Server thread/WARN]: at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java:457)
    [20:51:41] [Server thread/WARN]: at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:617)
    

    This is the griefprevention_playerdata mysql dump for the structure

    -- phpMyAdmin SQL Dump
    -- version 4.0.8
    -- http://www.phpmyadmin.net
    --
    -- Host: localhost
    -- Generation Time: Feb 24, 2014 at 08:57 PM
    -- Server version: 5.1.73-cll
    -- PHP Version: 5.4.23
    
    SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
    SET time_zone = "+00:00";
    
    
    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    /*!40101 SET NAMES utf8 */;
    
    --
    -- Database: `my_database`
    --
    
    -- --------------------------------------------------------
    
    --
    -- Table structure for table `griefprevention_playerdata`
    --
    
    CREATE TABLE IF NOT EXISTS `griefprevention_playerdata` (
      `name` varchar(50) NOT NULL DEFAULT '',
      `lastlogin` datetime DEFAULT NULL,
      `accruedblocks` int(15) DEFAULT NULL,
      `bonusblocks` int(15) DEFAULT NULL,
      `clearonjoin` tinyint(1) NOT NULL DEFAULT '0'
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
    
    /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
    /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
    /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
    

    EDIT: I think I fixed this issue by using the latest development version, Incase anybody else has this problem with mysql.

    Last edited Feb 24, 2014 by GodsDead
  • Avatar of GodsDead GodsDead Feb 24, 2014 at 17:36 UTC - 0 likes

    Griefprevention will not move over any claims to mysql, (they are admin calims) http://pastebin.com/phbL6UTP

  • Avatar of WsupPanda WsupPanda Feb 24, 2014 at 05:51 UTC - 0 likes

    Why is it that we can't break itemframes inside of claims, but are able to by unclaiming it? How do I fix that?

  • Avatar of RedZephon9 RedZephon9 Feb 24, 2014 at 00:59 UTC - 0 likes

    Any particular reason that users are randomly having their claim blocks set to negative claim blocks? For example some users had 900 claim blocks and now they have -11000

  • Avatar of anfereon anfereon Feb 23, 2014 at 22:19 UTC - 0 likes

    @anfereon: Go

    can i please get a response? :P

  • Avatar of GodsDead GodsDead Feb 23, 2014 at 20:16 UTC - 0 likes

    Following advice to move to mysql below from my catashrophy with grief prevention destroying my sunday, guess what, mysql is BROKEN in 7.8. Following this: http://dev.bukkit.org/bukkit-plugins/grief-prevention/pages/7-8-and-later-grief-prevention-configuration/ I changed the config.yml to mysql, I added my mysql details, It connected, it generated tables, it added some rows, it DID NOT move over a single claim we have just spent hours re-creating, whats worse than this absolute mess is, even after createing a backup of the entire GP before this move to mysql (as I cannot trust this plugin) moving the data back, its put every single player into minus claims, Reverted from mysql to flat, This has gone from completly fucking shitstorm to even worse. How can I fix this? Did we get a new developer for 7.8 or something?

  • Avatar of GodsDead GodsDead Feb 23, 2014 at 18:26 UTC - 0 likes

    @stgram: Go

    Thank you for the responce, It took me hours to diagnose that this happened. Being on a shared node, it turns out it was another user that had incorrectly configured a third party backup plugin that created so much backups it filled the SSD very fast creating the crash, Wiping the player claim data? I lost more than the claims for griefprevention, I even thought about switching to SQL for GriefPrevetnion too, Im so anoyed with myself and my host for not having backups. We are pretty new, but now im stuck without any claim data at all. Im stuck in a terrible position, does anybody have any ideas how to proceed from here?

  • Avatar of stgram stgram Feb 23, 2014 at 15:40 UTC - 0 likes

    @GodsDead: Go

    If you run out of space, every plugin that writes data on shutdown will erase its own data, it is a terrible flaw. This is why I keep backups of essentials, and switched to SQL for GP. The data you need is absolutely lost in its current state.

    http://minecraft-mp.com/regular-banner-25773-6.png

  • Avatar of Bubbbaaa Bubbbaaa Feb 23, 2014 at 15:21 UTC - 0 likes

    @GodsDead: Go

    That is where "daily" backups come in handy for problems of this sort

    http://www.bubbassurvival.com/images/bs_banner_official.png

  • Avatar of GodsDead GodsDead Feb 23, 2014 at 14:58 UTC - 0 likes

    I have a majour problem that I need assistance with ASAP, I have had no problems at all with GP for 11 months or so until today, the server crashed last night due to memory, when I restarted it, GP didn't load any of the claims at all, I can see the data is still there, New claims can be created and a restart saves them, but I need to use the data before this happened. The new claims look like they are following the correct ID number we have 358 or so. Its flat file, and I do have access to MYSQL.

    EDIT: I opened up some of the claim data files all 358 are completely blank, GP has wiped all claim data?

    Last edited Feb 23, 2014 by GodsDead

Facts

Date created
Dec 14, 2011
Categories
Last update
Feb 23, 2015
Development stage
Mature
License
GNU General Public License version 3 (GPLv3)
Curse link
Grief Prevention
Downloads
281,177
Recent files
  • R: 10.8 for 1.8.1 Feb 23, 2015
  • R: 10.7.1 for 1.8.1 Feb 18, 2015
  • R: 10.7 for 1.8.1 Feb 12, 2015
  • R: 10.6.3 for 1.8.1 Feb 10, 2015
  • R: 10.6.2 for 1.8.1 Feb 06, 2015

Authors