Main Page

From PreciousStones
Jump to: navigation, search


With this plugin you will be able to give your block types fun and wondrous new properties. From self-service protection, to griefer and chest recording, to jumping abilities. You can mix and match and create your own PreciousStones.

Source Code

PreciousStones GitHub


  1. Download the jar and place it in your server's plugin directory
  2. Start the server to generate the config file
  3. Set up permissions
  4. That's about all you need to do if you plan on using SQLite for storage
  5. If you want to store your data on a MySQL database then fill out the mysql portion of the config.yml before starting your server.

MySQL Database Setup

Fill out the mysql section of your config.yml. Change enable to true, and start your server.

  enable: true
  port: 3306
  username: ''
  password: ''

Unbreakable blocks

Any block type labeled an unbreakable block 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. To make block types unbreakable add them to the unbreakable-blocks list in the configuration.

Force-Field blocks

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 the from the cube itself outwards. So 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.

Modifying Fields

After placing one of the field blocks you can modify the field to fit your exact needs. You can change the radius of your field by painting at it and using /ps setradius and the velocity for cannon and launcher fields with /ps setvelocity'. You can only specify values smaller than the default.

Conflict and No-Conflict fields

Fields are by default conflict fields. Meaning that if you have, for instance, a city protect field in place another person would not be able to place a field that overlaps and conflicts with yours. This is in place to prevent conflicts of interests. Fields with the no-conflict flag will be able to overlap other people's fields, and cause no conflicts. They also will not shotection field nearby that overlaps it and benefits form the Air of Atlantis field already in place. From the default fields that come with pstones the Jack-o-Death, Glow of Live, Air of Atlantis, and Proximity Snitch are set as no-conflict fields.

Allowing Others

You can allow people into your fields using the allow, allowall, remove, and removeall commands. Allowall and removeall 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]    # adds player
/ps allow c:[tag]     # adds clan
/ps allow g:[group]   # adds group
/ps allow *           # adds everyone 

So for example you set up a launcher field and want to allow some people to use it I can do this:

/ps allow c:toads g:admins rabbleroost willhicks 

Field Info

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 config 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.

Field Visualization

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 or the server, it is not really there - once you move it disappears. This will help you visually see what is being protected.

Proximity Snitch

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.

Grief Revert

Grief revert fields are just what they sound like. They are personal LogBlock/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 roll grief back on command when right clicking on them or you can have them roll back in an interval. The interval can be defined by using the /ps setinterval command. You can define a list of blocks that you don't want to be revertible and will be stealable (drop when broken) with the config setting.

Cuboid Fields

Cuboid fields are the next generation of fields. You can make a field into a cuboid field by giving it the cuboid field flag. Cuboid fields behave identical to the normal fields to those who don't know how to use it. 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.

Drawing Mode

Cuboid fields can be placed in drawing mode with a Shift-Left-Click. During drawing mode you can left click on blocks around your area to tag them as protected blocks, clicking on them a second time untags them. To finish click on the field block again.

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.

Cuboid Volume

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. Alternatively you can set the custom-volume field flag to have separate radius and volume given. The player will then be able to re-design the cuboid using the available volume.

Cuboid Groups

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. 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 all of them.

Cuboid Mixing

While in drawing mode you can place down different field types down and their volume as well as 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", fields in the same groups will be able to mix with each other. You set the group the field is in with the mixing-group field flag. You will want to put fields of similar size and "cost" in the same groups. Note: Fields without a mixing group cannot be mixed Note: Only the field flags are imported, no extra volume is added to the cuboid.

Cuboid Commands

Open drawing mode Shift-Left-Click* on field block
Select blocks to add to selection Left-Click* on surrounding blocks
Expand cuboid Right-Click* in any direction
Undo last selection Shift-Right-Click* anywhere
Add more volume to open cuboid Place down more field blocks of the same type
Add on properties of another field to cuboid Place down field blocks of another type
Close cuboid Shift-Left-Click* anywhere, or Click* back on the field block
  • These require a tool item in hand (configurable in settings).

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). Also removed is Scoping (those annoying messages you got when you clicked with a tool) . In place of this I have added an organized sub-plotting system.

You can now have 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 which be followed instead of the Towns flags.

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.

Overlapping Rules

As you know, if you try to place a field that overlaps someone else's 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 else's 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 makes a field that is overlapping it or inside of it, PS will automatically allow you into his field. If his field is touching several people's fields, they will all be added seamlessly. You will see that plots will just work. More so, if your friend one day decides he doesn't like you and wants to remove you from his allowed lists he will not be able to thanks to the conflict-of-interest protections. His only recourse will be to remove the field altogether.

Keeping Order

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 throwing everything out of whack. Also for added protection once a sub-plot has been placed inside a parent field, the parent field will not be able to be removed or redrawn until all the sub-plotted fields 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

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: Make up any permission you like and add it to your permission groups.

Different pstones for different worlds

You can make completely different pstone configurations for each of your worlds by using the allowed-worlds field flag (i.e. allowed-worlds: [world, creative]).

Unprotectable Blocks

The blocks in the unprotectable block list will not be able to be protected by unbreakable blocks, any placement of unbreakable blocks next to or on top of unprotectable blocks will be rejected. Additionally if you add the prevent-unprotectable property to your fields, the blocks in the unprotectable list won't be able to be placed inside these force-fields, and force-fields won't be allowed to be placed in areas that contain any unprotectable blocks. By default chests, furnaces, and workbenches are listed as unprotectable as you can hide items inside them.

Orphaned Fields

If you remove any pstone blocks, unbreakable or field, with the WorldEdit super-pickaxe or any similar tool that bypasses the block-break event, you will leave behind orphaned fields. That is, the effects of the pstone without the actual pstone being there. You can clean these up manually by running the /ps clean command. The command is run automatically on plugin reload and server restart as well. It is best you not break pstones with these tools.


You can limit how many fields your users place. Multiple limits can be set per field in the in the config, which can then be assigned using permissions to your different player groups.

For example say you want your Default group to able to place only one Glow of Life and no Jack-o-Death fields, your Members to be able to place 10 of each, and your Veterans to be able to place up to 30 of each. You first define the counts in the limits field flag for each of your fields:

  title: "Glow of Life"
  block: 89
  radius: 5
  slow-heal: true
  no-conflict: true
  limits: [1, 10, 30]
  title: "Jack-o-Death"
  block: 91
  radius: 5
  slow-damage: true
  no-conflict: true
  limits: [0, 10, 30]

Then you give your Default group the preciousstones.limit1 permission, your Members group the preciousstones.limit2 permission, and your Veteran group the preciousstones.limit3 permission. Now the limits will be enforced, when your players try to place more than what their limit allows the block place will be denied and they will be shown a warning. Any players with the reciousstones.bypass.limits permission will be able to place any pstones without limits.

You can have up to 15 limits per field.

You as admin can use /ps counts [typeid/player] to get a list of players and their counts of a specific field or get the counts of all fields for a specific player. Your players can use /ps counts by itself to get their own counts including their limits.


With this pstone you will be able to build in one place, and translocate that build somewhere else.

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 on 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 can then pick your translocation block back up and be on your merry way.


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)


If you break a translocation block while its enabled (while the blocks it recoded are visible) it will unlink itself from the blocks and the name you gave them, meaning you will not be able to store those blocks back by right clicking on the block anymore.


You can blacklist blocks from being picked up by the translocator by using the "translocation-blacklist* flag.


You have to be pointing at the translocation field block or be inside of the field for these commands to work.

  • /ps help - Gives you this usage help screen
  • /ps translocation list - Gives you the name of all the translocations you have saved
  • /ps translocation import - Imports everything inside the field into the databsae
  • /ps translocation delete - Will delete everything you have saved on the translocation
  • /ps translocation import [id] [id] ... - Imports the blocks matching the block ids specified into the field into the translocation
  • /ps translocation remove [id] [id] ... - Removes the blocks matching the block ids specified from the translocation and places them on the world
  • /ps translocation delete [id] [id] ... - Deleted the blocks matching the block ids specified from the translocation (doesn't place them anywhere)

Common usage walkthrough

For example say you want to move your base to the edge of the map:

  1. Place translocator pstone near your base
  2. Reshape cuboid to fit around you base and close cuboid
  3. Point at the pstone
  4. /ps setname base
  5. /ps translocation import (imports everything inside the field into the databsae)
  6. /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)
  7. 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)
  8. Break the pstone and take it to the new location of your base
  9. Place translocator pstone
  10. Point at the pstone
  11. /ps setname base (It will tell you you have x amount of blocks stored)
  12. Right click on the pstone to spawn your base in front of your eyes.
  13. Break the pstone and you're done.

Economy Support

The following are supported: iConomy 4 & 5+, BOSEconomy 0.6.2, Essentials Economy 2.2.17+

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.

SimpleClans Integration

Your players can add entire clans to their fields by using the following syntax:

/ps allow c:tag


All of the configuration settings hinge on two main lists. The unbreakable-blocks and the force-field-block lists. If these lists are empty the PreciousStones plugin will do nothing. If you only want to use unbreakables, then clear out the force-field-blocks list and add the block ids you want to be unbreakable to the unbreakable-blocks list and PreciousStones will behave like OwnBlocks on steroids.

Conversly you can delete any of the default fields from force-field-blocks that you don't want to use. You can keep only the ones you like, and you can even modify them to change their name and the properties they will have. You can basically change PreciousStones to your liking, the default fields that it comes with are just there as an example, the full power of PreciousStones is its ability to create your very own fields unique to your server with just the properties you want.


When you upgrade to newer version of PS there is no need to overwrite your configuration file with the new one that comes in the zip. Every time you load PS the config file is rewritten adding in any new settings were added in that newer version.

Config Reference

bypass-blocks - a list blocks types that anyone will be able to break or place inside force fields i.e. torches, etc.
unprotectable-blocks - a list of blocks which unbreakable blocks and forcefields cant be placed next to and wont be allowed inside fields if the prevent-unprotectable flag set on the field
unbreakable-blocks - list of block types that you want to be unbreakable
hiding-mask-blocks - a whitelist of blocks that can mask a field when using the /ps hide command. the block chosen will be based on the surroundings of the field when being hidden. if no blocks from this list are around the field at the time, the fist item on the list will be chosen as the masking block. repairable-items - list of block types that will get repaired when players are in a field with the slow-repair field flag tool-items - the items a player must be holding to be able to right click on fields/unbreakables to see their

[field flags] - the field flags you want this block to have


entry - log all entries to restricted force fields
fire - log all fire attempts on a restricted force field
pvp - log all pvp attempts in restricted force fields
place - log all pstone block placements
place-area - log all force-field area attempted block placements
use - log when a player uses a prevent-use block type
destroy - log all pstone block destructions
destroy-area - log all force-field area attempted block destroys
unprotectable - log all attempted protections of unprotectable blocks
bypass-pvp - log all pvp in no-pvp force fields bypass players
bypass-delete - log all field deletions by bypass players
bypass-destroy - log all pstone destruction by bypass players
bypass-unprotectable - log all pstone destruction by bypass players
conflict-place - log all pstone placement inside anothers force-field attempts
rollback - logs all grief-revert rollbacks
rents-and-purchases - logs all rents and purchases made


place - notify the player when he places a pstone
destroy - notify the player when he destroys a pstone
bypass-pvp - notify the bypass player when he bypass-pvps
bypass-unprotectable - notify the bypass player when he protects an unprotectable block
bypass-destroy - notify the bypass player when he bypass-places a pstone
bypass-noplace - notify the bypass player when he is bypassing a noplace rule
fly-zones - notify the players when he enters and leave a no-fly zone
rollback - notify the player when one of his grief-revert blocks is rolled bak


entry - warn player when he tries to enter an entry-restricted force field
fire - warn player when he tries to start a fire on a fire-restricted force field
pvp - warn a player when he hits another that there is not pvp in the force field
place - warn player when he tries to pace a block on a place-restricted force field
use - warn when a player uses a prevent-use block type
destroy - warn a player when he tries to destroy a pstone that does not belong to him
destroy-area - warn player when he tries to destroy a block inside a force field
unprotectable - warn player when he tries to protect an unprotectable block
instant-heal - warn the player when he is instant healed
slow-heal - warn the player when he is being slowly healed
slow-damage - warn the player when he is slowly damaged
fast-damage - warn the player when he is fast damaged
give-air - warn the player when he is receiving air
launch - warn the player when he is being launched
cannon - warn the player when he is being show from a cannon
mine - warn the player when he is going to explode from a mine


forester-trees -the amount of trees that have the potential to grow. I say potential because if you place the forester in an island made of say obsidian with only 10 grass blocks in the middle, all 60 wont be able to grow there, maybe only a handful will.
interval-seconds - seconds before planting the next tree. you can put fractions of a second like .5, which would generate a forest almost instantaneously.
fertile-blocks - these block types will be turned into grass to allow the forest to be built on top of them. if you put sand and stone in here the forest will be like a wild forest taking over entire griefed


block-type - the block type the visualization will be made of
seconds - the amount of seconds the visualization will last
end-on-player-move - makes the visualization disappear once the player starts to walk. this is to make sure the player doesn't begin to use the visualization blocks to pillar.
new-dotted-style - shows the new dotted style visualization, as opposed to the old outline version
mark-block-type - the block type the mark visualization will be made of
default-density - number of sections, per axis, to split up the field into when visualizing. higher the number the more glass
ticks-between-sends - how many ticks to wait before sending out each back of blocks (20 ticks is approx 1 second)
blocks-to-sends - how many blocks to send each batch
max-fields-to-visualize-at-once - the maximum number of fields to visualize at one time


min-interval-secs - the minimum amount of seconds between reverts your players will be able to ser with /ps setinterval
black-list - these blocks will not be rolled back and will drop so they will be stealable


max-target-distance - sets an upper bound on distance to searches when aiming at far off blocks (i.e. closing cuboids from a distance by aiming at them and clicking, etc)
max-size-translocation - this is the maximum size your players will be able to translocate at any one time. this prevents enterprizing players from collecting tons of your translocation blocks and try to translocate half your world and lag your server out.
max-size-translocation-for-redstone - this is the maximum size translocation that will be able to be triggered on/off by connecting redstone/levers/buttons to your translocation pstone. this prevents lag from people setting up translocation circuits that repeatedly trigger huge translocations on/off.
prevent-place-everywhere - a list of worlds in which players will be able to place blocks outside of their own field, they will only be able to place field blocks to claim land, fields with the allow-place flag can be used to claim land.
prevent-destroy-everywhere - a list of worlds in which players will not be able to destroy anything outside of their own fields, only fields with the allow-destroy flag can be broken.
sneak-to-place-field - will make it so players will only be able to place fields while they are sneaking, if they are not sneaking they will place normal blocks. (i.e. placing a diamond block while standing up will place a normal diamond block, buut if they are sneaking it will place City Protection block)
sneak-to-place-normal-block - will make it so players will be able to place normal blocks while they are sneaking, if they are standing up they will place fields. This is the reverse of "sneak-to-place-field".
show-debug-info - shows temporary debug info, development use only
show-default-welcome-farewell-messages - shows a default welcome and farewell message (on fields with the welcome and farewell flags) even if the field has not been named.

default messages can be toggled back on manually via /ps toggle if the player so chooses)

disable-ground-info - disabled right clicking on the ground to see info
auto-download-vault - turns on the auto-downloader for vault. vault is required for economy integration.
global-field-limit - this is the max amount of fields any player can place. This works ontop of limits, the difference being that this limits the amount of fields they can place globally across field types.
no-refund-for-fields - will not refund any money back to the players when they pick up their fields
public-block-details - show the block details to anyone (when right clicking on a pstone block), not just the owner
drop-on-delete - drops the force-field block on deletion
disable-alerts-for-admins - admins will not be shown any non-bypass alerts
disable-bypass-alerts-for-admins - admins will not be shown any bypass alerts
off-by-default - pstones will be disabled on logon for all users, will need to enable with /ps on
lines-per-page - the number of lines to show on every page, applies to main menu and snitch list
blacklisted-worlds - a list of worlds blacklisted from Precious Stones, it will be as if the plugin didn't exist
log-to-hawkeye - logs to the hawkeye database rather than to minecraft logfiles (only works if you are running HawkEye)
auto-allow-clan-on-fields - adds the players clan to the fields allowed list automatically when he creates new fields
check-once-per-block-on-move' - checks protections only once per block when a player moves rather than at every increment. may increase performance.
use-blockids-in-snitches - shows block ids and data rather than the name of the block on snitch lists
fence-max-depth - how far down the fence that is generated by the fence-on-place flag will be created when there is no floor.
use-commands-to-rent - disables right clicking on signs to rent (rather it will display a message to use commands) and enables commands "/ps rent" and "/ps buy"


frequency-seconds - the number of seconds to hold the pending changes before sending them to the database, note that PS holds an in-memory representation of the database and is not dependent on the database to hold its state. The longer the time before updates the less redundant the data will be going up, but you run the risk of losing your data if your server crashes before it could update to the database.


player-inactivity-purge-days - how many days of inactivity a player has to have before all the pstones he owns become unprotected
snitch-unused-purge-days - how many days does the snitch have to sit unused/unqueried for it to be deleted (helps with abandoned snitches that keep on collecting data indefinitely


enable - set to true to enable mysql storage
username - your database's username
host - your database's host
password - your database's password
database - your database's name


defining-blocktype - the block type to use during the cuboid defining process
wand-blocktype - the block type of the wand that will be used (defaut is stick)
visualization-blocktype - the block type that will show when you visualize a cuboid field

Field Flags

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
   block: 57
   radius: 35
   custom-height: 15
   prevent-fire: true
   prevent-place: true
   prevent-destroy: true
   prevent-explosions: true
   prevent-unprotectable: true
   prevent-flow: true
   welcome-message: true
   farewell-message: true
   visualize-on-rightclick: true
   mixing-group: 1
   cuboid: true

Click below to see a detailed explanation of each flag along with a quick example of its usage:

Field Flag Reference

Field Flag Reference


[] - required
<> - optional
  • /ps on/off - Disable or re-enable the ability to place pstones.
  • /ps enable/disable - Enable/Disable individual fields. Any effect the forcefields have will be disabled while the field is disabled, though the actual stone is protected and cannot be stolen.
  • /ps allow [player/g:group/c:clan/*] - Add player or list of players to the allowed list of the field you're standing on. Allow * to allow all players. You can also specify groups or SimpleClans clan tags.
  • /ps allowall [player/g:group/c:clan/*] - Add player or list of players to all your force-fields. Allow * to allow all players. You can also specify groups or SimpleClans clan tags.
  • /ps allowed - Will tell you who is allowed inside the field you are standing on. You can also specify groups or SimpleClans clan tags.
  • /ps remove [player/g:group/c:clan/*] - Remove player or list of players from the allowed list the field you're standing on. Allow * to allow all players. You can also specify groups or SimpleClans clan tags.
  • /ps removeall [player(s)/*] - Remove player or list of players from all your force-fields. Allow * to allow all players.
  • /ps who - Will tell you who is currently inside the overlapped force-fields you are standing on.
  • /ps changeowner [name] - can change the owner of the field to someone else. This other person must then right click on the block with a tool to take ownership.
  • /ps setname [name] - Set the name of field you're aiming or standing on.
  • /ps setradius [radius] - Sets the field's radius, must be lower than the configured radius.
  • /ps setvelocity [.1-5] - Sets the velocity of launchers/cannons (0 = auto).
  • /ps setinterval [secs] - Sets the interval at which grief revert blocks will auto-revert all grief
  • /ps setowner [player] - Set the owner of the block you're pointing at.
  • /ps setlimit [time] - Set the renting limit on the field
  • /ps toggle [flag] - Disabled/enables a specific flag from a field.
  • /ps blacklistcommand [command] - Blacklists the usage of a specific command inside the field. i.e. /ps blacklistcommand who
  • /ps blacklistcommand clear - Clears the blacklist list on the field
  • /ps hide <all> - Hides field(s)
  • /ps unhide <all> - Unhides field(s)
  • /ps visualize - Shows you the perimeter of the pstone you're standing on visually (only you will see it).
  • /ps density - Change the visualization density. A value of 1 gives you only field outlines. A value of 2 divides each side by 2, 8 by 8, etc. Another thing to note is that the density value is also the size of field that will draw completely full. For example with a value of 8 will allow you to fully visualize fields up to 8x8x8, fields larger than this will start to have empty spaces. Use density of 0 to disable visualizations.
  • /ps snitch <clear> - List or clean the intruders of the Proximity Snitch you're pointing at.
  • /ps delete [player] - Delete all pstones from player
  • /ps delete [typeId] - Delete of pstones of block a type from everyone (typeid can be a block id like 57, or it can have data like 23:10)
  • /ps delete [player] [typeId] - Delete all fields of a certain block type from a player (typeid can be a block id like 57, or it can have data like 23:10)
  • /ps delete - Delete the field you're standing on.
  • /ps delete [player/typeid] - Deletes all pstones belonging to this player (use after banning) or that have the typeid.
  • /ps rent <clear/remove> - Clears renters or removes rent sign from a rentable or shareable fields.
  • /ps info - Get info for the field you're standing on.
  • /ps counts - View your own field counts
  • /ps counts [typeid/player/g:group/c:clan/*] - View field counts for a field type or for a target.
  • /ps locations - View your own field locations
  • /ps locations [player/g:group/c:clan/*] <typeid> - View field locations of a target, you can optionally specify a typeid
  • /ps list [radius-in-chunks] - Lists all precious stones blocks in area.
  • /ps setowner [player] - Set the owner of the block you're pointing at.
  • /ps insert [flag] - Insert a flag into a field
  • /ps clear[flag] - Clears a flag from the field
  • /ps reset -Resets the flags of the field you are pointing at back to defaults
  • /ps reload - Reloads the configuration file.
  • /ps fields - List the configured field types.
  • /ps clean - Clean up all orphaned fields.
  • /ps revert - Reverts all orphan fields back to the block type of the pstone
  • /ps enableall [flag] - Enables the flag on all fields
  • /ps disableall [flag] - Disables the flag on all fields
  • /ps more - Shows next page of data.
  • /ps bypass <on/off> - Toggles bypass mode, meaning it turns off bypass permissions if have them, enabling you to play the game following pstone rules
  • /ps translocation list - Lists stored translocations
  • /ps translocation import - Import all blocks in field
  • /ps translocation import [id] [id] ... - Import specific blocks, can have data values as well
  • /ps translocation delete - Delete all blocks in field, event the field's name will be deleted
  • /ps translocation delete [id] [id] ... - Delete specific blocks
  • /ps translocation remove [id] [id] ... - Remove specific blocks from the translocation and placed back on the world
  • /ps translocation unlink ... - Unlinks the blocks from the translocaiton field, allowing you to take the field and use it for something else
  • // - Super pickaxe that respects (PreciousStones, LWC, and WorldGuard regions), and is persistent across server reloads/restarts.


You will only need to add the node groups to your permissions file. The individual nodes are just here fore reference in case you want to get more detailed with your permissions setup.

(Check inside the jar in the plugin.yml for a full listing of the individual permissions)

Node Groups

preciousstones.benefit.* #can create precious stones (members)
preciousstones.whitelist.* #can add others to their blocks (members)
preciousstones.bypass.* #can bypass all protection (mods or jr.mods)
preciousstones.translocation.* #can use translocation
preciousstones.alert.* #in-game alert on notifys and warnings (mods or jr.mods)
preciousstones.admin.* #admin tools (admins)
preciousstones.override.* #these players will receive no warnings or notifications.

Converting from SQLite to MySQL

First you need to have a MySQL database created. (MySQL databases are not like SQLite databases. MySQL databases are automatically created into a file in the plugin folder. MySQL databases run off a server and have to be set up or provided to you by your host.)

A MySQL database is most easily created through a web interface called phpMyAdmin which comes with the LAMP stack in linux (LAMP = linux, apache, mysql, php) or if you're running windows you need to google and install WAMP. (WAMP = windows, apache, mysql, php)

From phpMyAdmin you need to create a database and user then associate the user with the database, then you need to add those credentials to PS's config.yml under the mysql section, start your server and verify that PS has found the database and has created the tables (should say so on the logs).

To copy over your data you will need to open up your SQLite database (\plugins\PreciousStones\PreciousStones.db) using a tool like SQLiteManager and extract the data from it into a .sql file, clean it up so it can be the same format as MySQL, and then import it into your MySQL database via phpMyAdmin.

Here's how to do that:

Changing block Ids after the fact

If you have configured your pstones a certain way and later on after people have been using them you wish to change the block id, here is the procedure you would take:

For example If I want to change a field from blockid 57 to 56

  1. Run "ps clean" from console (to make sure there are no orphaned fields laying around)
  2. Stop your server
  3. Run the following SQL: update pstone_cuboids set type_id = 56 where type_id = 57 (notice im updating the pstone_cuboids table, if your field is not a cuboid you would need to update the pstone_fields table)
  4. Start your server
  5. Run "ps revert" (This will change all orphaned fields blocks to the new type stored on the database)


Players can glitch through doors if you have **nomovedtooquickly** set to true in the config.

Developers API

It is fairly easy to hook into PreciousStones. Just add the jar into your project as an external jar and add the import net.sacredlabyrinth.Phaed.PreciousStones.PreciousStones

You can access the api statically PreciousStones.API(). Alternatively if you want access to the innter workings you can hook into all managers using PreciousStones.getInstance().

Here are the methods available through the API:

    * If the block can be placed in the location
    * @param player the player attempting the placement of the block
    * @param location the location where the block is being placed
    * @return whether it can be placed in the location or not
   boolean canPlace(Player player, Location location);
    * If the specific block can be broken
    * @param player the player attempting the destruction of the block
    * @param location the location of the block in question
    * @return whether it can be broken or not
   boolean canBreak(Player player, Location location);
    * Whether the block is a field block or an unprotectable block. these blocks are stored on the database,
    * thus cannot be removed or have their types changed without causing inconsistencies in the plugin.
    * @param location the location of the block in question
    * @return whether it is a pstone
   boolean isPStone(Location location);
    * If a field with the specified flag is currently protecting the area
    * @param flag the flag that is protecting the area (use FieldFlag.ALL to target any flag)
    * @param location the location that is being protected
    * @return whether a field with the specified flag is protecting the area
   boolean isFieldProtectingArea(FieldFlag flag, Location location);
    * Returns the fields with the specified flag that are currently protecting the area
    * @param flag the flag that is protecting the area (use FieldFlag.ALL to target any flag)
    * @param location the location that is being protected
    * @return the fields with the specified flag that are protecting the area
   List<Field> getFieldsProtectingArea(FieldFlag flag, Location location);
    * Whether the flag applies to the player on that specific location.
    * i.e.:
    * if you pass in FieldFlag.PREVENT_ENTRY, it will tell you if the flag prevents the player from entering the field
    * if you pass in FieldFlag.HEAL, it will tell you if the flag heals the player
    * if you pass in FieldFlag.PREVENT_PLACE, it will tell you if the flag prevents the player from placing
    * if you pass in FieldFlag.LAUNCHER, it will tell you if the flag will launch the player
    * This takes into account who the flag applies to by default (allowed or non-allowed players) and any modification
    * flags that are in used in the field (apply-to-reverse, apply-to-all)
    * @param player the player who will be affected by the flag
    * @param flag the flag that you want to test against
    * @param location the location you want to test against
    * @return whether th eflag applies to the player
   boolean flagAppliesToPlayer(Player player, FieldFlag flag, Location location);
    * Returns a count of fields the player has placed
    * @param player the player whose fields you want counted
    * @param flag the flag that will identify the field.  Use FieldFlag.ALL to count all of his fields
    * @return the number of fields this player has placed
   int getPlayerFieldCount(Player player, FieldFlag flag);
    * Returns all of the fields the player has placed
    * @param player the player whose fields you want
    * @param flag   the flag that will identify the field.  Use FieldFlag.ALL to count all of his fields
    * @return a list of fields the player placed, it is never null.  If the player has not placed any fields it will be empty
   List<Field> getPlayerFields(Player player, FieldFlag flag);