FrameProtect
Item frames, paintings, armor stands and leash knots are, for simplicity, called objects on this page.
Protect your item frames, paintings, armor stands and leash knots!
Very simple to use.
Overview | Permissions | Internationalization (Language)
How it works (commands and stuff) | Help
Features
- Protect item frames, paintings, armor stands, leash knots and end crystals (objects)
- Per player protections
- Prevent natural destruction of objects (global)
- floating objects that would get destroyed instantly by default game physics
- other such things
- Prevent destruction by mobs, unfortunate coincidences and other causes (global)
- skeletons shooting at objects
- players shooting at objects
- creepers or other explosives exploding next to objects
- piston movement
- Prevent objects from malicious players (protected objects)
- stop players stealing items from your shop item frames
- protected objects can only be destroyed by their owner (or admins)
- Stop players from placing specific objects at all (via permissions)
- Respawn disappeared objects (protected objects)
- when you have floating, protected, item frames and have to start the server without FrameProtect and they get removed by default game physics, it will respawn them when it is loaded again
- The latest version supports Minecraft 1.7.10 and up
- Players, worlds and entities are always referred to via UUID to ensure correct assignment
- Protections can be saved to an SQLite or a MySQL database
- Fine tuning via configuration file and permissions
- Pre-made translations in several languages + fully customizable in-game messages
- Customizable prefix and command
- Many configuration options
FrameProtect 2.8.7 is here!
What's new? (since 2.7)
- add 1.12+ support
- add end crystal support
- major performance improvements due to asynchronous saving
- improve respawn mechanism
- temporarily generate blocks to make sure item frames, paintings and leash knots get spawned where they normaly would not
- minimize console output (no more "Unable to respawn disappeared *" spam)
- add new translations (Japanese, Simplified Chinese, Korean)
- use bStats (bstats.org) for plugin metrics
- use spiget (spiget.org) for update checks (no more console spam with UnknownHostException)
- add option to disable error logging (writing log files)
- add option to get rid of disappeared object respawning related messages (enabled by default)
- some other fixes
Installation
Your server is not running 1.7.10 or newer? Info page for older versions of FrameProtect
If you want to import old data, please have a look at import old data.
> Make sure that your server is running at least Minecraft 1.7.10 and Java 8.
> Put FrameProtect.jar into your plugins folder and restart the server.
Import old data (from 2.5 / 2.6)
FrameProtect 2.8 has integrated data import functionality.
Click here for detailed data import instructions.
Data migration SQLite <-> MySQL
FrameProtect 2.8 has integrated data migration functionality.
Click here for detailed migration instructions.
Configuration
You can find all configuration options including description and default value in the config.yml file.
Future Features / Todo
- Add world specific configuration
- Add purge command to remove all protections of a specific player.
- Add debug commands (remove broken protections, etc.)
- Add the possibility to add members to your protections, so they can be accessed by other players.
- Readd some commands and add the option to disable direct protecting/deprotecting by clicking.
- Any requests?
Known Bugs
- See Help
Update Checking
FrameProtect checks for new versions every now and then using the spiget API (check only, no download). You can disable this by setting settings.allowUpdateCheck in config.yml to false.
Metrics
FrameProtect sends statistics about the usage to bstats.org. You can disable this for all plugins by setting the option enabled in the YourServerFolder/plugins/bStats/config.yml file to false.
View stats
@Marec54
Nice idea ;) I'll add something like this.
hello, would it be possible that you add a "cleanup" command?
I mean just be able to take away all entries that arent used anymore and that where delete either by deleting a world or worldedit?
Hello to all!
I've collected your bug reports and will now try to fix them.
Sadly, I don't have a big server to test the plugin on, so I would be very happy if some of you could test my dev builds (PM me). I don't want to publish such a buggy version again :c
@Dragon252525
Protection works on world. No lost protections server restart.
Protection works on plotworld. Lost protections server restart.
Je rencontre toujours le même problème avec la version 2.6 sous spigot 1.8. Toutes les protections cadres, tableaux, portes armures sont éffacées à chaques redémmarage . Je n'ai pas eu le choix que de remettre la version 2.5. Acunes erreurs dans les logs.
Disabling respawnDisappeared deletes all database entrys. Can this be fixed?
Plus respawnDisappeared doesn't really work too well anyway. Getting spammed on every restart with 100+ lines of it unable to respawn itemframes
The conversion took way longer than I anticipated, though also when we went to 1.8 it seems that "phantom UUIDs" have been added and so there's no way we've had even 1/3rd of this amount of people pass through my server. Nevertheless, here is what it looked like on the test server, which looked fine...
On my main server though...
I had lots of people attempting to connect during the conversion and I don't know if this is the cause, or something else. We generally do not have any players who have protected frames on our server so I wasn't thinking that the database would have needed to convert all "44,273 players" (I've generally estimated we've had roughly 10-12K pass through). Nevertheless, this error came up a handful of times during start (it was converting from a 144kb flatfile):
There was no "Update Completed!" either, just...
So my question is, if there are problems after I restart the server, is there any problem with converting it again? Also, can I copy the flatfile to the test server and convert it there, where I don't have 35,000 "Phantom UUIDs"?
Thanks!
I disabled the respawnDisappeared setting in the config because it seemed to be what was causing item frames to duplicate on nearby walls, but now for some reason players' armor stands keep losing their protections every time the server restarts. Is there going to be a fix soon for the item frame duplication?
Thanks you!
2.6 is working nicely and we had no issues with the database update. Thanks so much!
@Dragon252525
Thank you, I really appreciate you helping out and adding a local buffering to reduce the queries!
Cannot wait for that update! Have a great day.
@andris15
It does support multiworld O_o? Any errors?
@jessefjxm
I used a blob there because it's very simple to store itemstacks (for item frames/armor stands) like this. Sadly I decided to put all important information like coordinates and facing into this blob :/
If I don't change this, then at least I will implement some debug commands ingame to get the data in there.
@MarioAlessandroDevs
To avoid data loss, I decided to work without buffering and save/request data from/to the database immediately (might not have been the best idea). The connection is always hold open and with enough players there'll be very much queries I think :/
I'll add some kind of local buffering to reduce the amount of requests.
Dragon,
My console is blown up with MySQL errors with the database being locked, I talked to my Host about it and they said that I need to contact you about reducing the amount of queries that are being sent to the database or tables? Is there a way to fix my problem?
Here are the errors I'm getting: http://pastebin.com/hzkpUafx
Hope to hear back soon from you!
@Dragon252525
Noticed that newest mysql table structure uses a blob data column ,which is not that readable. Using more clear structure like old versions may help conversion issues? :)
Not support multiworld :(
@Dragon252525
Well, now I feel kind of stupid. Thanks for the help!
@Zimm3r
Which commands are you trying to use? If it's not /fp owner or /fp reload it will not work because most commands were removed in 2.6. (new protection system)
@Zimm3r
Add the frameProtect.admin permission node to the group.
Hi, For some reason I can't get your plugin to work properly. Every time I try to use commands I just keep on getting the same message. FrameProtect 2.6 by Dragon252525 /fp help I don't know if you have any ideas to why this is happening to me, I got the newest spigot version so it can't be that..
@Bastikeks
Nein, WorldGuard regionen werden zur zeit nicht unterstützt.
@externo6
I'm not sure why this happens :/ I'm trying to fix this issue.
@151baccardi
1) I think I will not add banner protection beacause FrameProtect is made for entity protection; It would be very time-consuming to make it able to protect blocks as well.
2) I might update the updater; I'll have a look at the database interaction.
@spazmonkey777 @externo6
I'm not sure why this happens :/ I'll try to improve respawning (way too much errors) It might have something to do with world loading.
@jessefjxm
1) O_o Very mysterious. There's no easy way to find protections by coordinates at the time. I'll probably add a command to find near protections or something like that.
2) I'm not sure why this happens :/ I'm trying to fix this issue.
@Mr_Simba
Sorry for this. I mentioned it in the description here: AutoProtection for armor stands doesn't work in FrameProtect 2.6 (no useful option to notice the placement of armor stands in-code)
@palindrome96
I have tested 2.6 with Spigot 1.8. Could you give me some more information? Are there any errors?
@Max633
Cela devrait fonctionner avec GroupManager (Group_Manager#Negative_Nodes). :/
@seriosbrad
In 2.6, the flat data is converted to a SQLite database. You should find some converters or other ways to do this with a google search ;) (maybe there will be an integrated function in FrameProtect to move / copy data across those two databases in the future)
Updating from 2.5 to 2.6 fail. The updater said it has successfully convert 50000+ files from old database, but actually there's only 3 records created in the database, and most of my old records disappear. Hope there's a way to fix this :(