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).
-
View User Profile
-
Send Message
Posted Nov 12, 2013I've continued the Real Estate addon to work with all the new versions of GP.
-
View User Profile
-
Send Message
Posted Nov 12, 2013I am trying to match my characters in danish, where 3 more letters are present. They do not quite show up as intended, but only close. It looks like german letter formatting. So question is, which format is the messages.yml working with?
-
View User Profile
-
Send Message
Posted Nov 10, 2013I just noticed: running 7.7, people can shear mooshrooms in claims.
-
View User Profile
-
Send Message
Posted Nov 10, 2013EDIT: I was placing a trapped chest instead of a normal one...ugh. And secondly, the sign whisper...how do I turn this thing off? All my admins see it, and it is annoying...
-
View User Profile
-
Send Message
Posted Nov 10, 2013@jbanto
if you want to discuss professionalism then learn how to take criticism properly
I never said anything about professionalism, but "Professional" means "get's paid to do it". I don't get paid to work on GriefPrevention, this, no professionalism necessary. Further still I've found that when somebody tries to pull out the "Professionalism" card, they are saying "you shouldn't respond to my passive aggressive personal attacks on your integrity as a developer so strongly." often because, to their surprise, I respond in kind.
I'm just not too keen on using jar files on my server that haven't been reviewed by bukkitdev staff.
Tux2 is bukkitdev staff.... though that notwithstanding, since they would get some other staff member to review it, The codebase upon which each development build is created is freely available on github for review by anybody who would wish to. And of course it can be forked and changed if necessary. Jenkins builds are created directly from that github repository. If you don't trust development builds than you can simply not use them :)
-
View User Profile
-
Send Message
Posted Nov 9, 2013@BC_Programming i for one am extremely grateful that there is a jenkins on this, i plan on implementing it with my 1.6.4 Modpack immediately. @jbanto they owe us no "professionalism." that is for "professionals" who get paid for their work. these people are doing you a service by providing their spare time to maintain a plugin they did not create. dont want it? dont use it! jenkins builds are a very common fact of life for people who know what they are doing. its a collaborative tool. this plugin is maintained in a collaborative manner. minecraft is a collaborative game. people like you who hate on and mistrust devs chase off these fine people who are doing us a service from the goodness of their hearts. @BC_Programming tyvm for the devs sir keep fighting the good fight!
-
View User Profile
-
Send Message
Posted Nov 9, 2013I would like to know how to use my expiration I put just right and will not which version works? and by another version if I will lose the land? pq current versions have the folder worldconfigs my not
-
View User Profile
-
Send Message
Posted Nov 9, 2013@BC_Programming
Jesus man calm the heck down, if you want to discuss professionalism then learn how to take criticism properly. I'm just not too keen on using jar files on my server that haven't been reviewed by bukkitdev staff.
-
View User Profile
-
Send Message
Posted Nov 7, 2013@BC_Programming
Hey, thanks for all your hard work on this great plugin! I have had very few griefing incidents since I installed it. When you get the chance, could you check out my PR on GitHub?
Thanks and keep up the good work!
-
View User Profile
-
Send Message
Posted Nov 6, 2013@jbanto
Are you ever planning on becoming a reasonably decent human being, or should I just get used to dealing with this sort of abuse for working on Open Source Projects in my spare time? I don't even have to deal with that sort of nonsense when I'm getting paid, and I'm not about to do it for free either.
Just be glad there is actually somebody still maintaining this project, the fact that I've worked until dawn on GP when I have to work that day, and thus end up simply not sleeping just so users have the option to upgrade to a newer build, and yet have to suffer any messages like this is infuriating. I could have very easily 'released' new versions at certain points. I'm not a strong proponent of the Agile methodology and that would just be a case of rebranding an untested dev build as a release and letting people use it under the supposition that it was actually reasonably well tested, which would be irresponsible.
A "Release" build is not going to have some magic spell on it that makes it more stable. It's just going to be a development build with which I am content and most importantly has fleshed out documentation.
-
View User Profile
-
Send Message
Posted Nov 6, 2013Are you ever planning on releasing a stable official release version or should we just get used to updating to the latest dev build twice a week...next time add features one at a time instead of cramming a bunch of stuff in one massively unstable version and spending the next .5 year trying to debug it...
-
View User Profile
-
Send Message
Posted Nov 5, 2013@BC_Programming
Alright, so I created a "_template.yml" file since that's what was in the config alread, and deleted the world configs and after configuring the template, did a /reload. It re-created the world configs, but didn't really seem to adhere to the template, so thought I was doing something weird XD
-
View User Profile
-
Send Message
Posted Nov 5, 2013@Luficer
The template file will be used to setup world configurations that don't exist. eg, if you have a world.yml and create a template.yml (and of course set that as the template in config.yml) then new configurations will use template.yml to begin with. If a configuration already exists for a world the template file won't be used.
Ironically the Emerald Blocks being used for administrator claim visualizations was added entirely so I could figure out an issue whereby admin claims magically started to belong to a fictitious "administrator" player, instead of actually being admin claims. I left it in because it's just plain useful to be able to tell the difference at a glance.
-
View User Profile
-
Send Message
Posted Nov 5, 2013@BC_Programming
Ah, well now that it's not spamming my console and I've configured it a bit, it works well. My only other grief is that that template option in the config may not do what I think. I was assuming it'd copy that template file to newly found world configs, and unless it doesn't or I messed it up, didn't quite do that XD If that's worth looking into. Other than that, I do like the emerald borders, kudos! (Hopefully it doesn't blend into grass too much for other textures)
-
View User Profile
-
Send Message
Posted Nov 5, 2013@Luficer Darn, my mistake. So used to being able to see all the methods from inside I forget which ones are public. addClaim() is package-level so not visible outside GP. I will change that for the next build; addClaim() is about a billion times better than createClaim() overall. I'll double-check some of the other methods as well, see what might be reasonable to make public.
You can find the public repository here: https://github.com/Tux2/GriefPrevention
every time a commit is pushed, it is rebuilt and that appears auto-magically as a development build on the jenkins page. That source would be #188. I'm guessing you might have been using a different version after all and the line numbers lining up was just a coincidence. the stack trace says it occured on that line. In each case it was a call to a getter method to retrieve a ClaimBehaviourData (which encapsulates a single rule value). if that returned null, than there would not have been a NPE on that specific line, but later on when the Null value was used.
I do know when I first looked into this issue I could reproduce it, I forget the actual cause but I think it was a mistaken assignment to the wc variable that caused it to be made null. I fixed that, at least I fixed the errors I was able to initially reproduce.
There will likely be a #189 that adds in the completed Rules framework later today when I finish my work for the day. Then it's just a quick scan through the permissions to see if there are any redundancies and then the fun part of writing up some new pages.
I think I've thought out how to do that; Instead of editing the existing pages, I'll instead make new ones with similar topics for 7.8, and of course one to cover the changes between the two, the main page can be moved to "7.7 and Earlier information" and then 'replaced' with an edited version that gives the appropriate overview for 7.8. I think we can safely keep BigScary's original video- a lot has changed internally for more configurability but it typically feels very similar as a player or an op. I might make some new videos covering new features over time as well.
The API isn't really documented; I've added a bunch of events and whatnot, and some stuff is going to need JavaDocs at least. Of Course once I get around to writing 7.8 specific pages I'll cover the changes and additions to the API that have been added as well.
-
View User Profile
-
Send Message
Posted Nov 5, 2013@BC_Programming
I'll try to re-download 188 to make sure I didn't save it elsewhere when I downloaded it. And thanks for letting me know about the addClaim(), I think I missed it when looking for a like method. Not sure where the API would be documented quite yet.
Not sure about wc, but you think the method wc is using could be returning a null and perhaps the line immediately after somehow able to cope with a null value? If you had a public repo with GP on it, I could look, although I'd not nearly be familiar with the code. Good luck at any rate!
-EDIT- I redownloaded 188 and I'm not getting any more errors at any rate! Also, is addClaim() private? I've only looked through the static GriefPrevention methods and the dataStore methods, but addClaim() doesn't show up in Eclipse.
-
View User Profile
-
Send Message
Posted Nov 5, 2013@Luficer
Ah, I think I'll look into it again then. In retrospect, hope you have an overloaded method that doesn't require the claim ID, found that rather frustrating @.@ And thanks!
I think What you might find more useful if you don't have an ID and just want to make a new claim from scratch, would be to use the addClaim() method, instead. It takes a claim and essentially adds it to the datastore. just set the id to null on the claim you create, then when you call addClaim() it will generate a new ID and add it to the db store. some of the API methods are "public" but are probably best used internally only, I think createClaim() is one of these, and it's only used twice in the entire codebase (only for creating claims with a shovel...). Strangely, for resizing claims addClaim() is used.
Re the config for data: This is because, in the longer term, the idea is to have a number of implementations of datastores, and then the dataconfig will contain all those settings as well as settings to indicate migration. I'm sure it's possible for every dataStore implementation to be instantiated at startup and then discarded, if only because their constructors should deal with any config saving and loading, but that could cause problems. right now it means at startup both the flat and SQL datastores would be instantiated every startup, which could cause problems. Also if I recall the full URL setting is not required; if it's not specified or is empty, all the other settings will be used. I seem to recall it had something to do with my longer term idea to have different databases explicitly use separate data stores, not to mention (ideally) being able to construct a entirely new datastore that can completely rework the schema without having to worry about old data, as migration can be done generically across any two datastores. (In the future it might make sense once that exists to have a /migrate command, so it can be issued without changing configurations or something).
Line 596: usebehaviour = wc.getOtherExplosionBlockDamageBehaviour();
wc is null; but that is assigned near the start of the method (I just checked for one of those sneaky accidental assignments in an expression), and worse still, the line immediately after that assignment is accessing a method of wc, so by the time the NPE occurs, it should have already occured. Mystery. The other error (with ignition) seems to be the same thing, the only true cause that would point at that line would be if wc was null, but it occurs after a point where that NPE would have occured had it been null.
I'd say you might actually still be running an older version but the lines are different but still match up with the corresponding lines in older builds that caused the same issues for you. I really have no idea why it wouldn't be working for you; (I don't get any exceptions).
Annnyway, I finally got the block overrides working. Technically they worked just fine, it was adjusting them to properly read and write to the configuration that was causing me trouble.
Here is what the override sections appear like. I only have two; they let TNT be placed and destroyed in a claim by the Attacker during a siege (currently the only default), but I added in a option in this example that simply allows players to place wooden planks inside anybody's claim (but not break them). No particularly good reason for that config except for testing. This appears within the "rules" section.
Now what I need to do is change the trashblock configuration to be a section within the Place and Break Overrides, and remove the existing trash block configuration information. (I can do this 'safely' because technically the last release version didn't even have configurable trash blocks). These overrides work irrespective of the "nosurvivalbuilding" rule, so toggling that rule would also require toggling the setting in the trashblocks override(s).
Basically the override is checked first- if an entry exists for the block being placed or broken, than that behaviour information is evaluated on the spot.
I'm not 100% sure if trashblocks will fit into this particular scenario. There have been mentions that as it is it doesn't appear to work properly, but the way the trashblocks rule get's invoked is a bit strange; when nosurvivalbuildingoutsideclaims is true, it's used to determine when to allow the block to be placed; when it's not set, it's used to determine when to allow the warning message you usually get to be "denied".
-
View User Profile
-
Send Message
Posted Nov 5, 2013@BC_Programming
Ah, I think I'll look into it again then. In retrospect, hope you have an overloaded method that doesn't require the claim ID, found that rather frustrating @.@ And thanks!
Also, I took a moment to switch my GP over to mysql rather than flatfile, and noticed a few things. Firstly, the mysql settings don't seem to appear until you change the config.yml over to use mysql, which debatably could be frustrating (thinking the file mis-generated or such), and secondly, the Host and Database settings seem a bit redundant on top of the URL. Personally I'd prefer not having the URL option and just have the plugin construct it from the Host & Database options. Lastly, as it migrated data to the database, noticed a slight grammar thing:
"[GriefPrevention] There appears to be some data on the hard drive. Migrating those data to the database..."
The "those" just sounds a bit strange. "Migrating data to the database..." might sound a bit better if you care to bother with such menial things XD
Aaaaaannnnd, because murphy's law, the plugin (build #188) still doesn't like explosion / ignite events. Same error by the looks, but I'll paste it for ya regardless: http://pastebin.com/KvmB6i5A
Thanks again, sorry if I'm harrassing ya too much.
-
View User Profile
-
Send Message
Posted Nov 5, 2013@Luficer
To my recollection I've only added new overloads for createClaim, but that was quite a while ago, when I first added the API events for claims.
Basically it should be stable API wise outside of the Configuration package. from the current dev to any release.
-
View User Profile
-
Send Message
Posted Nov 4, 2013@BC_Programming
On a random note, has the API for creating a claim settled? I was hoping to implement claim support into PopulationDensity, but at the time I started that, it seems GP was still switching hands and the createClaim() method kept getting changed.