FrameProtect - Logo



This is a plugin which allows you to protect Item Frames and Paintings (and soon Armor Stands).

IN WORK! I'm rewriting the whole code & adding protection for Armor Stands

New translations needed!
Since I'm rewriting the whole plugin, I had to make a new language file.

I would be very happy to get some new translations C:

If you're interested, download the example file (english) and edit it, then send it back to me (send me a PM and post it on pastebin/how ever you want). You can find the download and some additional information HERE.

currently translated to:

en_USEnglishEnglishby Dragon252525
de_DEGermanDeutschby Dragon252525
eu_ESBasqueEuskaraby galaipa
tr_TRTurkishTürkçeby LioXx

FUTURE FEATURES (not yet implemented)

  • armor stand protection
  • faster data loading
  • using SQLite for stroing local data
  • automatic respawning of disappeared objects


  • prevent players from knocking down item frames and paintings
  • create protected item frames and paintings
  • set the owner of protected item frames and paintings
  • stop placing multiple item frames at the same place
  • prevent players from cheating items by putting them into item frames in gamemode Creative
  • stop creepers, tnt and all the other things from destroying protectet frames/paintings
  • stop pistons from destroying protectet frames/paintings
  • autoprotect the blocks that frames/paintings are hanging on
  • MySQL support
  • permissions support
  • Minecraft 1.8 compatible



  • added: new language (Russian)
  • added: config option to en-/disable the this is not your frame/painting and you can't destroy frames/paintings messages → disable_not_yours_messages
  • fixed: block duplication bug when using mcMMO (and maybe some other plugins)

There is a bug in 1.6 / 1.7 that causes a doubling of the data on each save.

Unfortunately, the whole MySQL database has to be cleared because it may take hours to load the data and see which entries are identical (the databases may have a size of multiple millions of entries).

If you've used version 1.6 or 1.7 and you're storing your data in a MySQL database, the plugin will automatically reset your database on first start.

You have to protect all the frames and paintings again.

Sorry for that, it's my fault.

→ DOWNLOAD FrameProtect_v2.5 ←


  • Make sure your server is running at least CraftBukkit 1.4.2-R0.2 or newer
  • Put the FrameProtect.jar into your plugins folder and restart the server.


frameProtect.autoprotect.*noneThe plugin will automatically protect the frames/paintings the player places.
frameProtect.protect.*/fp protectProtect an item frame/painting.
frameProtect.protect.*/fp removeRemove the protection from an item frame/painting.*noneAllows the player to place/destroy item frames/paintings.*/fp infoAllows the player to get infos about an item frame/painting.
frameProtect.ignorecreativenoneThe player CAN add Items to frames in GM creative.
frameProtect.adminnoneAll other permissions.
frameProtect.adminnoneAllows the player to destroy any item frame/painting.
frameProtect.admin/fp langChange the language.
frameProtect.admin/fp ownerAllows the player to define the owner of a protected frame/painting.
frameProtect.admin/fp reloadReload the config.yml

instead of /fp you can also use /frameprotect

Notice: instead of .*, which means it's for frames and pictures, you can put .frame or .painting
if you for example want to allow your players to get infos about paintings but not item frames, you can give them the permission


#set the language (de/en/nl/hu/fr/tr/ru/custom)
language: en

#disable [FrameProtect] Saving data to disk... in the console
disable_consoleMessages: false

#disable the messages when you create/destroy a private frame/painting
disable_create_and_destroy_messages: false

#disables the messages when you interact with a frame/painting that isn't yours
disable_not_yours_messages: false

#if false, frames/paintings will die when there's no block behind them.
disable_natural_breaking: false

#if false frames/paintings will be destroyed if a creeper explodes near them
disable_breaking_by_mobs: true

#if true you can't place blocks at the same place as frames
stop_block_placing_over_frames: true

#if true blocks with frames/paintings on them can only be destroyed by their owners and admins
protect_blocks: true

#false = use files / true = try to use MySql
use_MySql: false

#some MySql configurations
mysql_host: localhost
mysql_port: '3306'
mysql_database: database
mysql_username: username
mysql_password: password

#Don't change this! It's to see if FrameProtect has to import files from an older FrameProtect version.
do_not_change_this: false

#true = reset the MySql database on reload (deletes all protections; doesn't do anything when you don't use MySql)
resetDataBase: false


FrameProtect is available in seven languages (German, English, Dutch, Hungarian, French, Turkish and Russian). If you want to change the language type in /fp lang <DE|EN|NL|HU|FR|TR|RU|custom>

DEGermanDeutschby Dragon252525
ENEnglishEnglishby Dragon252525
NLDutchNederlandsby DJFLuFFy_vs_joe
HUHungarianmagyarby pcroland
FRFrenchfrançaisby Nocticraft
TRTurkishTürkçeby LioXx
RURussianрусскийby Aqelius
customcustomloads the texts from the languagefileby you


  • pistons may destroy paintings
  • only the block where you placed a painting is protected (same for pistons)

If you find a bug, please write me a comment or a PM.


  • perhaps add commands
  • add mysql support for saver and faster datastorage
  • add a database clean-up
  • perhaps add support for protecting pictures
  • prevent placing blocks over item frames/paintings
  • stop pistons from destroying frames/paintings
  • multilanguage support
  • fix language.yml
  • protect blocks with protectet frames on them
  • rewrite the mysql part (very bad programmed; was my first mysql project)
  • add a feature to respawn disapeared frames
  • maybe add the possibility to protect signs


by BukkitSE (svenska)

by TheRickBoy (English)

by iArMineCraft (العربية)

by theEffix (Deutsch)


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

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

  • Avatar of Dragon252525 Dragon252525 Jan 29, 2015 at 16:02 UTC - 0 likes

    New translations needed!
    Since I'm rewriting the whole plugin, I had to make a new language file.

    I would be very happy to get some new translations C:

    If you're interested, download the example file (english) and edit it, then send it back to me (send me a PM and post it on pastebin/how ever you want). You can find the download and some additional information HERE.


  • Avatar of Dragon252525 Dragon252525 Jan 29, 2015 at 16:02 UTC - 0 likes

    @Formula350: Go

    I think the processing time depends on the amount of entities (till v2.5, newer versions will have problems with the amount of protections). 20 players might not cause >that< much events.

    The BlockExpEvent seems to be shown because BlockBreakEvent, which FrameProtect listens to, is a subclass of it.

    But thanks anyways ;)

    Last edited Jan 29, 2015 by Dragon252525
  • Avatar of Formula350 Formula350 Jan 25, 2015 at 21:13 UTC - 0 likes

    @Dragon252525: Go

    I don't know if this helps or not, but since my server generally has 20-30 people on it (not exactly "a lot" by any means), and we have a huge map (8gb just for world), I figured may as well see how much of a "hog" FrameProtect actually is... and compared to the majority of plugins I have (66 total) it certainly does not eat up that much processing time...
    (Sorry for the length, [spoiler] doesn't seem to work and I don't know any replacement in Bukkit's comments)

    /memory details:

    Users: 20
    Uptime: 1d 5hr
    TPS: 20.04
    Max-mem: 14,281MB
    Allocated: 7,248MB
    Free-mem: 1,473MB
    World: 2,863 chunks, 1,943 entites, 2,009 tiles
    Nether: 292 chunks, 104 entites, 51 tiles
    World2:  289 chunks, 1 entity, 33 tiles
    Flatland: 289 chunks, 32 entites, 24 tiles
    (End and Mount Olympus worlds are zero since no players there)

    Timings for FrameProtect (mine lists BlockExpEvent as well BTW, but I think that's a result of Merged timing report? Maybe not, I'm really ignorant on these reports for the most part lol):

    FrameProtect v2.5
        EntityDamageEvent: (and sub-classes) Time: 104004636 Count: 761940 Avg: 136
        PlayerInteractEntityEvent: Time: 48327601 Count: 19754 Avg: 2446
        BlockPlaceEvent: (and sub-classes) Time: 104508649 Count: 66823 Avg: 1563
        BlockExpEvent: (and sub-classes) Time: 49329514761 Count: 131403 Avg: 375406
        BlockPistonExtendEvent: Time: 1758951447 Count: 4372 Avg: 402321
        HangingBreakEvent: (and sub-classes) Time: 80190683 Count: 112095 Avg: 715
        HangingBreakEvent: (and sub-classes) Time: 14769004 Count: 112095 Avg: 131
        HangingPlaceEvent: Time: 163601856 Count: 86 Avg: 1902347
      Total time 51603868637 (51s)

    For comparison, a plugin that has comparatively little usage or player interaction on my server outside of the new player spawn (accounting for 4 portals) and one from Olympus to the Underworld (3 portals, the one I formed at a 90 deg angle):

    Multiverse-Portals v2.5-b713
        PluginEnableEvent: Time: 327201 Count: 16 Avg: 20450
        PlayerMoveEvent: Time: 88601231557 Count: 10020107 Avg: 8842
        PlayerTeleportEvent: Time: 347644458 Count: 126312 Avg: 2752
        PlayerInteractEvent: Time: 1873272944 Count: 445909 Avg: 4201
        PlayerPortalEvent: Time: 2659215 Count: 100 Avg: 26592
        BlockPhysicsEvent: Time: 1789366453 Count: 13366173 Avg: 133
        BlockFromToEvent: Time: 3619251853 Count: 1083608 Avg: 3340
        VehicleMoveEvent: Time: 2715525685 Count: 812444 Avg: 3342
        PlayerBucketFillEvent: Time: 12534668 Count: 235 Avg: 53339
        PlayerBucketEmptyEvent: Time: 11132871 Count: 197 Avg: 56512
      Total time 98972946905 (98s)
  • Avatar of Dragon252525 Dragon252525 Jan 25, 2015 at 18:18 UTC - 0 likes

    @Iwitrag: Go

    WorldGuard only protects item frames per WorldGuard regions while FrameProtect generates protected areas for each protected object (if enabled). This is much more expensive than just checking if the object is inside a huge region :/

    What I'm most worried about is the new backup function -> for example for armor stands, all items and poses belonging to them are cloned to the RAM. I'll have to do something about that very soon.

  • Avatar of Iwitrag Iwitrag Jan 25, 2015 at 12:38 UTC - 0 likes

    @Dragon252525: Go

    WorldGuard can protect item-frames too - why don't you just look at their code and learn? :)

  • Avatar of Dragon252525 Dragon252525 Jan 25, 2015 at 11:17 UTC - 0 likes

    @chistian95: Go

    The plugin is done so far. I'm now testing it and writing the Updater for older versions. It will hopefully be released this week.

    @Iwitrag: Go

    I know that it takes lot of resources :/ But FrameProtect doesn't even capture the BlockExpEvent O_o

    I'm trying to make it run smoother but I can't realy test it out since I've no big server to try it out on. Some options like piston protection and block protection will be very expensive to calculate when you have many many protections around so I added some config options to turn those functions off. Sadly it has to load all protections to the RAM and I don't realy know else I could do this... Now when I added a backup functon it will use even more RAM (much more I guess). I've to find a solution for this.

  • Avatar of Iwitrag Iwitrag Jan 23, 2015 at 19:38 UTC - 0 likes

    This plugin takes a lot of resources. We have 74 plugins and FrameProtect 2.5 takes 35% of all computing time. BlockExpEvent is the problem.

    Last edited Jan 24, 2015 by Iwitrag
  • Avatar of chistian95 chistian95 Jan 22, 2015 at 10:26 UTC - 0 likes

    Any release date?

  • Avatar of Dragon252525 Dragon252525 Jan 10, 2015 at 13:58 UTC - 0 likes

    @syberia97: Go

    Could you please be more specific? Do you get any errors?

  • Avatar of syberia97 syberia97 Jan 10, 2015 at 12:51 UTC - 0 likes

    not working 1.8 ....


Date created
Nov 04, 2012
Last update
Jan 26, 2014
Development stage
  • deDE
  • enUS
  • frFR
  • ruRU
All Rights Reserved
Curse link
Recent files