ProtectionStones [Updated for 1.13 - 1.17 + WG7] 2.8.5

The easiest grief prevention method that players will enjoy!

  1. EspiDev
    Tested Minecraft Versions:
    • 1.13
    • 1.14
    • 1.15
    • 1.16
    • 1.17
    Source Code:
    AxelDios (Original), Vik1395 (2015-2016), Dragoboss (2016-2017), Jerzean (2018), EspiDev (2018+)

    Get support for this plugin on the M.O.S.S. Discord!

    ProtectionStones does not officially support negative y values yet (for those using datapacks). You may choose to get early access builds for native 1.17 support here:

    Ever needed an easy, yet powerful way to prevent grief, and protect a certain area?

    This plugin allows players to protect land using a block that they place down. It creates a WorldGuard region at a set radius (configurable) around where the block is placed. The plugin also allows players to add and remove people to the region, as well as set flags (defined in the config).

    • WorldGuard 7+
    • WorldEdit 7+
    • Vault (Optional)
    • PlaceholderAPI (Optional)
    • Spigot 1.13.2+
    Appreciate my work?
    Donations are appreciated! :)

    1.8 - 1.12 (NOT MAINTAINED):
    I did port one version of ProtectionStones backwards, but I do not provide support or updates for this version:

    Make sure you first have the requirements listed above.

    Simply add the plugin to the plugins folder, and it will generate the default configuration.

    By default, no permissions are given to players, so you have to add them explicitly.

    Adding new blocks:
    To add new protection blocks, go into plugins/ProtectionStones/blocks, and copy and paste the default block1.toml file and rename it (ex. block2.toml). Then, you have to change the "type" and "alias" fields in the new block config, since there cannot be duplicates.

    Configuring flags:
    Flags allow for customization of region behaviour. ProtectionStones uses WorldGuard flags, meaning that WorldGuard is actually doing the protecting, not ProtectionStones. You can view the list of WorldGuard flags here.

    It is also possible to use other plugins that add flags to WorldGuard, such as WorldGuard Extra Flags and use them in ProtectionStones.

    Other Recommendations:
    WorldGuard by default prevents hoppers from going between regions. I recommend setting "ignore-hopper-item-move-events" in WorldGuard's config to false to fix this.

    If you want to protect against water and lava flow into regions, you can set "high-frequency-flags" and "protect-against-liquid-flow" to true in WorldGuard's config.

    View the WorldGuard config here.

    Default Config Files:
    View the default configuration here.

    View user contributed translations here.
    Contact me on the Discord, or file a GitHub issue if you would like to contribute your translation to the page! Thank you!

    Get a protection block with the /ps get command. Simply placing it down will create a protection region centered around the block. Breaking the block will remove the region.

    View the permission list here.
    View the recommended permissions to give for commands here.

    View the list of commands here.

    ProtectionStones has support for PlaceholderAPI! View them here.

    When I add a new block config, an error occurs!
    Read the error. Most likely you made a configuration mistake, you can read the TOML spec here, or ask me. Another known issue is that configs made in Notepad (Windows) cause issues with the plugin. Please use a better text editor (ex. Notepad++) for the time being, while I investigate ways to mitigate this.

    When I get the protection block from the creative inventory, it doesn't work (nothing happens when I place it)!
    Since v2.0.0, the config options "restrict-obtaining" is enabled by default. This restricts obtaining the protectionstones to just /ps get and /ps give (and plugins that use the API), since they attach NBT data to the block. That means that when the block is obtained through natural means, it won't work as a protection block. You can set "restrict-obtaining to false to negate this behaviour.

    How can I add protection blocks in a kit?
    Since v2.0.0, the config options "restrict-obtaining" is enabled by default. This restricts obtaining the protectionstones to just /ps get and /ps give (and plugins that use the API), since they attach NBT data to the block. You need to add a command (/ps give) to give the block to the player in the kit. For EssentialsX, check the kit section here.

    How can I sell protection blocks in a shop?
    There are many ways to sell protection blocks, with the easiest being setting a price on /ps get (requires Vault, configured in the block config). You can also use external plugins to sell the protection block, either through running a command (/ps give) or giving an item that was obtained through /ps get or /ps give. Known plugins to work are: ShopChest, ChestCommands.

    Why don't players see the region merge menu?
    Be sure to give players the protectionstones.merge permission.

    Why do some flags apply to members of the region as well? (ex. block-break deny)
    By default flags apply to everyone, including members of the region. You have to use region groups (using -g) to change this (ex. set the group to apply to only nonmembers). You can read about this here.

    How do I change the block type of a region after players have already created regions with it?
    You can use the command /ps admin changeblock [world] [fromblock] [toblock] to do this. Create a new config (block.toml file) in the blocks folder with the changed block type, while keeping the old one still loaded. Do /ps reload, and run the command to do the conversion. After it completes, you can remove the block config with the old type.

    Why does [x] flag not work?
    Flags are handled by WorldGuard, and some of their behaviours may not be what you expect. You can read more about WorldGuard flags here:

    How can I allow PS regions to overlap or be created inside manually created WorldGuard regions?
    You can use the concept of priorities in WorldGuard, and set the manually created WG region to a lower priority than the ProtectionStones regions.

    I found a bug! How do I get it fixed?
    Please file this issue on either GitHub, or post it on the discussion page.

    I want a new feature!
    Please file this issue on either GitHub, or post it on the discussion page. The feature may not be aligned with the goals of the plugin, so it might also be worth making another plugin that uses the developer API instead.

    Is there a developer API?
    Yes there is! It still is in a beta stage though right now, so methods are bound to change. You can see the wiki page here.



    Usage Statistics:


    This plugin is based off of the original ProtectionStones.

    Migrating from older versions of ProtectionStones (<2.x.x)
    The transition from older versions should be seamless, so just drag the plugin in to the plugins folder and enjoy! The plugin will automatically update your configs and regions.

    You can find the original plugin here:

    Graphics were made by Seshpenguin, thank you!
    IamSeverus, Emma94, Diclo and 9 others like this.

Recent Reviews

  1. JugadorNuevo17
    Version: 2.8.5
    [00:11:44 INFO]: adriangmns issued server command: /ps reload
    [00:11:44 INFO]: [ProtectionStones] Protection Stone Blocks:
    [00:11:44 INFO]: [ProtectionStones] - IRON_ORE (Hierro)
    [00:11:44 INFO]: [ProtectionStones] - EMERALD_ORE (64)
    [00:11:44 ERROR]: null
    org.bukkit.command.CommandException: Unhandled exception executing 'ps reload' in dev.espi.protectionstones.PSCommand(ps)
    at org.bukkit.command.SimpleCommandMap.dispatch( ~[patched.jar:git-PaperSpigot-"4c7641d"]
    at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand( ~[patched.jar:git-PaperSpigot-"4c7641d"]
    at net.minecraft.server.v1_8_R3.PlayerConnection.handleCommand( [patched.jar:git-PaperSpigot-"4c7641d"]
    at net.minecraft.server.v1_8_R3.PlayerConnection.a( [patched.jar:git-PaperSpigot-"4c7641d"]
    at net.minecraft.server.v1_8_R3.PacketPlayInChat.a( [patched.jar:git-PaperSpigot-"4c7641d"]
    at net.minecraft.server.v1_8_R3.PacketPlayInChat.a( [patched.jar:git-PaperSpigot-"4c7641d"]
    at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$ [patched.jar:git-PaperSpigot-"4c7641d"]
    at java.util.concurrent.Executors$ [?:1.8.0_282]
    at [?:1.8.0_282]
    at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [patched.jar:git-PaperSpigot-"4c7641d"]
    at net.minecraft.server.v1_8_R3.MinecraftServer.B( [patched.jar:git-PaperSpigot-"4c7641d"]
    at net.minecraft.server.v1_8_R3.DedicatedServer.B( [patched.jar:git-PaperSpigot-"4c7641d"]
    at net.minecraft.server.v1_8_R3.MinecraftServer.A( [patched.jar:git-PaperSpigot-"4c7641d"]
    at [patched.jar:git-PaperSpigot-"4c7641d"]
    at [?:1.8.0_282]
    Caused by: org.bukkit.plugin.IllegalPluginAccessException: Plugin attempted to register task while disabled
    at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftScheduler.validate( ~[patched.jar:git-PaperSpigot-"4c7641d"]
    at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftScheduler.runTaskTimerAsynchronously( ~[patched.jar:git-PaperSpigot-"4c7641d"]
    at dev.espi.protectionstones.PSEconomy.<init>( ~[?:?]
    at dev.espi.protectionstones.ProtectionStones.loadConfig( ~[?:?]
    at dev.espi.protectionstones.commands.ArgReload.executeArgument( ~[?:?]
    at dev.espi.protectionstones.PSCommand.execute( ~[?:?]
    at org.bukkit.command.SimpleCommandMap.dispatch( ~[patched.jar:git-PaperSpigot-"4c7641d"]
    ... 14 more
  2. GreenMasks
    Version: 2.8.4
    what can i say, this plugin is just amaziiing! keep on with the good work dude! i will always use this plugin for my servers, i'm a minecraft server owner since 2017, found your plugin on December 2018 and never switched to another!
    1. EspiDev
      Author's Response
      thank you :)
  3. Naive4901
    Version: 2.8.4
    1.17 is awesome! I hope it can be developed to run without other dependencies. Can the author find a Chinese translation, let the configuration file be Chinese
    1. EspiDev
      Author's Response
      If anyone contributes a Chinese translation I can add it to the wiki.
  4. Mapacheeeedou
    Version: 2.8.3
    Nice plugin and the support is the best, they're so friendly and cool!!! 100/100
  5. Creper132
    Version: 2.8.3
    I love this plugin im using this on my server but it works with fawe without any problems?
  6. DjMatii
    Version: 2.8.3
    I love this plugin. I would to see teleportation to friends cuboid as feature in future.
    1. EspiDev
      Author's Response
      Thanks! please file a github issue for feature requests.
  7. grdfjygfg
    Version: 2.8.3
    Плагин хороший, но хотелось бы поддержку 1.12.2 если бы была эта версия он бы стал популярнее в раза 2 минимум
    1. EspiDev
      Author's Response
      i've already provided a download to an unsupported 1.8-1.12 version on the page, in general though there aren't many people using old minecraft versions...
  8. dinoboss2001
    Version: 2.8.3
    add suport 1.7.10? and nms support para que todo funcione bien en el servidor agradezco si lo piensa.
    1. EspiDev
      Author's Response
      i don't have time to support 1.7.10
  9. dani626
    Version: 2.8.1
    good plugin

    add %player% variable to use in display_name = " " and lore = " " or the %player_name% variable from placeholder api
    from google translator
    1. EspiDev
      Author's Response
      please file an issue for this on github, i can't keep track of it here
  10. Oskicz25
    Version: 2.8.0
    Hi this plugin is sooo good but i want to do a anty pvp cuboid by this plugin can i do somethink to enable in block2 building and destroing? That players place normal cuboid and if they have vip a antypvp cuboid is there any way to do this?
    1. EspiDev
      Author's Response
      please ask for support on the discord server, i can't properly respond here