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 Gullum02 Gullum02 Mar 06, 2015 at 17:37 UTC - 0 likes

    Is anyone else having trouble on Spigot 1.8 running griefprevention with /CT ALL on /adminclaims? It reports that I have opened the chests to the public, but absolutely no one but me can use them on the claim. Suggestions?

  • Avatar of iamthereaper89 iamthereaper89 Mar 06, 2015 at 14:50 UTC - 0 likes

    Hi, Im also from Piratecraft, and having a seperate issue to that of @Godsdead,

    We are having many complaints/threasts of leaving becuase of players being sieged in land that they are only trusted in, and do not own.

    I have other players with subclaims with trust on an island of mine, unfortunately the reason they are claimed by me is to keep them safe from siege as i do not frequent the area, now that this is happening, my build are being destroyed when im not even online just because a friend with trsut is in the area.

    this is happening to a number of players and it causing alot of issues

    Can this be looked into, im sure it used to be Siegedefendable:requiredowner surely that means you can only siege an owner not a trustee?

    Thanks Jon

  • Avatar of jahangir13 jahangir13 Mar 06, 2015 at 11:37 UTC - 0 likes

    That's what I've written below. Delete the primary key index. In the SELECT statement which reads all the claims at once (with select * from claims_table) there is no where-clause. And without a where clause with at least the primary key columns or using SELECT * the primary key is not used anyways.

    A primary key just speeds up searching/selecting specific rows as defined via the key fields in the where clause using an separate index table which just holds all the key columns.

    Here without a where clause a full table scan is done, reading everything.

    ( If you really want to have a primary key, then add a new column to the table, set it to integer/auto-increment and tell the column that it's the new primary key. For every new data set inserted the db fills this field with a new value automatically (+1 from the last one)...I mean, if you then feel a bit better ,)) Or in case mysql does not allow a table without any key. Maybe that has been changed. )

    Last edited Mar 06, 2015 by jahangir13

    JDynmapGriefPrevention: Show extended GP claim information on Dynmap
  • Avatar of GodsDead GodsDead Mar 06, 2015 at 10:31 UTC - 0 likes

    @bigscary: Go

    I removed the -1 row, Created a claim and it worked, but then the next person to create a sub-claim it fails because when the new claim was created it created the ID -1, Like I said you cant have a Primary Key with 2 of the same ID's! Subclaims will need their own unique ID to not conflict.

  • Avatar of maclarenss maclarenss Mar 06, 2015 at 05:43 UTC - 0 likes

    add pls flag in griefpr. /spawnmob off/on pvp off/on in private claim

  • Avatar of Oneyedrooster Oneyedrooster Mar 06, 2015 at 00:43 UTC - 0 likes

    im am getting this error in my console please help really love this plugin.

    INFO at net.minecraft.server.v1_8_R1.World.applyPhysics(World.java:531) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at net.minecraft.server.v1_8_R1.World.d(World.java:583) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at net.minecraft.server.v1_8_R1.BlockRedstoneWire.doPhysics(BlockRedstoneWire.java:259) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at net.minecraft.server.v1_8_R1.BlockRedstoneWire.e(BlockRedstoneWire.java:76) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at net.minecraft.server.v1_8_R1.World.applyPhysics(World.java:531) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at net.minecraft.server.v1_8_R1.World.d(World.java:583) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at net.minecraft.server.v1_8_R1.BlockRedstoneWire.doPhysics(BlockRedstoneWire.java:259) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at net.minecraft.server.v1_8_R1.BlockRedstoneWire.e(BlockRedstoneWire.java:76) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at net.minecraft.server.v1_8_R1.World.applyPhysics(World.java:533) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at net.minecraft.server.v1_8_R1.World.d(World.java:583) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at net.minecraft.server.v1_8_R1.BlockPiston.doPhysics(BlockPiston.java:44) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at net.minecraft.server.v1_8_R1.BlockPiston.e(BlockPiston.java:72) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:305) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO org.bukkit.event.EventException 05.03 17:34:40 [Server] ERROR Could not pass event BlockPistonRetractEvent to GriefPrevention v11.0.1 05.03 17:34:40 [Server] INFO ... 234 more 05.03 17:34:40 [Server] INFO at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:301) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at java.lang.reflect.Method.invoke(Unknown Source) [?:1.7.0_72] 05.03 17:34:40 [Server] INFO at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) [?:1.7.0_72] 05.03 17:34:40 [Server] INFO at sun.reflect.GeneratedMethodAccessor296.invoke(Unknown Source) [?:?] 05.03 17:34:40 [Server] INFO at me.ryanhamshire.GriefPrevention.BlockEventHandler.onBlockPistonRetract(BlockEventHandler.java:491) [?:?] 05.03 17:34:40 [Server] INFO Caused by: java.lang.NoSuchMethodError: org.bukkit.event.block.BlockPistonRetractEvent.getBlocks()Ljava/util/List; 05.03 17:34:40 [Server] INFO at java.lang.Thread.run(Unknown Source) [?:1.7.0_72] 05.03 17:34:40 [Server] INFO at net.minecraft.server.v1_8_R1.MinecraftServer.run(MinecraftServer.java:526) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at net.minecraft.server.v1_8_R1.MinecraftServer.y(MinecraftServer.java:623) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at net.minecraft.server.v1_8_R1.DedicatedServer.z(DedicatedServer.java:316) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at net.minecraft.server.v1_8_R1.MinecraftServer.z(MinecraftServer.java:741) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at net.minecraft.server.v1_8_R1.WorldServer.doTick(WorldServer.java:236) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at net.minecraft.server.v1_8_R1.WorldServer.a(WorldServer.java:632) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at net.minecraft.server.v1_8_R1.BlockDiodeAbstract.b(BlockDiodeAbstract.java:41) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at net.minecraft.server.v1_8_R1.World.setTypeAndData(World.java:392) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at net.minecraft.server.v1_8_R1.Chunk.a(Chunk.java:512) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at net.minecraft.server.v1_8_R1.BlockRepeater.remove(SourceFile:112) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at net.minecraft.server.v1_8_R1.BlockDiodeAbstract.h(BlockDiodeAbstract.java:166) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at net.minecraft.server.v1_8_R1.World.d(World.java:583) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at net.minecraft.server.v1_8_R1.BlockRedstoneWire.doPhysics(BlockRedstoneWire.java:259) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at net.minecraft.server.v1_8_R1.BlockRedstoneWire.e(BlockRedstoneWire.java:76) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at net.minecraft.server.v1_8_R1.World.applyPhysics(World.java:536) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at net.minecraft.server.v1_8_R1.World.d(World.java:583) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at net.minecraft.server.v1_8_R1.BlockRedstoneWire.doPhysics(BlockRedstoneWire.java:259) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at net.minecraft.server.v1_8_R1.BlockRedstoneWire.e(BlockRedstoneWire.java:76) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at net.minecraft.server.v1_8_R1.World.applyPhysics(World.java:532) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at net.minecraft.server.v1_8_R1.World.d(World.java:583) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at net.minecraft.server.v1_8_R1.BlockRedstoneWire.doPhysics(BlockRedstoneWire.java:259) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at net.minecraft.server.v1_8_R1.BlockRedstoneWire.e(BlockRedstoneWire.java:76) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at net.minecraft.server.v1_8_R1.World.applyPhysics(World.java:535) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at net.minecraft.server.v1_8_R1.World.d(World.java:583) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at net.minecraft.server.v1_8_R1.BlockRedstoneWire.doPhysics(BlockRedstoneWire.java:259) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at net.minecraft.server.v1_8_R1.BlockRedstoneWire.e(BlockRedstoneWire.java:76) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at net.minecraft.server.v1_8_R1.World.applyPhysics(World.java:531) [Spigot18.jar:git-Spigot-081dfa5-5e6c347] 05.03 17:34:40 [Server] INFO at net.minecraft.server.v1_8_R1.World.d(World.java:583) [Spigot18.jar:git-Spigot-081dfa5-5e6c347]

  • Avatar of jahangir13 jahangir13 Mar 05, 2015 at 21:33 UTC - 0 likes

    I guess that will not help...as the next subclaim will also be stored with id -1 if I see that correctly.
    I did not see in your create table statements that a primary key is declared:
    CREATE TABLE IF NOT EXISTS griefprevention_claimdata (id INT(15), owner VARCHAR(50), lessercorner VARCHAR(100), greatercorner VARCHAR(100), builders VARCHAR(1000), containers VARCHAR(1000), accessors VARCHAR(1000), managers VARCHAR(1000), parentid INT(15));

    So the question is where the primary key definition comes from in GodsDead's table (as you said maybe from a beta version). Technically it's possible to declare a table in mysql without primary key.

    When you insert:
    "INSERT INTO griefprevention_claimdata (id, owner, lessercorner, greatercorner, builders, containers, accessors, managers, parentid) VALUES(" +
    id + ", '" +
    owner + "', '" +
    ...and it's a subclaim it will produce the duplicate key error again (not for the first but the second subclaim).

    @GodsDead: delete the primary key from the griefprevention_claimdata table structure definition in whatever tool you use and try again.

    I think it should not matter what subclaim it is. With the SELECT * from this table all rows are taken and it should not matter in which order or if the entry is uniquely selectable.

    Last edited Mar 05, 2015 by jahangir13
  • Avatar of bigscary bigscary Mar 05, 2015 at 21:17 UTC - 1 like

    @GodsDead: Go

    Can you remove that key from your table? It might have been added by one of the beta versions. I don't have any keys set on any of the tables GP creates currently. It's normal for subdivisions to have -1 as their claim ID.

    @Luficer: Go

    Right, potion damage is prevented. I'll double-check on the creeper damage.

  • Avatar of Luficer Luficer Mar 04, 2015 at 23:39 UTC - 0 likes

    @bigscary: Go

    Under those circumstances, potentially not Zombies, although Creepers are probably still a liable way to damage them, even if they're completely concealed. And I'm assuming by now potion damage is prevented.

    Last edited Mar 04, 2015 by Luficer
  • Avatar of GodsDead GodsDead Mar 04, 2015 at 19:17 UTC - 0 likes

    I figured out the Sub-Claims not saving, I think this is only relevant to mysql saved claims, this is actually an issue I brought up when I was stuck converting from 7.8! Looking at the console when someone makes a subclaim:

    [19:28:20] [Server thread/INFO]: GriefPrevention: Unable to save data for claim at PirateCraft_1;2107;57;-2302. Details:
    [19:28:20] [Server thread/INFO]: GriefPrevention: Duplicate entry '-1' for key 'PRIMARY'
    

Facts

Date created
Dec 14, 2011
Categories
Last update
Mar 04, 2015
Development stage
Mature
License
GNU General Public License version 3 (GPLv3)
Curse link
Grief Prevention
Downloads
283,800
Recent files
  • R: 11.0.1 for 1.8.1 Mar 04, 2015
  • R: 11.0 for 1.8.1 Mar 03, 2015
  • R: 10.9 for 1.8.1 Feb 27, 2015
  • R: 10.8 for 1.8.1 Feb 23, 2015
  • R: 10.7.1 for 1.8.1 Feb 18, 2015

Authors