FrameProtect - Logo

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 | How it works (commands and stuff) | Permissions | Internationalization

Your server is not running 1.7.10 or newer? Info page for older versions of FrameProtect

FrameProtect 2.7 is here!

What's new?

  • add option "protectFromProjectile" for disabling "when I shoot at an itemframe, the item inside will drop"
  • add 1.7.10 support
  • add 1.8+ support
  • add leash knot protection
  • add autoprotection for armor stands
  • add "/fp import" command enabling manual import of data from version 2.5 and 2.6
  • add "/fp we takeown" and "/fp we remove" commands
  • add "/fp transfer" command giving non-admin players the ability to transfer their protections to other players (permission "frameProtect.transfer")
  • add "/fp near" command allowing you to find near protections
  • allow command customization (change /fp to whatever you want)
  • allow prefix customization
  • save worlds by UUID
  • fix 'objects are respawned even though they still exist'
  • fix error with '*' selector for multi object type permissions
  • some more things


  • Protect item frames, paintings, armor stands and leash knots
  • Per player protections
  • Respawn disappeared protected objects
  • Save objects from natural destruction (e.g. paintings hanging in air)
  • Save objects from destruction by mobs (e.g. creepers, skeletons)
  • Save protected objects from destruction by piston movement
  • MySQL support
  • Permissions support
  • Customizable messages
  • Customizable command
  • Customizable prefix
  • Many configuration options


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.
> Put FrameProtect.jar into your plugins folder and restart the server.

Import old data

FrameProtect 2.7 contains integrated data migration functionality.

An import does not delete or overwrite the original data.

From 2.5
1) If you want to import your old config.yml, rename it to config.old else delete it
2) Put FrameProtect.jar into your plugins folder and restart the server.
3) If you want to use a MySQL database, update the MySQL part of the new config.yml and reload FrameProtect.

1) If you want to import your old config.yml, execute /fp import 2.5 <mysql|file> config.old.
2) Else, execute /fp import 2.5 <mysql|file>
Your old protections should be imported now.
Edited language files must be updated manually.

1) You can now delete config.old, language.yml and the saves folder.
2) If you imported data from a MySQL database, you can drop the tables fp_frames and fp_paintings.

From 2.6
1) Put FrameProtect.jar into your plugins folder and restart the server.
2) Delete the language folder. If you have a custom language file, back it up before.
3) Set the database type you want to use (config.yml) and reload FrameProtect.

1) Execute /fp import 2.6 <mysql|slite>
Your old protections should be imported now.
Edited language files must be updated manually.

1) You can now delete database.db.
2) If you imported data from a MySQL database, you can drop the tables fp_protection and fp_player (not to confuse with the new tables fp_protections and fp_players).


You can find all configuration options including description and default value in the config.yml file.


  • Add debug commands (remove broken protections, etc.)
  • Readd some commands and add the option to disable direct protecting/deprotecting by clicking.
  • Any requests?

Known Bugs

  • Please complain

Update Checking

FrameProtect checks for new versions every now and then using the buckget API (check only, no download). You can disable this by setting settings.allowUpdateCheck in config.yml to false.


FrameProtect sends statistics about the usage to You can disable this by setting the option opt-out in the YourServerFolder/plugins/PluginMetrics/config.yml file to true.
FrameProtect - MCStats

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

  • Avatar of StillSwingin StillSwingin Apr 08, 2015 at 17:39 UTC - 0 likes

    I'm running online mode true.

    Also each time I reload or reboot the server I get this error:

    I tried disabling respawnDisappeared, but it kept showing.

    It's a shame it had worked until 2.6, any way of updating to 1.8 meanwhile it doesn't get solved?


  • Avatar of Dragon252525 Dragon252525 Apr 08, 2015 at 11:49 UTC - 0 likes

    @dedina3: Go

    Ok thanks. I'm happy that at least the UUIDs of players seem to be stable.

    Does anyone else than @MarioAlessandroDevs: Go have problems with the constantly open MySQL connection? I realized that to add buffering for this does not realy solve the problem of too many queries (maybe there are ways to do it better but I'm not that familiar to MySQL in Java). Also it's a lot of work and I'd have to modify the existing database to get it work correctly.

    I recommend to use SQLite instead if MySQL's not working for you.


  • Avatar of dedina3 dedina3 Apr 08, 2015 at 08:24 UTC - 0 likes


    I've been editing some config for another plugin and I had to do server-restart. After the restart one player told me that his clocks (in item frame) got duplicated. Few minutes later, he said that also his paintings got duplicated.

    If it's relevant, i'm running online mode - false, UUIDS of players does not change.

  • Avatar of Dragon252525 Dragon252525 Apr 08, 2015 at 01:04 UTC - 0 likes

    @Mr_Simba: Go

    I don't know why, but on my test servers, the UUIDs were still the same after weeks and dozens of reboots :/

    At this time, the only does-this-protection-exist check is the comparison of the UUIDs. I think I'll replace that with specifc checks. For example "does the picture at this specific location display the same image as stored in the database". It's also possible to check if the items in item frames and armor stands are still the same. So I think, it should work good enough for now.

    Why they respawned the wrong way arround or on the back of the block? I have no clue... shouldn't happen. Hope I'll find a solution for this.

    Thanks for this detailed answer. It really helps me ;)

  • Avatar of Mr_Simba Mr_Simba Apr 08, 2015 at 00:35 UTC - 0 likes

    @Dragon252525: Go

    It wouldn't surprise me if entity UUIDs change over time, the server may redistribute them over time as the entities are loaded and unloaded, as entity UUIDs generally don't need to be permanent. I think the positional check thing you proposed sounds like a good solution.

    Also (if this makes any sense in regards to the plugin) make the position check less specific for respawnDisappeared. Item frames keep duplicating because it thinks they've disappeared even though they're still there, which I assume is either because it's checking a very very specific position for where the item frame was previously, or because whatever thing checks for the item frames is checking the wrong block (item frames tend to duplicate onto adjacent walls or onto the back of chests they're placed on).

    For now, I wouldn't worry about having support for multiple entities in the same location. As you said, that's fairly uncommon. As for #2 (objects being moved while the plugin is disabled), I don't think it's very possible to expect you to account for that.

    My server is in online mode. Player UUIDs will never change, so that wouldn't be your problem. I'm fairly positive it's related to the respawnDisappeared setting. When I had it on, item frames duplicated. When I have it off, protections disappear (meaning it doesn't find the entity there, but instead of spawning a new duplicate one, it just deletes the protection).

    Last edited Apr 08, 2015 by Mr_Simba

    No nudity, even really good nudity!

  • Avatar of Dragon252525 Dragon252525 Apr 07, 2015 at 22:02 UTC - 0 likes

    @Mr_Simba: Go

    @AdamTragedy: Go

    @StillSwingin: Go

    Thanks for reporting. FrameProtect's using the UUIDs of the objects to recognize them. Sadly , it seems that some servers (if not all) don't keep those forever :/

    Does this happen only to item frames or is this a general error?

    What I can do about the duplication bug is checking if there's already an object on the location where the lost UUID was and if so, update the UUID instead of spawning in a new object.
    The problem with this is:

    1. There will be problems with multiple objects on the same location (well, it's not common to do this).
    2. If objects are moved while the plugin is disabled, it will not be able to recognize them.

    (Well, at least better than the current situation...)

    I'm not sure if thats even the problem. It would need the server to restart or at least the plugin to reload to randomly loose protections...
    Are your servers running in online or offline mode? If the server-side UUID of a player changes, the protection would remain ._.

    I'm confused...

    Last edited Apr 07, 2015 by Dragon252525
  • Avatar of StillSwingin StillSwingin Apr 07, 2015 at 21:22 UTC - 0 likes

    Same problem as @AdamTragedy and @Mr_Simba

  • Avatar of AdamTragedy AdamTragedy Apr 07, 2015 at 14:41 UTC - 0 likes

    @Mr_Simba: Go

    Yup. People found out on my server, right away. So I disabled protections just auto-falloff about 3 hours after placed.

  • Avatar of Mr_Simba Mr_Simba Apr 06, 2015 at 23:58 UTC - 0 likes

    @AdamTragedy: Go

    I've found that started happening when I disabled respawnDisappeared in my settings. The problem is if that setting is enabled, it allows for item frames (and the items withint them) to be duplicated in certain situations. This becomes very abusable if players find out about it.

  • Avatar of AdamTragedy AdamTragedy Apr 06, 2015 at 14:11 UTC - 0 likes

    My players will randomly complain that upon protecting their itemframes, logging off....coming back at a later time.....that their itemframes are unprotected. Here is a quote from a MOD:

    "I've encountered a bug with the Frame Protect plugin. I protected all the frames in my shop. Logged off. Logged back in a few hours later and none of the item frames were protected. Happened again today. Protected all the item frames, even went around 3 times to make sure they were all protected. Logged off and logged back in hours later and they were unprotected again. And someone had hit my one of a kind sword off the wall and could not reach it because it went behind the shop and despawned."

    Here is my config:

    Anything I can change?


Date created
Nov 04, 2012
Last update
Jul 14, 2016
Development stage
  • deDE
  • enUS
  • esES
  • frFR
  • ruRU
  • zhTW
All Rights Reserved
Curse link
Recent files