The most full featured and flexible self-service protection system in Bukkit. Highly configurable, MCPC+ compatible.
Development builds of this project can be acquired at the provided continuous integration server. These builds have not been approved by the BukkitDev staff. Use them at your own risk.
These pre-configured fields are just one of the ways you can configure PreciousStones. Use them all, use just the ones you like, or create your own.
You can choose from over 150 flags with varied functionality to configure your own force fields unique to your server that do exactly what you need them to do. From protection to potion effects to confiscation of items to rollback abilities to teleportation, the possibilities are endless.
They come with full permissions and limiting functionality to limit the distribution of the fields, per field type. Use them as a reward for donators, or sell them outright, they are a great way to increase funding for your server. Your players will love them and come back for more!
Development builds of this project can be acquired at the provided continuous integration server. These builds have not been approved by the BukkitDev staff. Use them at your own risk.
Like the plugin? Please consider donating!
PreciousStones Basics Tutorial
Showcase of the effect of each of the default stones.
Demonstration of various field types (using custom build stones)
Review of PreciousStones that goes through all the default stones.
PreciousStones has two types of protections unbreakable blocks and field blocks:
These are protection for the block itself, like OwnBlocks. The blocks on the unbreakable-blocks list will not be breakable by anyone but the owner, they will belong to whomever placed them. They can be used as building material i.e. ungriefable city walls, impenetrable vaults, etc. or protect block types from theft i.e. note blocks, fences, or anything that you want to be grief proof. You can right-click on the block with a tool in hand to view who owns it.
Note: The block types you place on this list cannot be added to the fields list.
Fields are blocks that project a force-field outwards onto their surroundings. They can have various different properties which can be added with field flags. The field's radius extends from the cube itself outwards. ( i.e. For a radius of 3 the resulting force field would measure 7x7x7, you can optionally add a custom height to override the height calculated from the radius to whatever height you choose)
These are the different properties that make up a field. A title and a block type are required, the rest can be any number of a variety of different field flags.
Here is an excerpt from the config showing how the City Protection field is defined:
- title: City Protection
This is how I chose to make the City Protection field, you can ease it, rename it, change the block type, change the size of it, or remove and add on any number of flags. An explanation of what each of these flags mean can be found at the wiki. You can use these to modify the defaults or create your own custom fields.
Right clicking on any one of your fields with one of the tools configured in the tool-items list in the config.yml will show you specific information for that field. Right clicking on fields that don't belong to you will only tell you who the owner of the field is. You can configure for all fields to display the full info by toggling the public-block-details setting to true. Right clicking on a block in the ground with one of the tool-items will tell you if the block is protected or not.
You can visualize what one of your fields looks like by standing inside of it and typing /ps visualize, this will surround the field with glass blocks (placed inside of the field). This visualization is sent to the player's client directly and is not visible by any other player on the server. Once the player moves, the visualization will be removed to prevent people from interacting with it. This will help you visually see what is being protected.
Cuboid fields are the next generation of fields. You can make a field into a cuboid field by giving it the cuboid flag. Cuboid fields behave identical to the normal fields at first sight. Like a normal field they can be placed down to create a field around the radius of the block based on the configured size. But internally they are completely different animals, the shape of cuboid fields can be redefined.
Redefining a Cuboid / Drawing Mode
Cuboid fields can be placed in drawing mode by [sneak-left-click] with a tool. During drawing mode you can [left-click] on blocks around the area to grow the protection cuboid. [right-click] aiming at any direction will expand the cuboid one block in that direction. [sneak-right-click] anywhere will undo your last selection if you made a mistake. And to finish and close the cuboid, [sneak-left-click] again anywhere, or simply click on the field block.
Technically you only required to select two blocks, one from each opposite corner of the cuboid in order to form the cuboid. But we all know that that is almost never how we want to define a cuboid. You have a specific content in mind that you want to protect for example a house with underground area, or a floating platform in mid air, the valley that you can see down below. Traditional methods of cuboid definition require you to dig down into some imagined corner to select the bottom corner block, or pile up blocks to select the top corner block. In cuboid drawing mode, rather than being forced to select opposite corners, you select the actual blocks you want protected from a distance by just left clicking in their direction, and afterwards a cuboid will be created that is the smallest shape that can wrap around all selected blocks.
When you place a field into drawing mode its configured height and radius are converted into volume and given to the player as the available blocks his new field shape can cover. For example field of radius 5 (which is 11x11x11) will be converted into block volume, so 11x11x11 = 1331 blocks. You will then be able to redefine the cuboid using the available volume.
If the cuboid has the custom-volume flag set, then that volume will be used instead overriding the volume calculated from the radius/height. This is good if you want players to be able to place down a small field, with say radius 0, and then be able to redefine it into a much larger field. Good for plots and such that need to be placed next to fields owned by others without causing conflicts.
While in drawing mode you can increase the available volume of a field by placing more of the same type of fields down. Each one you place down will add on its volume to the parent. This way you will be able to create immense fields at any size. When you close the cuboid, all the fields you placed down will turn into a group. Right clicking on any of them will give you the same information and breaking one of the blocks in the group will break them all.
While in drawing mode you can place down different field types down and their field flags will be imported to the cube being drawn. This way you can mix the effects of several fields into one. What fields can mix with what fields can be configured by putting your fields into "mixing groups" with the mixing-group flag, fields in the same groups will be able to mix with each other. You will want to put fields of similar size and "cost" in the same groups.
Note: Fields without a mixing group will not be mixable
Note: Only the field flags are imported, no extra volume is added to the cuboid.
Fields vs Cuboids
Cuboid fields are saved on a separate database table (pstone_cuboids) than fields (pstone_fields). Due to this changing existing fields that people are already using into cuboids or viceversa is a bad idea.
Grief revert fields are just what they sound like. They are personal BigBrother fields. They will let you roll back any grief that was done within the field. These fields will record all block breaks by players who are not allowed into the field and all block breaks from explosions in the database. The blocks that are broken and recorded will not drop, they will just disappear. There are two modes to these blocks - you can have them rollback the grief on command when right clicking on them, or you can have them roll back the grief at a predefined interval with the grief-revert-interval' flag. You can define a list of blocks that you don't want to be revertible and will be stealable (drop when broken) by adding them to the grief-revert.black-list in the config.
Any block with the snitch flag will create a field which will keep a record of player's activities within the field. It will keep a record of their entry, any block breaks and placements, and any block usage inside the field. You can see this list by right-clicking on the block or typing /ps snitch. You can clear the list at any time by issuing the command /ps snitch clear.
This will allow your users to place a block and instantly create an entire forest of trees and grass around it. The block must be placed on a fertile block to activate. The types of blocks that are considered fertile can be specified with the the fertile-blocks flag, these blocks will be terraformed into grass where plant-life can grow. Once the forester has accomplished its task, the activator block itself will turn into a tree. The amount of trees that have the potential to grow can be configurable with the tree-count flag, you can choose what kind of trees to grow with the tree-types flag, and what kind of shubs to grow with the shrub-types flag. The amount of time it will take to grow the whole forest can be set with the grow-time flag.
This will let you build in one place, and translocate that build somewhere else. It's basically the same functionality as the worldedit commands, but this will not let you duplicate items, and can be handed out to your players in a controlled way.
How it works
You place your translocation field, adjust the cuboid to your liking, and then you name the field with /ps setname. Now it is ready to record.
It will record all changes to the area inside the field. Once you are done building inside the area right click or break the block to store everything inside the field. This will remove all the blocks recorded from the world and copy them to the database, and the translocator will disable itself ready for the move.
Break the field and take it to its destination, place it down, name it the same name you named it before and right click on it to revert everything it had recorded onto the new location. You then use the "/ps translocation unlink" command to unlink the blocks from the translocator (so that when you break it the blocks stay where they are)
You can have many translocation projects saved with the same block. The projects are recorded by name. So if you name your block "house" and build a house and store it (disable the block). Then you can rename the block "tree", and build a tree. Then you can walk over to your destination and name your block "house" and spawn your house. Then you can name your block "tree" and spawn your tree. In reality you can have an infinite number of stored projects with different names, and pull them up whenever you need them using the same block. There is no limit to how long you can keep something stored. (Note: PS purges all player data belonging to players inactive more than 20 days on the server, this includes saved translocations)
The translocator can also be used as a toggle for blocks. For example you can place one down and build a false wall, then hook up redstone and a lever to the translocator and you can make that wall appear and disappear with the flip of a switch. You can build toggable bridges, portable houses, etc.
For example say you want to move your base to the edge of the map:
- Place translocator pstone near your base
- Reshape cuboid to fit around you base and close cuboid
- Point at the pstone
- /ps setname base
- /ps translocation import (imports everything inside the field into the databsae)
- /ps translocation delete 2 3 31 37 38 (remove the grass/dirt/flowers from the imported blocks, don't wanna take the ground with us)
- Right click on the field block with a tool to store everything (you will notice everything you had selected is now gone from the world)
- Break the pstone and take it to the new location of your base
- Place translocator pstone
- Point at the pstone
- /ps setname base (It will tell you you have x amount of blocks stored)
- Right click on the pstone to spawn your base in front of your eyes.
- Break the pstone and you're done.
You can allow people into your fields using the allow, allowall, remove, and removeall commands. The allowall and removeall commands allow or remove the players into all of your fields. While the allow and remove command only work for the fields you are either pointing at or standing in. If your fields are overlapped, then standing in one will allow/remove players from all overlapped fields.
Here is an example of what you can allow:
|/ps allow [player]||allows a player into your field(s)|
|/ps allow c:[tag]||allows a clan into your field(s)|
|/ps allow g:[group]||allowed a group into your field(s)|
|/ps allow *||allows everyone into your field(s)|
So for example you set up a launcher field and want to allow several people to use it you can do this:
/ps allow c:toads /ps allow g:admins /ps allow rabbleroost /ps allow willhicks
Or you can do them all in one line as well:
/ps allow c:toads g:admins rabbleroost willhicks
Clans are available through
Selling and Renting
Players can now rent and sell their fields with the new rentable, shareable, and buyable flags!
- amount (item/block) or amount currency
- rent period
Renting out a city lot
<sub>(30 gold ingots for 6 days use)</sub>
- 30 (266)
Charging for your public GodStone use
<sub>(50 economy money for 20 minutes use, many players can rent it at the same time)</sub>
- 50 rupees
Selling a house
<sub>(costs 15 diamond blocks to take ownership)</sub>
- 15 (57)
Renting - The [Rent] tag gives you allow access to the field for the specific amount of time. The player can mine, change blocks and do anything except modify or remove the field. The owner will still have rights to the area, but he will not be able to modify the sign, break the block, disable it, change its name, change its radius, or enter drawing mode. After you rent the field it's [Rent] tag will turn RED signifying that its occupied and a countdown will appear on the last line of the sign. (Renting only works for fields with the rentable flag)
Sharing - The [Shared] tag allows multiple players to rent the same field, used for public areas, mines, pay per use launchers, Miner's haste, godstone and what not. It's tag will turn GOLD when at least one person is renting the field. (Sharing only works for fields with the shareable flag)
Buying - The [Buy] tag changes the owner of the block to a new owner. First the player who wants to purchase the land/block must right-click on the sign to make the payment. The tag will turn RED and his name will be displayed on the last line of the sign. Money will be taken from him and he will be added to the allow list on the field so he can start building on it, the transaction completes when the new owner right clicks on the sign to take his payment. He is removed as owner of the field and the new owner set as the proper owner of the field.(Buying only works for fields with the buyable flag)
Price - Can either be items or economy money. If you want items then you use two numbers, the amount and the item/block id in parenthesis. (i.e. 10 (266) means ten gold ingots). If you want to use economy money, then use a number with any text you want after it without parenthesis (i.e. 10 credits)
Rent period - This can be in weeks, days, hours, minutes, seconds or a combination of up to three (e.g. 5w) (e.g. 5h 30m 5s). This only applies to rent or shared fields.
Collecting rent - The owner of the fields must right click on the sign in order to collect his payment, the payments will accumulate until he does so.
|Right-Click||Purchases one rent period (can click multiple times to purchase more)|
|Left-Click||Will show the field details and will visualize an outline of the field to get a good view of the area it covers. If it is being occupied, it will show who the tenant is and how long they have left on their rent.|
|Shift-Right-Click||Abandons your current rent. (no money back)|
|Right-Click||Collect the rent, collect the money for a purchased field, or list out the tenants on the field.|
Plots inside fields
Several changes in v8 now allow fields inside fields. Something which was just not possible with PS before. Removed is the old overlapping system. You will notice the commands will no longer allow you to do operations on overlapped fields. (Though you can still overlap fields of the same name and type so that welcome and farewell messages only show once).
You can now have, for example, huge Town fields which can have plot fields inside of them that your players can place themselves. One of the changes that makes this possible is that whenever an event is fired (block break, place, fire ignite, etc) in an area with several overlapping fields, the smallest one always takes precedence and is the only one that is gonna be obeyed. So for example the Town may have streets and town owned areas that will follow the rules of the Town field. But the fields inside of it, will have their own flags which can vary completely from the Town field's flags. The players inside the plot fields will be subject to both the town's fields and the plots fields, but if both have for example prevent-place flags, then the one in the plot will take precedence (which can have people allowed on it etc.). If you want the plots to completely override the area they cover and remove the parent field's flags from the area completely, add the "plot" flag to the field.
Plots can be multi-leveled, for example you will be able to walk into a city and and see the city's welcome message, and walk into a town inside of it and see the town's welcome message, and walk into someones plot inside of that and see the plot's welcome message, and inside each level you will be subject to all the flags of the levels above along with the inner one, with the smallest field always taking precedence.
As you know, if you try to place a field that overlaps someone elses field, you will see an error message telling you that you cannot place a field there. This is in place, obviously, so you can't encroach on someone elses land. Also you know if someone allows you into their field, you can place a field nearby that can overlap their field or even be inside of it. In earlier versions of PS this caused problems. Your friend overlaps one of your fields with a new field they added, and they forgot to allow you on it, and so now you no longer have control of a chunk your land.
This is a thing of the past with two new changes in v8. The first is automatic allowing, if you allow your friend on one of your fields, and he places a field nearby overlapping yours, PS will automatically allow you into his field. This will prevent the problem of you no longer being in control of your land. You will see that plots will just work. More so, if that friend one day decides he doesn't like you and wants to remove you from his allowed lists he will not be able to remove you from that specific field that is overlapping yours thanks to the conflict-of-interest protections. His only recourse will be to remove the field altogether. You can feel safe that you will always be in control of your land.
You can now make it so certain fields can only be placed inside of others. For example you may want your plot fields only placeable inside Town fields. You can now do this with the allow-only-inside field flag. (i.e. allow-only-inside: [Town Protection]). With this in place you wont have plot fields all over your server outside of towns throwing everything out of whack. Also for added protection once a plot has been placed inside a parent field, the parent field will not be able to be removed or redrawn until all the fields inside of it are removed.
Or for example you want to keep control of Jack-O-Death fields, you can make them only placeable in City Protect fields, this way you can rest assured that players are using these defensively inside their own structures and not peppering them all over the map.
Permissions per Field
You can now tie permissions to your fields. You can now give your default users permissions to use small plots, give the larger ones to your members, and allow your VIP users to create towns. Now it's super easy with the required-permission field flag (i.e. required-permission: preciousstones.plots.vip). Make up any permission you like and add it to your fields. Now only the players with that specific permission will be able to place the field. Everyone else will just place normal blocks.
Land Claiming Mode
You can prevent anyone from being able to place or destroy any blocks in your world by turning on the "prevent-place-everywhere" and "prevent-destroy-everywhere" configs in the settings. With this enabled players will only be able to place and break inside fields they own or are allowed in. Fields with the allow-place and allow-destroy flags will be the only fields players will be able to place in protected land, thus are the fields that they will use to claim land.
Vault is used for economy support
You can use the price field flag to give a field a price. When the field is placed, the amount will be taken from the player's account. When the field is removed (block is broken), the amount will be refunded.
You can now use data values in the *unbreakableBlocks* list, the *bypassBlocks* list, the *unprotectableBlocks* list, and in the *block* field flag. This means you can now define fields that operate on specific block+data combinations. For example where in the past you could use leaves to make a field by setting block to "18" on the field, now you can actually create four different fields with leaves '18:4', '18:5', '18:6', '18:7'. If you run tekkit, this means you can for example use tin blocks as a field "224:1", and use copper blocks as another "224:2", etc.
One limitation is that you cannot use the zero data ('18:0') along with the rest. Data of zero ('18:0') is treated the same as using the block number without anything (18), which is the same as saying "use all data values for this block as a field".
A file containing all the text on the plugin can be found in the plugin folder called language.yml. This file will allow you to change the entire plugin into your own language. Even if your server's language is English, this file will allow you to change any and all of the text in the plugin, will let you change the colors of all messages outputted (chat and logs), and even let you change the name of the commands to best suit your server.
This plugin, created by dandielo, shows you the areas of fields in dynmap. Just drop it in with PreciousStones and use the new field flags to select which fields you want to be visible on the map.